我现在尝试了几个小时,但没有任何反应 在这里需要帮助!
我正在尝试在http://localhost:8080/hello-world
上运行javaEE Web应用程序
当我转到http://localhost:8080时,我看到服务器正在运行。但是找不到/ hello-world HTTP Status 404 - Not Found
。
项目结构:
Web.xml :
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>MainServlet</servlet-name>
<servlet-class>controller.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
MainServlet :
package controller;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns="/hello-world")
public class MainServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("TESTTESTTEST");
request.getRequestDispatcher("/test.jsp").forward(request, response);
}
}
我在这里做错了什么?为什么在控制台中看不到日志消息:TESTTESTTEST
,为什么不返回/test.jsp
?
请帮帮我。
-编辑
服务器配置:
答案 0 :(得分:1)
在web.xml
中,您已配置MainServlet
来匹配模式/
。
也许您应该使用/*
网址格式:
<servlet-mapping>
<servlet-name>MainServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
有关进一步的阅读,请参见以下问题:Difference between / and /* in servlet mapping url pattern
还请注意,如果已将应用程序部署到任意应用程序名称,则不会通过http://localhost:8080/
访问应用程序:如果上下文路径为/myWebApp
,则必须调用{{1} }或http://localhost:8080/myWebApp/
。
对于Apache Tomcat,如果要通过http://localhost:8080/myWebApp/hello-world
或ROOT
访问它,则可以命名上下文路径http://localhost:8080/
。
编辑:
似乎两个映射规范都冲突。从web.xml中删除Serlvet定义:
http://localhost:8080/hello-world
在git仓库中,您指定了<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
,在@WebServlet(urlPatterns="/servlet")
中,您将pom.xml
命名为“ 1”,这会产生上下文路径“ / 1”。
现在调用artifacId
转到http://localhost:8080/1/
。
调用index.jsp
已通过您的方法转发到http://localhost:8080/1/servlet
,但由于test.jsp不存在,将导致错误404。