¿Cuál es el significado de url-pattern en web.xml y cómo configurar servlet?

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

 /WEB-INF/classes/ 

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.

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 .

  AddPhotoServlet //servlet name upload.AddPhotoServlet //servlet class   AddPhotoServlet //servlet name /AddPhotoServlet //how it should appear  

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:

  1. Una cadena que comienza con un carácter ‘/’ y termina con un sufijo ‘/ *’ se usa para el mapeo de ruta.
  2. Una cadena que comienza con un ‘*’ el prefijo se usa como un mapeo de extensión.
  3. 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.
  4. 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

La asignación de servlets tiene dos tags 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 /status/* 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 *.map 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 / 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.

  server /  

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

  1. El contenedor intentará encontrar una coincidencia exacta de la ruta de la solicitud con la ruta del servlet. Una coincidencia exitosa selecciona el servlet.
  2. 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.
  3. 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.
  4. 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