浅谈Java Web之过滤器(Filter)

什么是过滤器?(Filter)

        过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理。

Filter 过滤器它是 JavaWeb 的三大组件之一。

Filter 过滤器它是 JavaEE 的规范。也就是接口。

过滤器在业务中都有哪些应用场景?

        自动登录、统一编码格式、访问权限设置、敏感词汇过滤等等。

如何使用Filter?

        1.编写一个类去实现 Filter 接口。
​         2.实现过滤方法 doFilter()。
​         3.到 web.xml 中去配置 Filter 的拦截路径。

<!--filter标签用于配置一个Filter过滤器-->
<filter>
    <!--给 filter 起一个别名-->
    <filter-name>Adminfilter</filter-name>
    <!--配置 filter 全类名-->
    <filter-class>com.filter.AdminFilter</filter-class>
</filter>
<!--配置 filter 过滤器的拦截路径-->
<filter-mapping>
    <!--表示当前的拦截路径给哪个filter过滤器使用-->
    <filter-name>Adminfilter</filter-name>
    <!--配置拦截路径
    / 表示请求地址为: http://ip:port/工程路径/ 映射到 IDEA 的 web 目录
    /admin/* 表示请求地址为 http://ip:port/工程路径/admin/*  (admin 下的全部)
    -->
    <url-pattern>/admin/*</url-pattern>
</filter-mapping>

Fiter的生命周期 

  1. 构造器方法

  2. init 初始化方法:
    第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建)。

  3. doFilter 过滤方法:
    第 3 步,每次拦截到请求,就会执行(访问 admin 目录下的 a.jsp 页面,访问一次,拦截一次请求)。

  4. destroy 销毁:
    第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是将Java Web过滤器(Filter)示例的所有请求参数转换为大写的示例代码: ```java import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @WebFilter(filterName = "toUpperCaseFilter", urlPatterns = "/*") public class ToUpperCaseFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // do nothing } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; ToUpperCaseRequestWrapper requestWrapper = new ToUpperCaseRequestWrapper(request); filterChain.doFilter(requestWrapper, servletResponse); } @Override public void destroy() { // do nothing } static class ToUpperCaseRequestWrapper extends HttpServletRequestWrapper { public ToUpperCaseRequestWrapper(HttpServletRequest request) { super(request); } @Override public String getParameter(String name) { String value = super.getParameter(name); if (value != null) { value = value.toUpperCase(); } return value; } @Override public String[] getParameterValues(String name) { String[] values = super.getParameterValues(name); if (values != null) { for (int i = 0; i < values.length; i++) { values[i] = values[i].toUpperCase(); } } return values; } } } ``` 以上代码,我们创建了一个名为 `toUpperCaseFilter` 的过滤器,它会对所有的请求进行过滤。在过滤器,我们将请求对象(request)转换为 `ToUpperCaseRequestWrapper` 对象,并将其传递给过滤器的下一个过滤器或目标组件。在 `ToUpperCaseRequestWrapper` ,我们重写了 `getParameter` 和 `getParameterValues` 方法,在这些方法将请求参数的值转换为大写。最后,我们将新的请求对象返回给过滤器的下一个组件。这样,所有的请求参数都会被转换为大写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值