在web.xml中配置过滤器
step1:web.xml配置
init()
doFilter()
destory()
Web.xml中过滤器配置
过滤器方法
Web.xml配置
实现javax.servlet.Filter接口
在web.xml中注册
针对一个<filter> 可以配置多个<filter-mapping>
<url-pattern>中 * 代表任意值 /index*代表index为前缀的URL, /*代表所有URL。
在的FilterChain的dofilter(servletRequest, servletResponse)方法执行后,访问JSP(目标资源)后,才继续往下执行。
问题环节:
【1】过滤器是否能改变用户请求的Web资源呢?也就是能否改变用户请求的路径?
答:可以,比如:登录,检测到不符合要求,则可以跳转到登陆页面。
【2】过滤器能否直接返回数据,能不能直接处理用户请求?
答:不可以,因为Filter不是标准的Servlet,不能把数据直接返回到用户请求,只能跳转到Web请求的资源,或者跳转、重定向到其他的Web资源。
过滤器是不能直接返回数据的,不能直接处理用户请求
过滤器web.xml配置
过滤器
Web.xml配置
过滤器不能处理用户请求,但是可以改变请求路径
2.在web.xml中配置自动的filter
自定义过滤器:实现javax.servlet.Filter接口,实现三个方法
过滤器案例
知识点1:实现过滤器功能,前提是实现javax.servlet.Filter这个接口。
知识点2:实现Filter接口的三个方法简介。
【a】init():过滤器的初始化方法,Web容器创建过滤器实例后将调用这个方法,这个方法通过方法参数FilterConfig可以读取web.xml文件中的过滤器的参数。
【b】doFilter():该方法完成实际过滤操作,过滤器的核心方法,当用户请求访问与过滤器关联的URL时,Web容器将先调用该方法。FilterChain参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发、重定向将请求资源转发到其他资源。
【c】destory():Web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。(多数情况用不到)
Web.xml中过滤器的配置(filterChain.doFilter(servletRequest, servletResponse)相当于访问目标资源)
问题环节:
【1】过滤器是否能改变用户请求的Web资源呢?也就是能否改变用户请求的路径?
答:可以,比如:登录,检测到不符合要求,则可以跳转到登陆页面。
【2】过滤器能否直接返回数据,能不能直接处理用户请求?
答:不可以,因为Filter不是标准的Servlet,不能把数据直接返回到用户请求,只能跳转到Web请求的资源,或者跳转、重定向到其他的Web资源。
JAVA过滤机制——第一个过滤器案例 1、创建一个过滤器类 ,继承自servlet下的Filter 2、重写三个方法init() doFilter() destroy()方法 (1)init()初始化:这个方法可以读取web.xml文件中的过滤器初始化参数。通过参数FilterConfig arg0可以获取更多参数 (2)doFIlter()核心:完成实际的过滤操作。当用户请求访问与过滤器【关联的URL】时,Web容器将先调用过滤器的doFilter方法,FilterChain arg2参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发,重定向将请求转发给其他资源。 (3)web容器在消耗过滤器前调用该方法,用于释放过滤器占用的资源。(大多数情况用不到)
过滤器的实现:
① 实现Filter接口
② 在web.xml中配置过滤器
web.xml配置
过滤器可以改变用户请求的web资源,可以改变用户请求的路径(跳转);
过滤器不能直接返回数据,不能直接处理用户请求;
Filter的三个方法:
过滤器可以改变用户请求的web资源,也就是说可以改变用户请求的路劲
过滤器不能直接返回数据,不能直接处理用户请求,它不是一个标准的servlet
/*中(*)代表任意值
红色区域代表过滤器类的配置
<filter>...</filter>
绿色区域配置过滤器URL相关映射配置
<filter-mapping>...</filter-mapping>
URL是需要过滤的路径
@JAVA过滤机制——第一个过滤器案例
1、创建一个过滤器类 ,继承自servlet下的Filter
2、重写三个方法init() doFilter() destroy()方法
(1)init()初始化:这个方法可以读取web.xml文件中的过滤器初始化参数。通过参数FilterConfig arg0可以获取更多参数
(2)doFIlter()核心:完成实际的过滤操作。当用户请求访问与过滤器【关联的URL】时,Web容器将先调用过滤器的doFilter方法,FilterChain arg2参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发,重定向将请求转发给其他资源。
(3)web容器在消耗过滤器前调用该方法,用于释放过滤器占用的资源。(大多数情况用不到)
3、过滤器的配置如图:
(1)一般配置一个<filter>,然后用多个<filter-mapping>与之关联
在过滤器对象的doFilter()方法中,业务逻辑处理完成之后,需要通过FilterChain对象的doFilter()方法将请求传递到下一个过滤器或者目标资源,否则将出现错误。
web,xml配置
doFilter方法传递给下一个过滤器或目标资源,或者可以转发或者重定向
过滤器web.xml的配置
过滤器可以改变用户请求的web资源,也就是说可以改变用户请求的路劲
过滤器不能直接返回数据,不能直接处理用户请求,它不是一个标准的servlet
红色区域代表过滤器类的配置
<filter>...</filter>
绿色区域配置过滤器URL相关映射配置
<filter-mapping>...</filter-mapping>
/*中(*)代表任意值
URL是需要过滤的路径
init()
doFilter()
destroy()