java - tutorial - ¿Cuál es el significado de url-pattern en web.xml y cómo configurar servlet?
spring java tutorial (2)
He configurado manualmente web.xml
para mi aplicación. Ahora, tengo problemas al ejecutar mi aplicación. Estoy intentando acceder a mi servlet
desde mi página jsp
. Pero, está arrojando un error como page not found
.
Los servlets se colocan debajo de la ubicación de la carpeta
<application folder>/WEB-INF/classes/<package>
Entonces, ¿cuáles deberían ser las entradas para servlets en url-pattern
y servlet-mapping
? Entonces, el servlet
puede ser accesible a través de la URL.
La asignación de servlets tiene dos etiquetas secundarias, url-pattern y servlet-name. url-pattern especifica el tipo de URL para las cuales se debe invocar el servlet proporcionado en servlet-name. Tenga en cuenta que el contenedor usará mayúsculas y minúsculas para las comparaciones de cadenas para la correspondencia de servlets.
La primera especificación de url-pattern
un archivo web.xml
para el contexto del servidor en el contenedor de servlets en el servidor .com coincide con el patrón en <url-pattern>/status/*</url-pattern>
siguiente manera:
http://server.com/server/status/synopsis = Matches
http://server.com/server/status/complete?date=today = Matches
http://server.com/server/status = Matches
http://server.com/server/server1/status = Does not match
Segunda especificación de url-pattern
Un contexto ubicado en la ruta / ejemplos en el Agent en example.com coincide con el patrón en <url-pattern>*.map</url-pattern>
siguiente manera:
http://server.com/server/US/Oregon/Portland.map = Matches
http://server.com/server/US/server/Seattle.map = Matches
http://server.com/server/Paris.France.map = Matches
http://server.com/server/US/Oregon/Portland.MAP = Does not match, the extension is uppercase
http://example.com/examples/interface/description/mail.mapi =Does not match, the extension is mapi rather than map`
Tercera especificación de url-mapping
, una asignación que contiene el patrón <url-pattern>/</url-pattern>
coincide con una solicitud si ningún otro patrón coincide. Esta es la asignación predeterminada. El servlet asignado a este patrón se denomina servlet predeterminado.
La asignación predeterminada a menudo se dirige a la primera página de una aplicación. La provisión explícita de una asignación predeterminada también garantiza que la aplicación maneje las solicitudes de URL mal formadas en el retorno de la aplicación en lugar de devolver un error.
El elemento de mapeo de servlet a continuación asigna la instancia del servlet del server
a la asignación predeterminada.
<servlet-mapping>
<servlet-name>server</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Para el contexto que contiene este elemento, cualquier solicitud que no sea manejada por otra asignación se reenvía al servlet del server
.
Y lo más importante, deberíamos saber acerca de la regla para el mapeo de rutas URL
- El contenedor intentará encontrar una coincidencia exacta de la ruta de la solicitud con la ruta del servlet. Una coincidencia exitosa selecciona el servlet.
- El contenedor intentará de forma recursiva hacer coincidir el prefijo de ruta más largo. Esto se hace bajando el árbol de ruta un directorio a la vez, usando el carácter ''/'' como un separador de ruta. La coincidencia más larga determina el servlet seleccionado.
- Si el último segmento en la ruta de la URL contiene una extensión (por ejemplo, .jsp), el contenedor de servlets intentará hacer coincidir un servlet que maneja las solicitudes para la extensión. Una extensión se define como la parte del último segmento después de la última ''.'' personaje.
- Si ninguna de las tres reglas anteriores da como resultado una coincidencia de servlet, el contenedor intentará mostrar el contenido apropiado para el recurso solicitado. Si se define un servlet "predeterminado" para la aplicación, se usará.
Patrón de URL de referencia
url-pattern
se usa en web.xml
para asignar su servlet
a una URL específica. Consulte el código xml a continuación, código similar que puede encontrar en su archivo de configuración web.xml
.
<servlet>
<servlet-name>AddPhotoServlet</servlet-name> //servlet name
<servlet-class>upload.AddPhotoServlet</servlet-class> //servlet class
</servlet>
<servlet-mapping>
<servlet-name>AddPhotoServlet</servlet-name> //servlet name
<url-pattern>/AddPhotoServlet</url-pattern> //how it should appear
</servlet-mapping>
Si cambia el url-pattern
de AddPhotoServlet
desde /AddPhotoServlet
a /MyUrl
. Entonces, se puede acceder al servlet AddPhotoServlet
usando /MyUrl
. Bueno por el motivo de seguridad, donde desea ocultar su URL de página real.
Java Servlet url-pattern
Especificación:
- Una cadena que comienza con un carácter ''/'' y termina con un sufijo ''/ *'' se usa para el mapeo de ruta.
- Una cadena que comienza con un ''*'' el prefijo se usa como un mapeo de extensión.
- Una cadena que contiene solo el carácter ''/'' indica el servlet "predeterminado" de la aplicación. En este caso, la ruta del servlet es el URI de solicitud menos la ruta de contexto y la información de ruta es nula.
- Todas las demás cadenas se usan solo para coincidencias exactas.
Referencia: especificación del servlet de Java
También puede leer esto Conceptos básicos de Java Servlet