我正在尝试通过动态 Web 项目在 Eclipse 中创建一个 servlet
//@WebServlet("/hello_world")
public class FirstServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter pw=response.getWriter();
pw.println("<html>");
pw.println("<h1> Hello World </h1>");
pw.println("</html>");
}
}
在 WEB-INF 文件夹中创建了以下 web.xlm 文件:
<?xml version="1.0" ecoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/hello_world</url-pattern>
</servlet-mapping>
</web-app>
Tomcat 连接到 8081 端口。我正在尝试对 URL http://localhost:8081/hello_world进行 servlet 调用,但事实证明需要通过项目名称调用它,而 web.xml 确实如此根本不工作。请告诉我有什么问题。
问题原因:
这是默认行为,服务器使用与构建战争昵称同名的上下文路径启动。
Tomcat 设置:
有几个选项可以覆盖默认上下文路径,具体取决于您在 Tomcat 中部署战争昵称的方式:
$CATALINA_HOME/conf/server.xml
覆盖路径<Context path="" docBase="MyApp"></Context>
:;$CATALINA_HOME/conf/Catalina/localhost/<context>.xml
具有以下内容:(<Context docBase="../deploy/MyApp.war"/>
您的应用程序的路径)。$CATALINA_HOME/conf/Catalina/localhost/ROOT.xml
包含以下内容的文件:(<Context docBase="../deploy/MyApp.war"/>
应用程序的路径)。有关更多详细信息,请参见此处和此处。
在 Eclip 中设置:
如果框架内需要一个狭隘的设置
Eclipse IDE
,那么您可以这样做:F3
如果您Tomcat
在窗口中选择了它,请单击Servers
);Path
。