前言
Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理。在一个使用数据库管理用户数据的程序中,如果提供批量删除这样的功能,用户基于前端的操作,将操作的类型以及需要更改的数据信息传入到后端,这个过程可以视为对单独删除的一个扩充,而不同的是传递的参数不再只有一个,而是一个列表,具有标志性意义的一个列表。权限管理则是区分管理员以及普通用户的一个措施,可以说是最基本的功能之一了。
过滤器
过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。在未设计过滤器之前,在登陆的界面中输入其他操作的网址是可以直接跳过登陆操作进入到系统的。对于一个具备管理功能的系统来说,这样的设计明显是不合理的。在未登录之前需要禁止跳转到任何一个页面。就正常的理解而言,过滤器通过设置一系列的条件,控制用户操作的权限。
在实际的Java开发中,过滤器的基本结构已经是设置好的,可以直接使用。构建的过滤器一般有三个基本的方法:init()、doFilter()、destroy()。重写过滤器的doFilter(request,response,chain)方法。另外两个init()、destroy()方法一般不需要重写。在doFilter方法中进行过滤操作。常用代码有:获取请求、获取响应、获取session、放行。 剩下的代码就是根据session的属性进行过滤操作、设置编码格式等等了。
package com.zhongruan.filter;
import com.zhongruan.bean.User;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) servletRequest;
HttpServletResponse response=(HttpServletResponse) servletResponse;
HttpSession session=request.getSession();
User user=(User) session.getAttribute("user");
String uri=request.getRequestURI();
System.out.println("uri-----"+uri);
System.out