Java Servlet之Filte(过滤器)详解

Java Servlet之Filte(过滤器)详解提示 这里对文章进行总结 以上就是今天要讲的内容 servletfilte

大家好,欢迎来到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

(0)
上一篇 2025-11-05 11:20
下一篇 2025-11-05 11:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信