JavaWeb-Servlet

1.servlet的作用

servlet的作用是实现动态web,Tomcat10之后的servlet依赖包不是javax

javax.servlet,而是jakarta.servlet。如果导入javax.servlet服务器会报500 xxservlet 不存在。需要更新为以下依赖。

<dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
</dependency>

<dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
            <version>3.0.0</version>
            <scope>provided</scope>
</dependency>

httpServlet和servlet的关系如下图:

2.servlet原理及配置

 2.1原理图

2.2 配置及源码

在查看servlet源码的过程中,发现HttpServlt中请求最终都会指向错误,因此必须继承HttpServlet重写对应的请求方法。

报错代码

首先在web.xml中配置servlet的路径及映射,如下:

 

 继承了HttpServlet类的子类代码,直接使用父类的doGet

public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("test 的 servlet");
        super.doGet(req, resp);
    }

响应结果:

 

 修改web.xml中servlet类为重写了doGet方法的类

配置:

 

 代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello Servlet!</h1>");
        out.println("Method: " + request.getMethod());
        out.println("Request URI: " + request.getRequestURI());
        out.println("Protocol: " + request.getProtocol());
        out.println("PathInfo: " + request.getPathInfo());
        out.println("Remote Address: " + request.getRemoteAddr());
        out.println("</body>");
        out.println("</html>");
    }

输出:

 

posted on 2021-05-23 18:20  曾经啊  阅读(146)  评论(0编辑  收藏  举报