• Java web三大件——listener、filter、servelt


    一、listener、filter、servelt 的执行顺序和生命周期

    1、启动顺序

    想知道 web 三大件的启动顺序其实只需要查看启动日志就好了,启动顺序为:listener、filter、servelt

    2、生命周期

    查看结束和运行时候的日志不难发现:

    1> listener 的生命周期:一直从程序启动到结束,其中:

    ServletRequestListener (用来监控 session 的创建,销毁等):每次访问一个 Request 资源前,都会执行 requestInitialized() 方法,方法访问完毕,都会执行 requestDestroyed() 方法。

    ServletRequestListener (用于监控 servlet 上下文 request ):每次调用 request.getSession(),都会执行 sessionCreated() 方法,执行 session.invalidate() 方法,都会执行sessionDestroyed() 方法。

    ServletRequestAttributeListener (用于监控 request 中的 attribute 的操作):每次调用 request.setAttribute() 都会执行 attributeAdded() 方法,如果 set 的 key 在 request 里面存在,就会执行 attributeReplacerd() 方法,调用 request.removeAttribute() 方法,都会执行 attributeRemoved() 方法。

    2> Filter 生命周期:程序启动调用 Filter 的 init() 法(永远只调用一次,具体看启动日志),程序停止调用 Filter 的 destroy() 方法(永远只调用一次,具体看关闭日志), doFilter() 方法每次的访问请求如果符合拦截条件都会调用(程序第一次运行,会在 servlet 调用 init() 方法以后调用,不管第几次,都在调用 doGet() , doPost() 方法之前)。

    3> Servlet 生命周期:程序第一次访问,会调用 servlet 的 init() 方法初始化(只执行一次,具体看日志),每次程序执行都会根据请求调用 doGet() 或者 doPost() 方法,程序停止调用 destory()方法(具体看结束日志)。

    二、http 协议中 get 请求和 post 请求区别

    1、post 更加安全不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

    2、GET 把参数包含在URL中, POST 通过 request body 传递参数;

    3、post 发送的数据更大( 1> http 协议并未规定 get 和 post 的长度限制; 2> get 的最大长度限制是因为浏览器和 web 服务器限制了 URL 的长度; 3> 不同的浏览器和 web 服务器,限制的最大长度不一样;4> 要支持 IE,则最大长度为 2083byte ,若支持 Chrome ,则最大长度 8182byte);

    4、post 能发送更多的数据类型( get只能发送 ASCII 字符);

    5、get 比 post 快;(其一 post 请求包含了很多请求头,也就是说 post 需要在请求的 body 部分包含数据;其二 post 在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据(三次握手);其三 get 会将数据缓存起来,而 post 不会;其四 post 不能进行管道化传输);

    5、post 用于修改和写入数据, get 一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是 get 提交),目的是资源的获取,读取数据;

  • 相关阅读:
    LeetCode 252. Meeting Rooms
    LeetCode 161. One Edit Distance
    LeetCode 156. Binary Tree Upside Down
    LeetCode 173. Binary Search Tree Iterator
    LeetCode 285. Inorder Successor in BST
    LeetCode 305. Number of Islands II
    LeetCode 272. Closest Binary Search Tree Value II
    LeetCode 270. Closest Binary Search Tree Value
    LeetCode 329. Longest Increasing Path in a Matrix
    LintCode Subtree
  • 原文地址:https://www.cnblogs.com/jingxinbk/p/12457749.html
Copyright © 2020-2023  润新知