Loading

Servlet基础

1 什么是Servlet

1. Servlet是JavaEE规范(接口)之一。
2. Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。
3. Servlet是运行在服务器上的Java小程序。它可以接受客户端发来的请求,并响应数据给客户端。

2 创建Servlet

2.1 通过实现Servlet接口创建Servlet

  • 步骤

    1. 编写一个类去实现Servlet接口。
    2. 实现service方法,处理请求,响应数据。
    3. 在web.xml中或者配置servlet程序的访问地址(或者使用注解@WebServlet)
    
  • 编码

    @WebServlet("/test1")
    public class MyServlet_01 implements Servlet {
    
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
            System.out.println("进入init方法!");
        }
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("进入Service方法!");
        }
    
        private void doPOST() {
            System.out.println("进入doPOST方法!");
        }
    
        private void doGET() {
            System.out.println("进入doGET方法!");
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
            System.out.println("销毁该Servlet!");
        }
    }
    
  • 路由配置

    注意: 注解配置是对XML配置的简化,两者实现一种即可
    

    XML中配置:

    <servlet>
      <!--Servlet程序的别名-->
      <servlet-name>MyServlet_01</servlet-name>
      <!--Servlet程序的全类名-->
      <servlet-class>com.dong.MyServlet_01</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>MyServlet_01</servlet-name>
      <!--url访问路劲-->
      <url-pattern>/test1</url-pattern>
    </servlet-mapping>
    

    注解中配置:

    @WebServlet("/test1")
    

2.2 通过继承HttpServlet类创建Servlet

  • 环境准备

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>
    
  • 步骤

    1. 编写一个类去继承HttpServlet类
    2. 根据业务需要重写doGET和doPOST方法
    3. 在web.xml中配置servlet程序的访问地址
    
  • 编码

    @WebServlet("/test2")
    public class MyServlet_02 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("进入doGet方法!");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("进入doPOST方法!");
        }
    }
    
  • 路由配置

    XML中配置:

    <servlet>
      <!--Servlet程序的别名-->
      <servlet-name>MyServlet_02</servlet-name>
      <!--Servlet程序的全类名-->
      <servlet-class>com.dong.MyServlet_02</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>MyServlet_02</servlet-name>
      <!--url访问路劲-->
      <url-pattern>/test2</url-pattern>
    </servlet-mapping>
    

    注解配置:

    @WebServlet("/test2")
    

3. Servlet类的继承层次

image

  • 继承层次解释

    1. GenericServlet:
    
       GenericServlet实现了Servlet接口中除了service方法外的其他四个方法,这几个方法我们就可以不用去重写了
    
    2. HttpServlet:
    
       HttpServlet实现了Service方法,通过service方法将处理不同的HTTP请求方法,并交由相应的处理方法去处理,如doGET、doPOST等
    
    3. 自定义Servlet:
    
       我们只需要去重写这些处理方法,完成对应的业务就行
    
  • GP分发处理

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet!");
        //将ServletRequest转换为HttpServletRequest
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        //获取请求方法
        String method = request.getMethod();
        if ("GET".equals(method)){
            doGET();
        }else if("POST".equals(method)){
            doPOST();
        }
    }
    

3 Servlet的生命周期

1. 执行Servlet构造器方法

2. 执行innit初始化方法

   1、2两步是在第一次访问的时候,创建Servlet程序时会调用

3. 执行service方法

   第3步每次访问时都会调用,处理请求和响应

4. 执行destroy销毁方法

   在web工程停止的时候调用
posted @ 2022-06-28 21:28  苏无及  阅读(35)  评论(0编辑  收藏  举报