Java使用Filter实现登录验证
作者:雾林小妖
本文主要介绍了Java使用Filter实现登录验证,Filter类似于门卫,你在进入之前门卫需要盘查你,身份合法进入,身份不合法拦截,感兴趣的可以了解一下
1、什么是Filter
Filter可认为是Servlet的一种特殊用法,主要是对用户发起的请求进行预处理或后处理,意思就是在请求到达用户想请求的地址之前先进入Filter,或者在离开用户请求之后进入Filter。Filter类似于门卫,你在进入之前门卫需要盘查你,身份合法进入,身份不合法拦截。
1.1、Filter过滤器的使用场景
1、对用户的请求进行统一认证,适合做权限管理。
2、对请求和响应进行加密处理。
3、对用户发送的请求或者响应的数据进行过滤处理。
4、对所有用户的请求或者响应进行记录,可以进行日志管理。
2、Filter的使用方式
说明1:Filter的使用需要实现Filter接口,并重写doFilter方法
说明2:导包信息import javax.servlet.Filter;
说明3:当用户正在进行登录的时候需要放行。
2.1、创建Filter
public class LoginFilter implements Filter{ //销毁方法 public void destroy() { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //将ServletRequest转化成HttpServletRequest HttpServletRequest request=(HttpServletRequest)servletRequest; HttpServletResponse response=(HttpServletResponse)servletResponse; //获取当前用户的请求地址 String url=request.getRequestURI(); //如果请求的地址中包含login,就放行 //如果用户正在通过login.jsp或者请求login.do进行登录,要放行。 if(url.indexOf("login")>-1){ //放行 filterChain.doFilter(request, response); return ; } HttpSession session=request.getSession(); String username=(String)session.getAttribute("username"); //如果username值为空,说明没有登录,因为登录成功后会将用户信息保存在session中。 if(username!=null){ //放行 filterChain.doFilter(request, response); return ; } //如果没有登录转发到login.jsp request.getRequestDispatcher("login.jsp").forward(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
2.2、在web.xml中配置Filter信息
<!-- 自定义过滤器 --> <filter> <filter-name> LoginFilter </filter-name> <filter-class>com.it.filter. LoginFilter </filter-class> </filter> <filter-mapping> <filter-name> LoginFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
到此这篇关于Java使用Filter实现登录验证的文章就介绍到这了,更多相关Java Filter登录验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!