初始过滤器Filter

定义:用于对request或response进行拦截,在用户的请求到达指定的URI之前,先过Filter的拦截处理规则(逻辑代码的处理修改),之后再正常处理用户请求。

Filter三个接口方法:

init(FilterConfig filterConfig)    过滤器初始化,在整个Filter声明周期中只执行一次

doFilter(ServletRequest request, ServletResponse  response,FilterChain chain)   过滤器其主体方法,一次用户请求调用一次,可以多次重复调用

destroy()      过滤器销毁,在整个Filter声明周期中只执行一次

实现过滤器功能:

1. 定义一个普通的类,实现Filter(javax.servlet.Filter)接口

2.书写内置方法:

public  class ServletFilter implements javax.servlet.Filter {
    @Override
    //过滤器初始化,在整个Filter声明周期中只执行一次
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("this is init working");
    }

    @Override
    //过滤器其主体方法,一次用户请求调用一次,可以多次重复调用
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("this is doFilter working");
    }

    @Override
    //过滤器销毁,在整个Filter声明周期中只执行一次
    public void destroy() {
        System.out.println("this is destroy working");
    }
}

3.在web.xml定义过滤规则

<!--Servlet Filter过滤器-->
<filter>
    <filter-name>ServletFilter</filter-name>
    <filter-class>com.nz.filter.ServletFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ServletFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

可以用注解实现,替代web.xml配置

@WebFilter(filterName = "LoginFilter",urlPatterns = "/admin/*")

例如.处理过滤器的乱码需求:

1.doFilter()写处理乱码逻辑:

//处理请求乱码
req.setCharacterEncoding("utf-8");
//处理响应代码
resp.setContentType("text/html;charset=utf-8");
//继续执行请求
filterChain.doFilter(servletRequest,servletResponse);

2.继续执行请求

Chain.doFilter(request,response);

3.过滤规则

/*当前项目下全部url请求

例如:不能登录不能访问需求

1.在doFilter()写代码逻辑:

//转换 强转
  HttpServletRequest req =(HttpServletRequest)servletRequest;
  HttpServletResponse resp =( HttpServletResponse)servletResponse;
 //获取session
  HttpSession session=req.getSession();
  User user = (User) session.getAttribute("user");
//判断
  if(user==null){
      resp.sendRedirect("/login.jsp");
  }
  //继续执行
  filterChain.doFilter(servletRequest,servletResponse);

2.继续执行请求

Chain.doFilter(request,response);

3.过滤规则

/admin/* 当前项目下全部/admin之后的请求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值