Servlet第二篇【Servlet】

Servlet介绍

Servlet

什么是Servlet?
答:Servlet是运行在服务器上的java程序

案例1:(自定义Servlet实现Servlet接口)

  1. maven添加所需依赖
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
  1. 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">

    <display-name>Welcome to Tomcat</display-name>
    <description>
        Welcome to Tomcat
    </description>

    <servlet>
        <servlet-name>myServlet</servlet-name>
        <servlet-class>MyServlet</servlet-class>
        <!--Tomcat一启动就会加载这个Servlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>myServlet</servlet-name>
        <url-pattern>/myServlet</url-pattern>
    </servlet-mapping>

</web-app>
  1. 创建MySerlvet类
public class MySerlvet implements Servlet{
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init");
    }

    public ServletConfig getServletConfig() {
        return null;
    }

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        servletResponse.getWriter().write("Hello World!");
        System.out.println("service");
    }

    public String getServletInfo() {
        return null;
    }

    public void destroy() {
        System.out.println("destroy");
    }
}
  1. 配置Tomcat

配置Tomcat

需要配置artifacts

什么是artifacts?
答:artifacts是一种用于装载项目资产以便于测试,部署,或者分布式软件的解决方案。例如集中编译class,存档java应用包,web程序作为目录结构,或者web程序存档等。

配置artifacts

  1. 测试

http://localhost:8080/MyServlet_war_exploded/myServlet

测试结果

案例2:(自定义Servlet继承HttpServlet类,更方便)

public void MyServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("Hello World!");
    }
}

生命周期

Servlet生命周期可分为5个步骤
加载和实例化Servlet:当第一次访问这个Servlet的时候,Tomcat会负责创建这个Servlet的实例
初始化:当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象
处理服务:当浏览器访问Servlet的时候,Servlet 会调用service()方法处理请求
销毁:当Tomcat关闭时或者检测到Servlet要从Tomcat删除的时候会自动调用destroy()方法,让该实例释放掉所占的资源。一个Servlet如果长时间不被使用的话,也会被Tomcat自动销毁
卸载:当Servlet调用完destroy()方法后,等待垃圾回收机制回收。如果有需要再次使用这个Servlet,会重新调用init()方法进行初始化操作。
简单总结:init()只有第一次访问Servlet的时候才会被调用。只要访问Servlet,service()就会被调用。 destroy()只有在Tomcat关闭的时候才会被调用。

Web容器处理Servlet请求

Web容器处理Servlet请求

HTTP请求方式

HTTP请求方式

HTTP状态码

HTTP状态码

过滤器

不要使用<url-pattern>/</url-pattern>

监听器

监听器

posted @ 2020-04-02 14:52  幻竹  阅读(160)  评论(0编辑  收藏  举报