大家好,欢迎来到IT知识分享网。
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、Filter是什么?
webServlet有三大组件:Servlet Filter(过滤器) Listerner (监听器)
生活中中的过滤器有哪些?
净水器的滤芯 空心滤芯 鱼网
网络中拦截器:
有些网站必须是在登录下才能访问,比如咱们测评系统,一打开网址,就是登录页面
验证信息登录,处理字符问题,过滤跳转等
WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
就是咱们请求一个资源的时候,先通过Filter进行拦截,如果你能符合我的条件我就放行。让你继续去请求资源,如果你不符合我的条件,我就不让你去请求这个资源
二、Filter的入门案例
1.自定义一个类去实现一个接口Fileter
2.重写方法
3.配置Filter
注解写法(只用这种情况)
配置写法
e n d end end没有出来什么意思?index.jsp被拦截了?为什么他被拦截了?过滤器我写的是/*,就意味着所有的
资源都要被拦截。
代码如下(示例):
package com.qfedu.b_filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; //@WebFilter("/*") 我要去拦截你所有的资源 @WebFilter("/*") public class FilterDemo1 implements Filter {
//写着构造方法的目的,目的是为了让你知道这个FilterDemo1被实例化了没? public FilterDemo1(){
System.out.println("我是FilterDemo1的构造方法"); } public void destroy() {
System.out.println("FilterDemo1这个过滤器被销毁"); } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//是核心方法,一般的业务逻辑写在这个地方 System.out.println("doFilter called ...."); // chain.doFilter(req, resp); 放行代码 //如果这个地方没有写chain.doFilter(req,resp); //代码走到这个地方,资源就会被拦截,不再往下走了 chain.doFilter(req,resp);//放行,先走的是Servlet,再回到我们的过滤器 /* * if语句,该放行的就写一个chain.doFilter(req,resp);//放行 * 不该放行的话,让他跳转到其它页面 * */ System.out.println("放行完以后资源访问继续"); } public void init(FilterConfig config) throws ServletException {
System.out.println("FilterDemo1这个过滤器被初始化"); } }
三、Filter注解和配置文件的写法
优先选择注解写法,方便简单,两者只能选择其一
3.1配置文件的写法
代码如下(示例):
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <filter> <filter-name>FilterDemo2</filter-name> <filter-class>com.qfedu.b_filter.FilterDemo2</filter-class> </filter> <filter-mapping> <filter-name>FilterDemo2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
package com.qfedu.b_filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; public class FilterDemo2 implements Filter {
public void destroy() {
} public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
chain.doFilter(req, resp); } public void init(FilterConfig config) throws ServletException {
} }
3.2注解的写法【推荐使用】
代码如下(示例):
package com.qfedu.b_filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/119469.html