| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 过滤器,拦截器,监听器,Servlet-----杂烩 -> 正文阅读 |
|
[Java知识库]过滤器,拦截器,监听器,Servlet-----杂烩 |
JavaWeb三大组件:Filter过滤器、Listener监听器、Servlet程序ServletSevrlet是基于HTTP协议? 运行在Tomcat容器中的按照servlet规范编写的一个Java类(Java程序/Web组件)拥有java的优点,编写一个Servlet就相当于写一个类,然后被编译为字节码文件,被动态的加载Tomcat服务器中运行,主要作用是接受请求和响应数据,SpringMVC的请求流程中的DispatcherServlet前端控制器是它的一个实现类。 Sevrlet接口定义的方法: 1.init(),初始化servlet对象,完成一些初始化工作。 生命周期: 1.当客户端第一次请求Servlet时,Servlet被加载到内存中,容器会创建Servlet实例,并调用其init()方法进行初始化工作 Filter过滤器Filter过滤器是对Sevrlet容器请求和响应进行逻辑预处理的一个程序(接口),所以它的位置是在Servlet容器之前,主要作用是拦截请求和过滤响应,进行逻辑判断,例如权用户是否已经登陆、有没有权限访问该页面,对请求和响应的方法进行增强等等,一个Web容器中可以由多个Filter构成一个过滤链(FilterChain) 服务器启动时就创建该filter对象,服务器关闭时filter销毁。 完整流程:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter在对服务器响应进行后处理 生命周期: ?init(Filterconfig):代表filter对象初始化方法 filter对象创建时执行 ?doFilter(ServletRequest,ServletResponse,FilterChain):代表filter执行过滤的核心方法,如果某资源在已经被配置到这个filter进行过滤的话,那么每次访问这个资源都会执行doFilter方法 destory():代表是filter销毁方法 当filter对象销毁时执行该方法 Listener监听器Listener监听器是一个实现了特定接口的Java类;专门用于对特定域对象身上发生的事件或状态改变进行监听和相应处理,当被监视的对象发生创建或销毁,属性发生变化时,立即采取相应的行动 域对象:在某个范围之间,可以为Sevrlet之间提供共享数据的对象 三大域对象: ServletContext:Sevrlet上下文。全局作用域对象,一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放,在Tomcat运行期间,可以为当前工程中所有的Sevrlet提供共享数据 HttpSession:会话作用域对象,由JavaWeb提供的,用来会话跟踪的类。在一次会话过程中,为本次参与会话的Sevrlet提供共享数据 ServletRequest:请求作用域对象,在一次请求过程中,为本次参与请求的所有Sevrlet提供共享数据 域对象的属性操作: setAttribute()---设置对象的属性,如果不存在此属性,则会创建此属性。 getAttribute()---通过元素节点的属性名称获取属性的值。 removeAttribute()---删除指定的属性。 监听器主要就是监听这三个域对象的创建和销毁和属性的变化,用于在事件发生前、发生后做一些必要的处理,例如????????1.统计在线人数和在线用户????????2.系统启动时加载初始化信息????????3、统计网站访问量????????4、记录用户访问路径。 Interceptor拦截器拦截器是Spring的组件,由Spring框架支持的一个基于动态代理实现的拦截对象,它多用于拦截Controller。? 拦截器在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前进行拦截,然后在之前或之后加入某些操作。比如日志,安全等。可以通过它来进行权限验证,或者判断用户是否登陆,例如12306 判断当前时间是否是购票时间。 过滤器和拦截器的区别: 1.实现原理不同: 拦截器是基于java的反射机制的。 过滤器是基于函数回调。 2.规范不同: Filter是在Servlet规范中定义的,是Servlet容器支持的。 拦截器是在Spring容器内的,是Spring框架支持的。 3.使用范围不同: 因为过滤器Filter的使用要依赖于Tomcat等容器,所以它只能在Web程序中使用。 拦截器是Spring框架支持的,并不依赖Tomcat等容器,是可以单独使用的,不仅能应用在web程序中,也可以用于Application应用程序中。 4.拦截的请求范围不同 过滤器几乎可以对所有进入容器的请求起作用。 拦截器只会对Controller中请求或访问static目录下的资源请求起作用。 5.触发时机不同: 过滤器Filter只在Sevrlet前后起作用,在请求进入容器后,进入Servlet之前进行预处理,请求结束返回也是在servlet处理完后,返回给前端之前。 拦截器 Interceptor 是在请求进入servlet后,在进入Controller之前进行预处理的,可以深入到方法前后、异常抛出前后进行处理。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/30 13:42:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |