概念

百度百科介绍的servlet
可以理解为一个接口我们去实现这个,通过这个接口可以让浏览器访问到java程序

快速入门

  1. 创建java web 项目
  2. 实现Servlet接口
  3. 实现接口中的方法
  4. 配置web.xml文件
  5. 执行程序

代码:

package cn.Sadhu.web.servlet;
import javax.servlet.*;
import java.io.IOException;

/**
 * 快速入门Servlet
 */
public class ServletDemo1 implements Servlet{
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("调用service");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

配置文件

<?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">

<!--    配置Servlet-->
    <servlet>
        <servlet-name>ServletDemo1</servlet-name>
        <servlet-class>cn.Sadhu.web.servlet.ServletDemo1</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>ServletDemo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>
</web-app>

目录结构
在这里插入图片描述
执行结果:
在这里插入图片描述
在这里插入图片描述

Servlet执行过程

浏览器解析路径→找到对应web.xml文件→找到其中的<url-partern>标签对应的内容→找到<servlet-class>对应的类→tomcat将这些内容加载进内存中→创建对象执行对应方法

Servlet生命周期

概括为三部分:创建→提供服务→销毁

  1. 创建:
    - init()方法创建,只执行一次,这就导致了一个问题,多个用户访问的是同一个对象,涉及到线程安全的问题,解决这个问题不要用加锁很影响效率,只要不在这里修改变量值就行。
    - 创建时间:默认第一次访问被创建。也可以在配置文件中写<load-on-startup>设置成大于等于0的数据就可以是启动的时候创建

  2. 提供服务:
    执行一次就会调用一次service方法

  3. 销毁:
    在Servlet正常关闭的时候执行,只会执行一次
    在关闭之前执行

Serverlet 3.0及以上:

支持注解配置

具体步骤(和上面类似):

  1. 创建java web项目
  2. 实现Servlet接口
  3. 复写service方法
  4. 在该上添加注解:@Serverlet(“资源路径”)

一个简单的例子

创建项目的时候可以不要web.xml
在这里插入图片描述
代码:

package cn.sadhu.web.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;


@WebServlet("/demo2")
public class ServletDemo2 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("serverlet3.0");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

运行结果:
在这里插入图片描述

在这里插入图片描述

思维导图总结:

在这里插入图片描述

说明:

个人学习笔记如果有错误地方感谢指出

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐