Servlet 入门

目录

一、Servlet 介绍

二、Servlet 入门

1、创建JavaEE Web项目

2、定义类,实现 Servlet 接口

3、实现接口中的抽象方法

4、配置 Servlet

三、Servlet 分析

1、原理分析

2、Servlet 中的生命周期

四、注解配置(不用web.xml配置)

五、Servlet 体系结构

1、GenericServlet 类

2、HttpServlet 类


一、Servlet 介绍

Servlet(server applet)是运行在服务器端的小程序,其实就是一个接口,定义了 Java 类被浏览器访问到(Tomcat 识别)的规则,我们可以自己定义一个类,来实现 Servlet 接口,复写方法

二、Servlet 入门

1、创建JavaEE Web项目

具体参见上一篇博客

2、定义类,实现 Servlet 接口

public class myServlet implements Servle{}

3、实现接口中的抽象方法

public class myServlet implements Servlet {
    /**
     * 初始化方法
     * 在Servlet被创建是执行,只会执行一次
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("初始化");
    }

    /**
     * 获取ServletConfig配置对象
     * @return
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * 提供服务的方法
     * 每次Servlet被访问的时候执行,可执行多次
     * @return
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet!");
    }

    /**
     * 获取Servlet信息,如作者、版本等
     * @return
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    /**
     * 销毁方法
     * 在服务器正常关闭的时候执行,执行一次
     */
    @Override
    public void destroy() {
        System.out.println("销毁");
    }
}

4、配置 Servlet

在 web.xml 文件里面进行配置,在根标签里面加入如下配置

<!--配置Servlet -->
<servlet>
    <servlet-name>oneStar</servlet-name>
    <servlet-class>web.servlet.myServlet</servlet-class>
</servlet>

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

三、Servlet 分析

1、原理分析

  1. 当服务器接收到客户端浏览器的请求后,会解析请求的URL路径,获取访问的 Servlet 的资源路径
  2. 查找 web.xml 文件,看是否有对应的<url-pattern>标签体内容
  3. 如果有,则再找到对应的<url-pattern>全类名
  4. Tomcat 将字节码文件加载进内存,并创建其对象
  5. 调用其方法

2、Servlet 中的生命周期

  • 被创建:执行 init 方法,只执行一次
    • 默认情况下,第一次被访问时,Servlet 被创建
    • 可以配置执行 Servlet 的创建时机,可在<servlet>标签中配置
      1. 配置第一次被访问时创建:<load-on-startup>标签配置为负数(默认为-1)
      2. 配置服务器启动时被创建:<load-on-startup>标签配置0或正数
    • init 方法只执行一次,说明一个 Servlet 在内存中只存在一个对象,Servlet 是单例的
      • 多个用户同时访问时,可能存在线程安全问题,所以尽量不要在Servlet中定义成员变量,即使定义了也不要对值进行修改
  • 提供服务:执行 server 方法,可以执行多次
    • 每次访问 Servlet 时,Servlet 方法都会被调用一次
  • 被销毁:执行 destory 方法,只执行一次
    • Servlet 销毁时执行,只有服务器正常关闭时,才会执行 destory 方法

四、注解配置(不用web.xml配置)

在 Servlet3.0 以上的版本中,支持使用注解配置,可以不需要 web.xml 文件,在类上使用 @webServlet 注解进行配置,其实质就是配置WebServlet.class 文件里面的 urlPatterns 参数,urlPatterns 是一个 String 类型的数组,使用该数组来配置访问路径,该配置有多种方法:

  • 一个 Servlet 可以定义一个访问路径:@WebServlet("/oneStar")
  • 一个 Servlet 可以定义一个数组(多个)访问路径:@WebServlet({"/oneStar","/twoStar","/threeStar"})
  • 支持多层路径:@WebServlet("/user/oneStar")
  • 使用通配(任何目录):@WebServlet("/*")
  • 使用通配(带后缀):@WebServlet("*.do")
@WebServlet("/oneStar")
//@WebServlet({"/oneStar","/twoStar","/threeStar"})
//@WebServlet("/user/oneStar")
//@WebServlet("/*")
//@WebServlet("*.do")
public class Main implements Servlet {}

这样就可以启动项目了

五、Servlet 体系结构

Servlet 是一个接口,定义了 Java 类被浏览器访问到的很多方法,我们可以直接去实现这些方法,但一般不这样做,而是使用 Servlet 接口的抽象子类 GenericServlet 类或者 GenericServlet 的抽象子类 HttpServlet 类,实现 service() 方法。

1、GenericServlet 类

将 Servlet 接口中其他的方法做了默认空实现,只将 service() 方法作为抽象,因此可以直接继承 GenericServlet,实现 service() 方法即可,而在实际开发当中,往往会在 service() 方法中判断请求的方式,判断是 get 方法还是 post 方法,是一个比较繁琐的过程,因此可以使用 HttpServlet 类来简化了这一过程。

2、HttpServlet 类

HttpServlet 类是对 HTTP 协议的封装,简化了操作

  • 定义类继承 HttpServlet
  • 重写 doGet 或 doPost 方法
@WebServlet("/oneStar")
public class Main extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Do Get!");
    }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ONESTAR博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值