2010-05-31 14 views
6

Pochodzę z innych frameworków internetowych, jestem przyzwyczajony do mapowania części adresu URL na parametry metody. Wiem, że web.xml udostępnia sposób mapowania całego adresu URL do serwletu, ale czy istnieje sposób na uzyskanie większej liczby funkcji, takich jak odwzorowanie fragmentów adresu URL na parametry metody?Routing URL w Javie

Odpowiedz

6

Używanie Spring (MVC) to przesada. Jeśli nie potrzebujesz zastrzyku zależności, będziesz zadowolony z redirect filter.

1

Możesz robić takie rzeczy z Spring web MVC. Ich interfejs API kontrolera może odwzorowywać części adresu URL na konkretne połączenia z zaplecza.

4

W rzeczywistości większość frameworków MVC obsługuje działania RESTful (tj. Pozwala na mapowanie adresów URL metod działania): Spring MVC, Stripes, Struts 2 z REST plugin.

Jeśli nie korzystasz z żadnego z nich, możesz to osiągnąć dzięki przepisywaniu adresów URL. UrlRewriteFilter jest dość sławny i pozwala na implementację takich rzeczy. Z dokumentacji o Method Invocation:

standard mapowania aplet, który jest odbywa się poprzez web.xml jest raczej ograniczenie. Tylko .xxx lub/xxxx/, nie ma żadnych uprawnień do mają jakiekolwiek inteligentne dopasowanie. Przy użyciu dowolnej reguły, gdy pasuje UrlRewriteFilter, można ustawić metodę (klasy) na klasie .

Wywołanie serwlet bezpośrednio

<rule> 
<from>^/products/purchase$</from> 
<run class="com.blah.web.MyServlet" method="doGet" /> 
</rule> 

Ten który wykonuje doGet (HttpServletRequest prośba HttpServletResponse reakcji), gdy "od" odpowiada na żądanie. (Pamiętaj, metoda ta musi być publicznej!)

Użyj go, aby przekazać czysto do metod

<rule> 
    <from>^/pref-editor/addresses$</from> 
    <run class="com.blah.web.PrefsServlet" method="runAddresses" /> 
</rule> 
<rule> 
    <from>^/pref-editor/phone-nums$</from> 
    <run class="com.blah.web.PrefsServlet" method="runPhoneNums" /> 
</rule> 
2

Pisałem biblioteka nazywa jurlmap która między innymi ma co prosicie dla.

+0

Jest fajny w użyciu! Dzięki za tę lib! – dajood

+0

Ach, twój serwer nie działa. Lepiej jest dzielić się projektami na Github. –

+0

Mam go na github: https://github.com/mtomis/jurlmap, ale nie jestem pewien, jak przydatne nadal jest. – mtomis