栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

18-Filter&Listener

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

18-Filter&Listener

今日内容
1. Filter:过滤器
2. Listener:监听器

浏览器url访问资源,可以访问servlet资源,jsp资源,html资源,(可以访问服务器端开放的任意资源)。。。

Filter:过滤器
1. 概念:
	* 生活中的过滤器:净水器,空气净化器,土匪、
	* web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。拦两次(来,回)
	* 浏览器到服务器的请求,和服务器到浏览器的响应(请求回馈),都会进行拦截,然后进行增强操作。
	* FilterChain.doFilter(req,res)方法作为来回方法拦截的切割点
	* 过滤器的作用:
		* 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...

2. 快速入门:
	1. 步骤:
		1. 定义一个类,实现接口Filter
		2. 复写方法
		3. 配置拦截路径
			1. web.xml
			2. 注解
	2. 代码:
		@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
		public class FilterDemo1 implements Filter {
		    @Override
		    public void init(FilterConfig filterConfig) throws ServletException {
		
		    }
		
		    @Override
		    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
		        System.out.println("filterDemo1被执行了....");

​
//放行
filterChain.doFilter(servletRequest,servletResponse);

		    }
		
		    @Override
		    public void destroy() {
		
		    }
		}


3. 过滤器细节:
	1. web.xml配置	
		
	        demo1
	        cn.itcast.web.filter.FilterDemo1
	    
	    
	        demo1
			
	        /*
	    
	2. 过滤器执行流程
		1. 执行过滤器
		2. 执行放行后的资源
		3. 回来执行过滤器放行代码下边的代码
	3. 过滤器生命周期方法
		1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
		2. doFilter:每一次请求被拦截资源时,会执行。执行多次
		3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
	4. 过滤器配置详解
		* 拦截路径配置:
			1. 具体资源路径: /index.jsp   只有访问index.jsp资源时,过滤器才会被执行
				* 例如访问web目录下的index.jsp资源,该目录下可以有其他很多类型的资源,例如html静态网页资源
				* 如何访问到index.jsp资源,有多种方式,例如页面间的跳转,servlet中的页面重定向(让浏览器再通过url地址请求一次资源),总之一切主动或被动的来自浏览器端的请求访问都会被(服务器端)拦截
				* 浏览器端:http://localhost:8080/hello/hello.jsp  (该请求不会被过滤器拦截)
			2. 拦截目录: /user/*	访问/user下的所有资源时,过滤器都会被执行
				* 例如浏览器访问来自浏览器端的访问servlet资源请求,可以通过目录的形式管理来自同一类型的servlet请求
				* 浏览器端:http://localhost:8080/user/hello	(浏览器访问服务器的servlet资源)
			3. 后缀名拦截: *.jsp		访问所有后缀名为jsp资源时,过滤器都会被执行
			4. 拦截所有资源:/*		访问所有资源时,过滤器都会被执行
		* 拦截方式配置:资源被访问的方式
		* 比如浏览器直接发送的资源访问请求(包含重定向),或者服务器内部的跳转方式(转发,不同于重定向浏览器会重新请求服务器端的资源)。。。
		* 注意:转发可以转发到一个servlet资源,也可以转发到一个jsp资源(服务器直接就把这个jsp资源response给浏览器了)
			* 注解配置:
				* 设置dispatcherTypes属性,数组类型,可以同时包含多个,即对多种方式访问资源的拦截
					1. REQUEST:默认值。浏览器直接请求资源
					2. FORWARD:转发访问资源
					3. INCLUDE:包含访问资源
					4. ERROR:错误跳转资源
					5. ASYNC:异步访问资源
			* web.xml配置
				* 设置标签即可,标签取值如上
			
	5. 过滤器链(配置多个过滤器)
		* 执行顺序:如果有两个过滤器:过滤器1和过滤器2
			1. 过滤器1
			2. 过滤器2
			3. 资源执行
			4. 过滤器2
			5. 过滤器1 

		* 过滤器先后顺序问题:
			1. 注解配置:按照类名的字符串比较规则比较,值小的先执行
				* 如: AFilter 和 BFilter,AFilter就先执行了。
			2. web.xml配置: 谁定义在上边,谁先执行
4. 案例:
	1. 案例1_登录验证
		* 需求:
			1. 访问day17_case案例的资源。验证其是否登录
			2. 如果登录了,则直接放行。
			3. 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录"。

​

	2. 案例2_敏感词汇过滤
		* 需求:
			1. 对day17_case案例录入的数据进行敏感词汇过滤
			2. 敏感词汇参考《敏感词汇.txt》
			3. 如果是敏感词汇,替换为 *** 

		* 分析:
			1. 对request对象进行增强。增强获取参数相关方法
			2. 放行。传递代理对象


		* 增强对象的功能:
			* 设计模式:一些通用的解决固定问题的方式
			1. 装饰模式
			2. 代理模式
				* 概念:
					1. 真实对象:被代理的对象
					2. 代理对象:
					3. 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
			 	* 实现方式:
				 	1. 静态代理:有一个类文件描述代理模式
				 	2. 动态代理:在内存中形成代理类
						* 实现步骤:
							1. 代理对象和真实对象实现相同的接口
							2. 代理对象 = Proxy.newProxyInstance();
							3. 使用代理对象调用方法。
							4. 增强方法

						* 增强方式:
							1. 增强参数列表
							2. 增强返回值类型
							3. 增强方法体执行逻辑	
Listener:监听器
* 概念:web的三大组件之一。(servlet,过滤器Filter,监听器Listener)
	* 事件监听机制
		* 事件	:一件事情
		* 事件源 :事件发生的地方
		* 监听器 :一个对象
		* 注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码
		* 一个按钮,注册一个监听事件,便执行一个函数
		* 更多的在框架中使用,使用别人写好的监听器,自己更多的是完成配置操作


* javaweb中有很多对象可以被作为监听对象,以下面监听器对象为例:
* ServletContextListener:监听ServletContext对象的创建和销毁
	* 方法:
		* void contextDestroyed(ServletContextEvent sce) :ServletContext对象被销毁之前会调用该方法
		* void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法
	* 步骤:
		1. 定义一个类,实现ServletContextListener接口
		2. 复写方法
		3. 配置
			监听器不需要被访问,监听事件执行后被自动触发
			1. web.xml
					
 					 cn.itcast.web.listener.ContextLoaderListener
					

					* 指定初始化参数
					* 
					  
					     contextConfigLocation
					     /WEB-INF/classes/applicationContext.xml
					  
			2. 注解:
				* @WebListener
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996557.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号