Cambiar la URL para acceder a mi Servlet
Frecuentes
Visto 1,590 equipos
0
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:
- Nada, básicamente debería funcionar como
http://localhost:8081
? - 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 = {"/" })
1 Respuestas
1
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í
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
Respondido 08 Feb 14, 12:02
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java servlets servlet-3.0 or haz tu propia pregunta.
¡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