• Servlet


    1.Servlet

    JavaServlet是和平台无关的服务器端组件,它运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用“请求/响应”的模式。

    Servlet可完成如下的功能:

    ——创建并返回基于客户请求的动态HTML页面

    ——创建可嵌入到现有HTML页面中的部分HTML页面(HTML片段)

    ——与其他服务器资源(如数据库或基于Java的应用程序)进行通信

     

    2.第一个servlet—HelloServlet

    1)创建一个Servlet接口的实现类

    public class HelloServlet implements Servlet

    2)在web.xml文件中配置和映射这个Servlet

      <!--配置和映射Servlet-->
    <servlet>
    <!--servlet注册的名字-->
    <servlet-name>HelloServlet</servlet-name>
    <!--servlet的全类名-->
    <servlet-class>com.demo.javaweb.HelloServlet</servlet-class>
    <!--可以指定Servlet被创建的时机-->
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <!--需要和某一个servlet节点的servlet-name子节点的文本节点一致-->
    <servlet-name>HelloServlet</servlet-name>
    <!--映射具体的访问路径:/代表当前web应用的根目录-->
    <url-pattern>/HelloServlet</url-pattern>
    </servlet-mapping>

     

    3.Servlet容器:运行Servlet、JSP、Filter等的软件环境

    1)可以用来创建Servlet,并调用Servlet的相关生命周期的方法

    2)JSP,Filter,Listener,Tag。。。

    4.Servlet生命周期的方法:以下方法是由Servlet容器负责调用

    1)构造器:第一次请求Servlet时,创建Servlet实例,调用构造器

    这说明Servlet是单实例的

    2)init方法:只被调用一次,在创建好实例后立即被调用,用于初始化当前的servlet

    3)service:被多次调用,每次请求都会调用service方法,实际用于响应请求的

    4)destroy:只被调用一次,在当前servlet所在web应用被卸载前调用,用于释放servlet占用的资源

    5.load-on-startup

    1)配置在servlet节点中

        <!--配置和映射Servlet-->
      <servlet>
          <!--servlet注册的名字-->
        <servlet-name>HelloServlet</servlet-name>
          <!--servlet的全类名-->
        <servlet-class>com.demo.javaweb.HelloServlet</servlet-class>
          <!--可以指定Servlet被创建的时机-->
          <load-on-startup>1</load-on-startup>
      </servlet>
    

    2)load-on-startup:可以指定servlet被创建的时机,若为负数,则在第一次请求时被创建。若为0或正数,则在当前web应用被servlet容器加载时创建实例,且数组越小越早被创建 

    6.Servlet容器响应客户请求的过程

    1)Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步 

    2)装载并创建该Servlet的一个实例对象:调用该Servlet的构造器

    3)调用Servlet实例对象的init()方法

    4)创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。

    5)WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法

    7.Servlet的注册与运行

    — Servlet程序必须通过Servlet容器来启动运行,并且储存目录有特殊要求,通常需要存储在<WEB应用程序目录>WEB-INFclasses目录中

    — Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问。

    — 一个<servlet>元素用于注册一个Servlet,它包含有两个主要的子元素<servlet-name>和<servlet-class>,分别用于设置servlet的注册名称和servlet的完整类名

    — 一个<servlet-mapping>元素用于映射一个已注册的servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定servlet的注册名称和servlet的对外访问路径。

     8.Servlet映射的细节

    ~同一个Servlet可以被映射到的多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。

    ~在Servlet映射到URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。

  • 相关阅读:
    还需要做恰当的解读,此时你可能需要一些书:
    创业公司的架构演进史
    任务调度平台Cuckoo-Schedule
    ORACLE中死锁
    Action的模型绑定
    三次握手、四次握手、backlog
    Django框架
    扩展BootstrapTable的treegrid功能
    Identity Service
    Linux权限
  • 原文地址:https://www.cnblogs.com/yangHS/p/10920115.html
Copyright © 2020-2023  润新知