• Servlet概述及接口


    目录

    一、Servlet概述

    二、Servlet接口


    一、Servlet概述

    ● Servlet是运行在web服务器端的应用程序,使用Java语言编写
    ● Servlet对象主要封装了对HTTP请求的处理,它的运行需要Servlet容器(如Tomcat)的支持
    ● Servlet由Servlet容器进行管理,Servlet容器将Servlet动态加载到服务器上,与HTTP协议相关的Servlet使用HTTP请求和HTTP响应与客户端进行交互

    ● 如下图,Servlet的请求首先会被HTTP服务器(如Apache)接收,HTTP服务器只负责静态HTML界面的解析,而Servlet的请求则转交给Servlet容器,Servlet容器会根据请求路径以及Servlet之间的映射关系,调用相应的Servlet,Servlet将处理的结果返回给Servlet容器,并通过HTTP服务器将响应传输给客户端

    252e99ce750b42e6858feb957a9ba022.png

     二、Servlet接口

    Servlet就是实现了Servlet接口的类,它由Web服务器创建并调用,用于接收和响应用户的请求,
    在Servlet接口中定义了五个抽象方法

    方法声明说明
    void init(ServletConfig config)Servlet实例化后,Servlet容器调用该方法完成Servlet的初始化工作
    ServletConfig
    getServletConfig()
    获取Servlet对象的配置信息
    String getServletInfo()返回包含Servlet信息的字符串,如作者,版权等
    void service(ServletRequest
    req,ServletResponse
    resp)

    负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时就会调用此方法。容器会构造一个表示客户端请求信息的

    ServletRequest对象和一个用于响应客户端的
    ServletResponse对象作为参数传递给service()方法,在service()方法中可以通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse

    void destroy()负责释放Servlet对象占用的资源,当服务器关闭或者Servlet对象被移除时会销毁Servlet对象,此时会调用此方法

    编写的Servlet类必须实现Servlet接口或者继承Servlet接口的实现类,如GenericServlet和
    HttpServlet
    ,这两个类都是抽象类并且HttpServlet继承了GenericServlet,其中GenericServlet
    有一个抽象方法service(),而HttpServlet没有抽象方法

    总结三种方式编写Servlet类

    1、实现Servlet接口,需要重写Servlet接口里边的所有方法
    2、继承GenericServlet抽象类,必须重写service()方法,其他方法也可以重写
    3、继承HttpServlet抽象类,不需要重写service()方法,因为HttpServlet在service()方法中调
    用了另一个重载的service()方法,这个重载的方法里边会根据参数选择相应的方法,如

    doGet()方法或doPost()方法,所以我们编写时可以重写doGet()方法和doPost()方法来实现
    我们想要的功能

    4、通常情况下使用继承HttpServlet抽象类的方式编写Servlet
    5、实例:

    1. public class ServletDemo02 extends HttpServlet {
    2. @Override
    3. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    4. System.out.println("方法执行了");}
    5. @Override
    6. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    7. doGet(req,resp);
    8. }
    9. }

    Servlet线程安全问题:在实现Servlet的类中如果存在自定义的成员变量,并且在service()方法中操

    作这个变量时可能会出现线程安全问题,解决的办法是将成员变量改为定义在方法内部的局部变

    量,或者使用sychronized锁

    HttpServlet常用方法:

    方法说明
    protected void doGet(HttpServletRequest
    req,HttpServletResponse resp)
    用户处理GETl类型的
    HTTP请求
    protected void doPost(HttpServletRequest
    req,HttpServletResponse resp)
    用于处理POST类型的
    HTTP请求
    protected void doPut(HttpServletRequest
    req,HttpServletResponse resp)
    用于处理PUT类型的
    HTTP请求

     

  • 相关阅读:
    Spring BeanFactory容器简介说明
    国际阿里云、腾讯云.AWS:新加坡服务器数据中心怎么保护网络安全原创
    MySQL学习系列(10)-每天学习10个知识
    一个去掉PDF背景水印的思路
    【话题】人工智能迷惑行为大赏
    Dockerfile指令与Docker-compose容器编排-搭建docker私有仓库
    推荐系统[八]算法实践总结V1:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
    玄子Share-Git 入门手册
    10 分钟讲完 QUIC 协议。
    二、进程管理(四)经典同步互斥问题
  • 原文地址:https://blog.csdn.net/m0_61961937/article/details/126978074