Cambiar la URL para acceder a mi Servlet

Tengo un servlet que es básicamente un hello world mas o menos...

La clase es:

package net.jgp.baseapp.validation.tomcat;
[...]
@WebServlet(name = "tv", description = "...", urlPatterns = {"/TomcatValidator", "/" })
    public class TomcatValidator extends HttpServlet {
    [...]
    }
}

Funciona muy bien cuando lo ejecuto a través de:

http://localhost:8081/net.jgp.baseapp.validation.tomcat/tv
http://localhost:8081/net.jgp.baseapp.validation.tomcat/qwe?test=89

etc.

Sin embargo, ¿puedo cambiar el net.jgp.baseapp.validation.tomcat a:

  1. Nada, básicamente debería funcionar como http://localhost:8081?
  2. Una URL más simple http://localhost:8081/toto?

Hasta ahora, mi web.xml está realmente vacío (el valor predeterminado de la generación de Eclipse):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>

He mirado un montón de cosas, y debo admitir que me estoy volviendo loco :)...

¡Gracias!

PD: lo sé:

@WebServlet(name = "tv", description = "...", urlPatterns = {"/TomcatValidator", "/" })

es de alguna manera igual a:

@WebServlet(name = "tv", description = "...", urlPatterns = {"/" })

preguntado el 08 de febrero de 14 a las 12:02

1 Respuestas

Dos cosas aquí.

Si desea que su servlet sirva la URL raíz, debe hacer dos cosas

1: debe configurar el contexto de su aplicación web en la raíz, así

enter image description here

2 - entonces también debe configurar su contexto de servlet para rootear

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/")
public class MyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public MyServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("OK");
        response.getWriter().flush();
    }

}

eso es porque la URL de su servicio de servlet es así

http://yourserver:port/yourapp/yourservlet

donde yourapp está definida por #1

y yourservlet está definido por #2

como este

enter image description here

Respondido 08 Feb 14, 12:02

¡Excelente! ¿Cómo obtienes la primera interfaz de usuario que subiste amablemente? Yo uso eclipse (¿también?). o podría compartir su web.xml? tx! - jgp

vaya a la pestaña "servidores", seleccione su servidor, haga doble clic y luego vaya a la pestaña "módulos". El web.xml es el predeterminado generado por eclipse, como el tuyo: Leo

¡perfecto! gracias... sin embargo, ¿dónde se guarda esta información? no lo vi en la web.xml? ¿Solo está disponible en el nivel del servidor de aplicaciones (tendría sentido)? - jgp

Sí, está en la configuración del contenedor. Leo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.