springmvc--过滤器Filter

目录

filter简述:

实现步骤:

别写一个类实心Filter接口

编写过滤器web.xml配置文件,在webxml中添加

Filter的配置文件

配置文件的三种配置方式


filter简述:

filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且对目标资源访问后进行逻辑处理

实现步骤:

  1. 编写一个类实现Filter接口
  2. 实现接口中的方法(着重实现doFilter方法)
  3. 在web.xml中配置(主要配置对那些资源进行过滤)

别写一个类实心Filter接口

package cn.bufanli.Filter;

import javax.servlet.*;
import java.io.IOException;

/**
 * @author BuShuangLi
 * @date 2019/1/2
 * 过滤器demeo 
 * 自定义类实现 Filter接口
 */
public class FilterDemo implements Filter {
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
          System.out.println("过滤器初始化");
     }

     @Override
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
          System.out.println("过滤器执行了");
          //放行请求
          filterChain.doFilter(servletRequest,servletResponse);

     }

     @Override
     public void destroy() {
          System.out.println("过滤器销毁了");


     }
}

编写过滤器web.xml配置文件,在webxml中添加

<!--配置过滤器start-->
    <filter>
        <filter-name>FilterDemo</filter-name>
<!--自定义类位置-->
        <filter-class>cn.bufanli.Filter.FilterDemo</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FilterDemo</filter-name>
<!--过滤所有-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!--配置过滤器end-->

Filter的配置文件

   <url-pattern>/*</url-pattern>的配置方式

配置文件的三种配置方式

<url-pattern>/xxxx</url-pattern>  只有访问xxxx的路径才走这个过滤器

<url-pattern>/xxxx/*</url-pattern>  只有访问xxxx的路径为xxxx开头的路径后面所有的都走这个过滤器

<url-pattern>*.jsp</url-pattern>  扩展名匹配,以.jsp开头的走过滤器

<dispatcher>REQUEST<dispatcher> 默认值代表直接访问波哥资源执行,转发不执行

<dispatcher>FORWARD<dispatcher>转发执行

<dispatcher>INCLUDE<dispatcher> 包含资源是执行

<dispatcher>ERROR<dispatcher> 发生错误执行

 

Spring MVC 环境下注册过滤器有以下两种常见方法: ### 通过 Java 配置注册过滤器 创建自定义过滤器类,实现 `javax.servlet.Filter` 接口,重写 `doFilter` 方法进行具体的过滤逻辑处理。以下是一个简单的自定义过滤器示例: ```java import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; // 使用 @WebFilter 注解,可配置过滤器名称和过滤路径 @WebFilter(filterName = "myFilter", urlPatterns = "/*") public class MyFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 执行过滤逻辑,例如设置字符编码 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 继续处理请求 chain.doFilter(request, response); } @Override public void init(FilterConfig filterConfig) throws ServletException { // 过滤器初始化逻辑 } @Override public void destroy() { // 过滤器销毁逻辑 } } ``` 在 Java 配置类中注册过滤器,可通过 `FilterRegistrationBean` 来注册自定义过滤器。示例如下: ```java import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class FilterConfig { @Bean public FilterRegistrationBean<MyFilter> myFilterRegistration() { FilterRegistrationBean<MyFilter> registration = new FilterRegistrationBean<>(); registration.setFilter(new MyFilter()); // 设置过滤路径 registration.addUrlPatterns("/*"); // 设置过滤器名称 registration.setName("myFilter"); // 设置过滤器顺序 registration.setOrder(1); return registration; } } ``` ### 通过 `web.xml` 配置注册过滤器 在传统的基于 `web.xml` 的 Spring MVC 项目中,可以在 `web.xml` 文件中注册过滤器。示例如下: ```xml <filter> <filter-name>myFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值