2020年Servlet课堂笔记

Servlet

概念:运行在服务器端的小程序

Servlet接口:定义了java类被浏览器访问到的规则

使用步骤

  1. 创建javaEE项目

  2. 定义一个类,实现Servlet接口

    • public class MyServlet implements Servlet
  3. 实现接口的抽象方法

  4. 配置Servlet,在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_3_1.xsd"
             version="3.1">
      
        <servlet>
            <!--Servlet实现类名-->
            <servlet-name>MyServlet</servlet-name>
            <!--全类名-->
            <servlet-class>ChenXing.MyServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <!--Servlet实现类名-->
            <servlet-name>MyServlet</servlet-name>
            <!--/Servlet实现类名-->
            <url-pattern>/MyServlet</url-pattern>
        </servlet-mapping>
    </web-app>
    

Servlet的生命周期

  1. 被创建:执行init()方法,只能执行一次

    • 设置Servlet被创建的时间:(在<servlet>标签下设置)
      • 第一次访问时被创建:<load-on-startup>的值为负数
      • 在服务器被启动时被创建:<load-on-startup>的值为0或正整数

    注意

    1. 一个Servlet在内存只能存在一个对象
    2. 多个用户同时访问时,可能存在线程安全问题
    3. 解决:尽量不要在Servlet中定义成员变量,即使定义了成员变量,也不要修改值
  2. 提供服务:执行Service()方法,执行多次

    • 每次访问Servlet时,Service()方法都会被调用一次
  3. 被销毁:执行destroy()方法,只执行一次

    • 当服务器正常关闭时,用于释放资源

Servlet3.0

好处:支持注解配置。不需要web.xml

使用步骤:

  1. 创建javaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
  2. 定义一个类,实现Servlet接口
  3. 实现接口中的抽象方法
  4. 在类上使用@WebServlet注解,进行配置
    • @WebServlet("资源路径"):资源路径是自定义的访问路径

实例代码

package ChenXing;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/ChenXing")
public class MyServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("开始!!!");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    //提供服务的方法
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello servlet");
    }

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

    @Override
    public void destroy() {
        System.out.println("服务器结束!");
    }
}

Servlet的体系结构

Servlet接口 —— 接口

​ | 继承

GenericServlet—— 抽象类

​ | 继承

HttpServlet—— 抽象类

  • GenericServlet抽象类:将Servlet接口中其他的方法做了默认空实现,只能将Service()方法作为抽象
  • HttpServlet抽象类:对http协议的一种封装,简化操作
    1. 定义类继承HttpServlet
    2. 复写doGet()doPost()方法

Servlet相关配置

  1. urlparttern:Servlet访问路径
    1. 一个Servlet可以定义多个访问路径:@WebServlet({"/路径1","/l路径2","/路径3"})
    2. 路径定义规则:
      1. /xxx:路径匹配
      2. "/xxx/xxx":多层路径,目录结构
      3. *.do:扩展名匹配
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值