• web三大组件


    1、Servlet
    Servlet是用来处理客户端请求的动态资源,也就是当我们在浏览器中键入一个地址回车跳转后,请求就会被发送到对应的Servlet上进行处理。
    Servlet的任务有:

    1. 接收请求数据:我们都知道客户端请求会被封装成HttpServletRequest对象,里面包含了请求头、参数等各种信息。
    2. 处理请求:通常我们会在service、doPost或者doGet方法进行接收参数,并且调用业务层(service)的方法来处理请求。
    3. 完成响应:处理完请求后,我们一般会转发(forward)或者重定向(redirect)到某个页面,转发是HttpServletRequest中的方法,重定向是HttpServletResponse中的方法,两者是有很大区别的。

    Servlet的创建:Servlet可以在第一次接收请求时被创建,也可以在在服务器启动时就被创建,这需要在web.xml的< servlet>中添加一条配置信息 < load-on-startup>5< /load-on-startup>,当值为0或者大于0时,表示容器在应用启动时就加载这个servlet,当是一个负数时或者没有指定时,则指示容器在该servlet被请求时才加载。

    2、Filter
          filter与servlet在很多的方面极其相似,但是也有不同,例如filter和servlet一样都又三个生命周期方法,同时他们在web.xml中的配置文件也是差不多的、 但是servlet主要负责处理请求,而filter主要负责拦截请求,和放行。
    filter四种拦截方式

    • REQUEST:直接访问目标资源时执行过滤器。包括:在地址栏中直接访问、表单提交、超链接、重定向,只要在地址栏中可以看到目标资源的路径,就是REQUEST;
    • FORWARD:转发访问执行过滤器。包括RequestDispatcher#forward()方法、< jsp:forward>标签都是转发访问;
    • INCLUDE:包含访问执行过滤器。包括RequestDispatcher#include()方法、< jsp:include>标签都是包含访问;
    • ERROR:当目标资源在web.xml中配置为< error-page>中时,并且真的出现了异常,转发到目标资源时,会执行过滤器。

    url-mapping的写法
    匹配规则有三种:

    • 精确匹配 —— 如/foo.htm,只会匹配foo.htm这个URL
    • 路径匹配 —— 如/foo/*,会匹配以foo为前缀的URL
    • 后缀匹配 —— 如*.htm,会匹配所有以.htm为后缀的URL
    • < url-pattern>的其他写法,如/foo/ ,/.htm ,/foo 都是不对的。

    执行filter的顺序
    如果有多个过滤器都匹配该请求,顺序决定于web.xml filter-mapping的顺序,在前面的先执行,后面的后执行

    3、Listener

     ServletContext(监听Application)

         生命周期监听:ServletContextListener,它有两个方法,一个在出生时调用,一个在死亡时调用;

    void contextInitialized(ServletContextEvent sce):创建Servletcontext时
    void contextDestroyed(ServletContextEvent sce):销毁Servletcontext时

           属性监听:ServletContextAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个是在移除属性时调用。

      void attributeAdded(ServletContextAttributeEvent event):添加属性时;
      void attributeReplaced(ServletContextAttributeEvent event):替换属性时;
      void attributeRemoved(ServletContextAttributeEvent event):移除属性时;

     HttpSession(监听Session)

       生命周期监听:HttpSessionListener,它有两个方法,一个在出生时调用,一个在死亡时调用;

    void sessionCreated(HttpSessionEvent se):创建session时
    void sessionDestroyed(HttpSessionEvent se):销毁session时

      属性监听:HttpSessioniAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个是在移除属性时调用。

    void attributeAdded(HttpSessionBindingEvent event):添加属性时;
    void attributeReplaced(HttpSessionBindingEvent event):替换属性时
    void attributeRemoved(HttpSessionBindingEvent event):移除属性时
    

      

    ServletRequest(监听Request)

          生命周期监听:ServletRequestListener,它有两个方法,一个在出生时调用,一个在死亡时调用;

    void requestInitialized(ServletRequestEvent sre):创建request时
    void requestDestroyed(ServletRequestEvent sre):销毁request时

         属性监听:ServletRequestAttributeListener,它有三个方法,一个在添加属性时调用,一个在替换属性时调用,最后一个是在移除属性时调用。

    void attributeAdded(ServletRequestAttributeEvent srae):添加属性时
    void attributeReplaced(ServletRequestAttributeEvent srae):替换属性时
    void attributeRemoved(ServletRequestAttributeEvent srae):移除属性时
    

      

  • 相关阅读:
    Java +安卓 定时任务
    android动画解析(初级)
    语义化版本 2.0.0
    团队中的 Git 实践
    Spring和SpringBoot比较,解惑区别
    Spring boot 拦截器和过滤器
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project kircp-js-plan-resource: The packaging for this project did not assign a file to the bu
    Java函数优雅之道
    在springMVC的controller中获取request,response对象的一个方法
    Kotlin 数据类型(数值类型)
  • 原文地址:https://www.cnblogs.com/But-you/p/9717048.html
Copyright © 2020-2023  润新知