导航:首页 > 净水问答 > servlet过滤器应用教程

servlet过滤器应用教程

发布时间:2025-09-17 00:50:20

① 如何使用filter过滤器对入参进行处理(完整版)

前台把参数通过报文或者使用表单、ajax提交到后台,如果我们的请求参数是加密的,那么我们在controller里面的每一个方法里都需要进行解密处理。如果方法太多,那就太麻烦了。

使用过滤器,在一个Filter中将 HttpServletRequest 里的所有参数都取出来分别进行过滤然后再放回到该HttpServletRequest 中行不行呢?

通过测试后发现是不行的,因为HttpServletRequest 只提供了getParameter ,而没有提供setParameter;所以,我们只能自己写一个HttpServletRequest 方法继承HttpServletRequestWrapper,然后覆盖里面的方法,并且增加我们自己的setParameters方法,这样我们就可以为所欲为了,最后再在filter中调用该类的方法对参数进行处理(获取、修改、存储等等)。

在请求参数到达controller之前,在filter里面进行解密;这样,通过简单的过滤器处理,把需要处理的请求都在过滤器里进行解密操作,这样就等于实现了自动化处理。

这里我们针对两种不同的请求方式进行讲解:

第一步:新建一个类别

这个类继承自HttpServletRequestWrapper

通过建立这个类我们就能完成向request对象添加我们处理之后的参数了。

第二步:通过实现filter接口建一个过滤器

第三步:过滤器的配置

方法一、在web.xml文件里面进行简单的配置(一般项目)

把我们的过滤器放在该文件中注册

方法二、springboot项目的配置

新建一个配置类,加上@Configuration注解,在方法头加上@Bean注解

controller 接收参数代码:

请求示例代码:

处理结果:

从结果可以看出,我们成功地通过过滤器对请求的email进行大写转小写处理

第一步:新建一个类别

这个类继承自HttpServletRequestWrapper

通过建立这个类我们就能完成向request对象添加我们处理之后的参数了。

第二步:通过实现filter接口建一个过滤器

第三步:

方法一、在web.xml文件里面进行简单的配置

把我们的过滤器放在该文件中注册

方法二、springboot项目的配置

新建一个配置类,加上@Configuration注解,在方法头加上@Bean注解

controller 接收参数代码:

请求报文示例:

我这里使用的是postman工具进行json参数请求

返回结果:

通过该过滤器,把email转换从小写成功。

通过以上操作,我们就成功的创建了一个过滤器。

② servlet中filter有什么用

首先介绍一下Filter到底是个什么东西:
根据这个单词就能猜到Filter的中文意思是过滤器,事实当然也是这样的;Filter是Servlet中的一个重 要组件。

接下来简单说说Filter这个接口中的常用方法吧。

①.init():类似于Servlet生命周期中的init()方法,用于初始化一些关于Filter接口的参数;只在Servlet 启动时调用一次。
②.doFilter():类似于Servlete生命周期中的service()方法,该方法用于存放逻辑代码。
③.destory():同理类似于Servlet生命周期中的destroy()方法,当Servlet容器销毁前调用该方法。

然后说说如何创建一个Filter的HelloWorld。

①.创一个抽象的Java类,该类实现了Filter接口,同时实现了Filter接口的部分方法,例如
init(),destroy()方法。具体实现代码如下:

public abstract class HttpFilter implements Filter {

private HttpServletRequest request;
private HttpServletResponse response;

//重写Filter接口的destory方法
public void destroy() {}

//重写doFilter方法,这个方法在这里主要作用是将ServletRequest,ServletResponse对象转为对 //应的HttpServletRequest,HttpServletResponse对象
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {

this.request = (HttpServletRequest) arg0;
this.response = (HttpServletResponse) arg1;

doFilter(request, response, arg2);
}

//该方法交由继承该抽象类的实现类来实现
public abstract void doFilter(HttpServletRequest request,HttpServletResponse response,
FilterChain chain);

private FilterConfig config;

//这个方法是为了方便子类获取ServletContext对象
public FilterConfig getFilterConfig(){
return config;
}

//该方法一般不建议重写,因为重写该方法会出现某些错,基于此提供了下面的无参数的init()方法
public void init(FilterConfig arg0) throws ServletException {
this.config = arg0;
init();
}

public void init(){}
}

②.一个继承了HttpFilter抽象类的实现类,代码如下,只要功能是为了实现禁用浏览器缓存

public class NoCacheFilter extends HttpFilter{

@Override
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain chain) {

//通过过滤器实现页面禁用浏览器缓存
response.setDateHeader("Expires", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");

}

}

③.将该实现类配置到web.xml文件中,配置方式和配置普通的Servlet一样,具体代码

<filter>
<filter-name>NoCacheFilter</filter-name>
<filter-class>com.xingyun.servlet.filter.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>NoCacheFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

至此,就实现了一个简单的用于禁用浏览器缓存的过滤器了。

上面说了这么多,在开发中哪些地方中能用到Filter才是最终目的,好了,我大概说一下我在开发中用到的地方。

①.上面提到的禁用浏览器的缓存。这个真的很重要,有时候修改了前端页面,就是因为缓存的原因,导致页面不 能及时刷新过来,真的很蛋疼。

②.解决中文乱码的问题。在开发中,页面可能达到几十个甚至上百个,在每个页面处理中文乱码的问题很烦,但 是通过过滤器,那么问题就变得很简单了。

③.通过检查用户是否登录来管理用户是否可以访问某些页面,比如个人隐私等页面。这个用的也是蛮多的。

③ 过滤器Filter使用

Filter是Servlet技术中的核心组件,用于拦截并处理web服务器管理的所有资源,实现高级功能。以下是关于Filter使用的详细解答:

  1. Filter的基本概念

    • Filter能够拦截并处理web服务器管理的资源,如JSP、Servlet、静态文件等。
    • 通过Filter,可以实现诸如URL权限控制、敏感词过滤和响应压缩等功能。
  2. Filter的请求流程

    • 浏览器的请求首先会通过第一个Filter进行检查。
    • 如果请求符合Filter的规则,则继续传递给后续的Filter,直至链的末端。
    • Filter的执行顺序取决于它们在web.xml中的配置顺序,配置在前的Filter位于链的前端。
    • 如果请求无法通过所有Filter,则可能在某个Filter中被处理。
  3. Filter的主要用途

    • 登录验证:拦截未登录的请求,并重定向到登录页面。
    • 资源权限管理:根据用户角色或权限,控制对特定资源的访问。
    • 字符过滤:对请求和响应中的字符进行过滤,如去除敏感词、统一字符编码等。
  4. Filter的核心方法

    • doFilter方法:是Filter的核心方法,用于执行请求处理、响应操作、基于session的过滤和编码设置等任务。
  5. Filter的配置

    • 在web.xml中配置Filter时,需要明确指定过滤器类路径和作用对象。
    • 确保监听器、Filter和Servlet的顺序正确。
  6. Filter的生命周期

    • 实例化:由web服务器管理,实例化时调用init方法初始化。
    • 处理请求:在doFilter方法中处理请求和响应。
    • 销毁:当Filter不再需要时,调用destroy方法释放资源。
  7. FilterConfig接口

    • 允许开发者为Filter配置初始化参数,如Filter名称、参数值等。

综上所述,Filter是web开发中非常重要的组件,通过灵活配置和使用Filter,可以实现丰富的功能扩展和安全控制。

阅读全文

与servlet过滤器应用教程相关的资料

热点内容
酿造冷机液氨滤芯用什么材质 浏览:117
一般市政污水埋管项目毛利多少 浏览:904
饮水机往水桶返热水怎么回事 浏览:123
锅炉为什么用纯水 浏览:76
闸北反渗透阻垢剂 浏览:52
离子交换层析如何装柱 浏览:523
传祺如何更换汽车空调滤芯 浏览:750
内置过滤器改外置 浏览:75
奥朗格净水器一般多少层 浏览:403
彩妆污水处理 浏览:713
去机化钠离子内流正反馈 浏览:902
自适应过滤法的程序 浏览:976
中国废水淤泥怎么提炼黄金 浏览:882
滤芯打开里面是什么 浏览:349
空气净化器组合套装怎么组装 浏览:498
ro膜净水器水泵压力不足 浏览:138
离子交换树脂法产生什么废水 浏览:823
饮水机外壳坏了怎么修复 浏览:260
如何看污水管道施工图 浏览:239
污水处理中微生物生长规律研究 浏览:281