2011-11-24 11 views
8

jest to możliwe do mapowania adresów URL do serwletów (może coś konkretnego z Tomcat), tak, że dwa następujące adresy URL (z {id} 's zmienne oznaczają pozyskać z kodem)Servlet mapowań ze zmiennych (Tomcat 7.0)

/users/{id}/a 

/users/{id}/b 

mapować do dwóch różnych serwletów, czy też będę musiał zaimplementować własny filtr dla serwletu mapowanego na /users/*?

Aby być bardziej przejrzystym, każdy adres URL z wzorcem /users/*/a powinien zostać odwzorowany na ten sam serwlet. To samo dotyczy /users/*/b.

+0

Chcesz zmapować dwa różne identyfikatory do dwóch różnych serwletów ...? –

+0

Aby być bardziej przejrzystym, każdy URL ze wzorcem/users/*/a powinien być odwzorowany na ten sam serwlet. To samo dotyczy/users/*/b. – irwinb

+0

A co z '/ user/*'? –

Odpowiedz

5

mógł odwzorować go na /users/* i wydobywania informacji z HttpServletRequest#getPathInfo():

@WebServlet("https://stackoverflow.com/users/*") 
public class UsersController extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     String[] pathInfo = request.getPathInfo().split("/"); 
     String id = pathInfo[1]; // {id} 
     String command = pathInfo[2]; // a or b 
     // ... 
    } 

} 

(oczywiste walidacja od rozmiaru tablicy pominięto)

0

Nie sądzę, że to możliwe. Albo użyć UrlRewriteFilter lub niektóre ramy jak wiosna-MVC, że jest zdolny do mapowania bardziej skomplikowane adresy URL

5

Wygląda na to, że może być dobrym kandydatem na JAX-RS. Nie jestem pewien, jaka logika biznesowa aktualnie wykonuje serwlety, ale ta opcja rozwiązuje problem z mapowaniem serwletu i może być odpowiednia.