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

软件版本 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的标签中添加以下内容作为映射:

<servlet>
   <!--设置servlet名字-->
   <servlet-name>helloServlet</servlet-name>
   <!--具体的servlet类-->
   <servlet-class>Servlet</servlet-class>
</servlet>
<servlet-mapping>
   <!--指定要映射的servlet的名字-->
   <servlet-name>helloServlet</servlet-name>
   <!--servlet的具体映射路径-->
   <url-pattern>/hello</url-pattern>
</servlet-mapping>

在这里插入图片描述
实现方法后运行项目,弹出的浏览器的窗口的路径是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实例销毁时被调用(服务器停了或者项目从服务器中被删掉了等)
 *
 */
posted on 2019-11-26 20:01  爱你的铁锤妹妹  阅读(1621)  评论(0编辑  收藏  举报