• Servlet总结


    一、概念:

    Servlet就是运行在服务器端的java小程序,就是一个特殊的java类,用来相应客户端的请求。它必须继承HttpServlet类,客户端请求基本分为两种,通过实现doGet()和doPost()方法来完成相应。

    二、Servlet API:

    1、init:进行初始化;init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。

    2、Service:处理客户端的请求。service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

    每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

    3、Destroy:destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

    三、实现类:

    1、GenericServlet:servlet的实现类,重写了接口里的方法;

    2、HttpServlet:是sevlet的实现类,同时也是GerenricServlet的子类。作为子类的httpservlet直接对servlce的doGet()和doPost()的方法进行重写就行;

    3、servletConfig:代表当前Servlet在web.xml中的配置信息;

    a) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字

    b) String getInitParameter(String name) -- 获取当前Servlet指定名称的初始化参数的值

    c) Enumeration getInitParameterNames()  -- 获取当前Servlet所有初始化参数的名字组成的枚举

    d) ServletContext getServletContext()  -- 获取代表当前web应用的ServletContext对象

    4、servletContext:WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

    servletContext的作用:获取全局的初始化参数,实现资源的共享,获取web资源;

    如何获取servletContext?this.getServletConfig.getContext();this.getContext();

    5、ServletContextListener接口:监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。

    当Servlet 容器启动或终止Web 应用时,会触发ServletContextEvent 事件,该事件由ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent 事件的两个方法(contextInitialized,contextDestroyed)。

    四、配置文件:

    <servlet>

    <servlet-name>DicDataIniter</servlet-name>

    <servlet-class>com.init.DicDataIniter</servlet-class>

    <load-on-startup>2</load-on-startup>

    </servlet>

    <servlet>

    <servlet-name>DicDataIniter</servlet-name>

    <url-partten>/*</servlet-class>

    </servlet>

    五、执行顺序:

    启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml;

    1、加载产生Servlet上下文实例,ServletContext;

    这个web项目的所有部分都将共享这个上下文。 容器将<context-param>转换为键值对,并交给servletContext。

          

    <context-param> 

              <param-name>paramName</param-name> 

              <param-value>paramValue</param-value> 

    </context-param>

    2、依次加载Servlet的事件监听器,ServletContextListener并依次调用public void contextInitialized(ServletContextEvent sce)方法。加载和调用多个Listener的顺序由在web.xml中配置的依次顺序决定的。

    3、依次加载Servlet的过滤器,Filter并依次调用public void init(FilterConfig filterConfig) throws ServletException;方法加载和调用多个filter的顺序由在web.xml中配置的依次顺序决定的。

    4、依次加载Servlet,如果在web.xml中的servlet配置了<load-on-startup>1</load-on-startup>则会调用Servlet类中的方法public void init() 方法;

    Load-on-startup元素在web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在,那么容器会在该servlet被调用的时候,加载这个servlet。如果值是正整数或零,容器在配置的时候就加载并初始化这个servlet,容器必须保证值小的先被加载。如果值相等,容器可以自动选择先加载谁。

  • 相关阅读:
    【Linux开发】Linux下jpeglib库的安装详解
    【Linux开发】Linux下jpeglib库的安装详解
    【Linux开发】jpeglib使用指南
    【Linux开发】jpeglib使用指南
    【Linux开发】为qt-embedded添加jpeg库的交叉编译方法for arm
    【Linux开发】为qt-embedded添加jpeg库的交叉编译方法for arm
    Windows 7 64bit上安装Oracle Database 12c [INS-30131] 错误的解决方法
    Log4j 日志记录
    如何根据Ip获取地址信息--Java----待整理完善!!!
    Struts如何获取客户端ip地址
  • 原文地址:https://www.cnblogs.com/laoxia/p/9185014.html
Copyright © 2020-2023  润新知