IntelliJ IDEA开发Servlet项目 显示404“未找到”问题的解决

您所在的位置:网站首页 javaweb项目servlet运行不了 IntelliJ IDEA开发Servlet项目 显示404“未找到”问题的解决

IntelliJ IDEA开发Servlet项目 显示404“未找到”问题的解决

2024-02-02 23:03| 来源: 网络整理| 查看: 265

软件版本 IntelliJ IDEA 2019.1.3 (Ultimate Edition)

在我的另一篇博客中新建完成一个JavaWeb项目后,在src文件夹中新建Servlet 我的项目名是testServlet,Tomcat端口是8080 在这里插入图片描述 Servlet接口需要实现的各个方法的简单解释:

import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; import java.io.IOException; @WebServlet(name = "Servlet") public class Servlet implements javax.servlet.Servlet { /** * 执行时机:是Servlet的实例对象被销毁时调用 * 做一些收尾或清理的工作 */ public void destroy() { } /** * 获得ServletConfig的配置对象 */ public ServletConfig getServletConfig() { return null; } /** * 获得当前的Servlet的一些属性 */ public String getServletInfo() { return null; } /** * 执行时机:当Servlet示例被创建的时候被调用,做初始化工作 * ServletConfig:Servlet的配置对象,初始化的时候可以进行配置 */ public void init(ServletConfig config) throws ServletException { } /** * 执行时机:当一个请求来请求当前的Servlet的时候被调用 * 处理当前的Servlet的业务逻辑并把响应返回给浏览器 */ public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { } }

web/WEB-INF/web.xml的标签中添加以下内容作为映射:

helloServlet Servlet helloServlet /hello

在这里插入图片描述 实现方法后运行项目,弹出的浏览器的窗口的路径是http://localhost:端口/项目名_war_exploded/,显示的是index.jsp中的内容,此时如果直接将/项目名_war_exploded/改为/hello(web.xml中设置的具体映射路径)的话会显示404

这一问题的解决

原因: 在配置tomcat的时候Server中Open browser选项勾选之后写入的地址会自动更新到Deployment中的Application content的地址,导致访问的根路径发生变化 解决: 打开idea中的Tomcat服务器配置界面修改下面地方的两个地址,改为/项目名 在这里插入图片描述 在这里插入图片描述 改为 在这里插入图片描述 在这里插入图片描述 重启Tomcat服务器后,打开的浏览器窗口的地址默认为http://localhost:8080/testServlet/ 在这里插入图片描述 在地址后面添加Servlet的具体映射路径,会创建Servlet服务器在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 附 Servlet的生命周期:

/** * Servlet生命周期 * Servlet对象实例并不是由我们手动的创建,而是web容器给我们创建 * void init(ServletConfig config):默认情况当Servlet被第一次访问的时候init会被调用 * (说明Servlet的实例默认情况下是第一次被访问的时候创建的,这个是可以改的), * 第二次往后都不会再被调用。Servlet的实例是单例的 * void service(ServletRequest request, ServletResponse response):每次请求来的时候都会被调用 * void destroy():当Servlet实例销毁时被调用(服务器停了或者项目从服务器中被删掉了等) * */


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3