2010-08-05 28 views
5

(debe ser un uno fácil)
cómo redirigir url a JSP en web.xml

Cómo puedo redirigir todas las URL del yada patrón * .js en un mi JSP específica.
será este Además de mi trabajo web.xml:

<servlet-mapping> 
     <servlet-name>MySpecific.jsp</servlet-name> 
     <url-pattern>yada*.js</url-pattern> 
</servlet-mapping> 

o tal vez debo utilizar javax.servlet.Filter para ese propósito?

Respuesta

11

Soltaría esos archivos en una carpeta llamada /yada y luego usaría url-pattern de /yada/*.

Si no quiere hacer eso, entonces la determinación manual en un filtro es de hecho el único recurso.


actualización: según su actualización, en realidad tienen una segunda cuestión que no estaba directamente obvio a partir de su pregunta inicial: "¿Cómo declarar un archivo JSP como un servlet" . La respuesta es: use <jsp-file> en lugar de <servlet-class>.

<servlet> 
    <servlet-name>foo.jsp</servlet-name> 
    <jsp-file>/foo.jsp</jsp-file> 
</servlet> 
<servlet-mapping> 
    <servlet-name>foo.jsp</servlet-name> 
    <url-pattern>/foo/*</url-pattern> 
</servlet-mapping> 

Sin embargo, como se indica en los comentarios, esta no es la mejor práctica. Esto huele a código Java sin formato en un archivo JSP que debe avoid en toda su extensión.

+0

, pero ¿puede el atributo servlet-name dirigir a un archivo jsp y no a un servlet? – Spiderman

+0

Oh, pensé que ya tienes un '' para eso. No, no puedes hacer eso solo. Use '' en lugar de '' en '' y funcionará. Sin embargo, no es la manera recomendada. JSP es la herramienta incorrecta para esto. El código de Java sin procesar en JSP se debe [evitar] (http://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files) en toda su extensión. – BalusC

+0

No sabemos si está usando el código en bruto de java (creo que no) – helios

1

Dependiendo del servidor, las cosas que puede poner en url-pattern son muy limitadas.

Dos son válidos:

  • un camino absoluto (sin comodines)
  • * .ext

Así que especificación no es coincidente. Yo usaría un filtro de hecho.

PD: no se olvide de especificar <% de la página sourceEncoding = ... contentType = ...%> en la generación de JSP :). Y content-type debería incluir charset = xxxxx

+0

bien, pero ¿cómo puedo reenviar a JSP desde un filtro. Tengo que llamar a 'chain.doFilter()' después del comando de reenvío o antes. y tengo que llamarlo si se encontró el pattarn o solo si el patrón no se encontró – Spiderman

+0

Continúo este hilo en http://stackoverflow.com/questions/3415240/forward-request-from-a-filter ya que actualmente no se puede escribir más que un comentario en este hilo y el problema no se ha resuelto aún – Spiderman

Cuestiones relacionadas