2010-05-31 34 views
6

Viniendo de otros marcos web, estoy acostumbrado a poder asignar partes de una URL a los parámetros del método. Sé que web.xml proporciona una forma de asignar una URL completa a un servlet, pero ¿hay alguna manera de obtener más funciones de esto, como asignar partes de la URL a los parámetros del método?Enrutamiento de URL en Java

Respuesta

6

El uso de Spring (MVC) es excesivo para esto. Si no necesita inyección de dependencia, estará contento con redirect filter.

1

Puede hacer tales cosas con Spring web MVC. Su API de controlador puede asignar partes de la URL a llamadas específicas en la parte de atrás.

4

En realidad, la mayoría de los marcos MVC admiten acciones RESTful (es decir, permiten mapear URLs sobre métodos de acción): Spring MVC, Stripes, Struts 2 con REST plugin.

Si no está utilizando ninguna de ellas, puede lograr esto con la reescritura de URL. El UrlRewriteFilter es bastante famoso y permite implementar tales cosas. De la documentación sobre Method Invocation:

La correlación de servlet estándar que es realiza a través de web.xml es bastante limitante. Solo .xxx o/xxxx/, sin capacidad para tienen algún tipo de coincidencia inteligente. Utilizando UrlRewriteFilter se puede establecer cualquier regla cuando coincida con para ejecutar método (s) en una clase .

invocar un servlet directamente

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

Esto invocará doGet (HttpServletRequest solicitud, HttpServletResponse respuesta) cuando se empareja la "de" en una solicitud. (Recuerde que este método tiene que ser público!)

Lo utilizan para delegar limpiamente a sus métodos

<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

He escrito una biblioteca llamada jurlmap que entre otras cosas hace lo que usted está pidiendo para.

+0

¡Es divertido de usar! Gracias por esta lib! – dajood

+0

Ah, su servidor está caído. Es mejor compartir proyectos en Github. –

+0

Lo tengo en github: https://github.com/mtomis/jurlmap, pero no estoy seguro de lo útil que todavía es. – mtomis

Cuestiones relacionadas