要想实现此功能,分以下两步:
1.配置web.xml:
<filter> <filter-name>LoginFilter</filter-name> <filter-class>com.yusj.core.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2.创建过滤器实现类,实现Filter接口:
package com.yusj.core.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * * @ClassName: LoginFilter * @Description: 登录过滤器 * @author shaojian.yu * @date 2014年11月3日 下午1:19:28 * */ public class LoginFilter implements Filter { /** * * Title:doFilter * Description: 所有请求都走此过滤器来判断用户是否登录 * user: shaojian.yu * date: 2014 2014年11月3日 * @param servletRequest * @param servletResponse * @param filterChain * @throws IOException * @throws ServletException * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 判断是否是http请求 if (!(servletRequest instanceof HttpServletRequest) || !(servletResponse instanceof HttpServletResponse)) { throw new ServletException( "OncePerRequestFilter just supports HTTP requests"); } // 获得在下面代码中要用的request,response,session对象 HttpServletRequest httpRequest = (HttpServletRequest) servletRequest; HttpServletResponse httpResponse = (HttpServletResponse) servletResponse; HttpSession session = httpRequest.getSession(true); String[] strs = { "loginpage", "login", "logout", "static" }; // 路径中包含这些字符串的,可以不用登录直接访问 StringBuffer url = httpRequest.getRequestURL(); /** * 过滤掉根目录 */ String path = httpRequest.getContextPath(); String protAndPath = httpRequest.getServerPort() == 80 ? "" : ":" + httpRequest.getServerPort(); String basePath = httpRequest.getScheme() + "://" + httpRequest.getServerName() + protAndPath + path + "/"; if (basePath.equalsIgnoreCase(url.toString())) { filterChain.doFilter(servletRequest, servletResponse); return; } // 特殊用途的路径可以直接访问 if (strs != null && strs.length > 0) { for (String str : strs) { if (url.indexOf(str) >= 0) { filterChain.doFilter(servletRequest, servletResponse); return; } } } // 从session中获取用户信息 String loginInfo = (String) session.getAttribute("username"); if (null != loginInfo && !"".equals(loginInfo)) { // 用户存在,可以访问此地址 filterChain.doFilter(servletRequest, servletResponse); } else { // 用户不存在,踢回登录页面 String returnUrl = httpRequest.getContextPath() + "/loginpage"; httpRequest.setCharacterEncoding("UTF-8"); httpResponse.setContentType("text/html; charset=UTF-8"); // 转码 httpResponse .getWriter() .println( "<script language=\"javascript\">alert(\"您还没有登录,请先登录!\");if(window.opener==null){window.top.location.href=\"" + returnUrl + "\";}else{window.opener.top.location.href=\"" + returnUrl + "\";window.close();}</script>"); return; } } @Override public void init(FilterConfig arg0) throws ServletException { } @Override public void destroy() { } }
工作中遇到,留备用。
相关推荐
主要介绍了Java web过滤器验证登录防止未登录进入界面,在一些系统中经常可以用到此功能,对java web 验证登录知识感兴趣的朋友一起看下吧
JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器
JAVA Web中过滤器是必须要有的,我们的网页需要过滤一些不需要的东西,都是由过滤器来实现的,这个也许对大家有所帮助
JAVA web过滤器Filter学习资料,精心整理,15页.
java web使用过滤器的案列, 含过滤器案列和监听器案列, 有监听器案列之用户踢人的案列, 和过滤器30天自动登陆的案列, 以及过滤器乱码的情况处理
java-web servlet 拦截器 过滤器使用 java-web servlet 拦截器 过滤器使用
用过滤器来验证用户是否登录
java web 过滤器防止Xss、sql注入,基于spring boot 2.0框架开发。
java过滤器 字符乱码 乱码 java乱码 过滤器
Java Web Jquery表单验证 jQuery是一个流行的JavaScript库,可用于在网页上进行各种操作,包括表单验证。 1、将基于Jquery的表单验证的调查问卷分为四个部分:FrontPage.html、write.html、end.html、style.css。 1...
java Web项目中过滤器使用方法,很有用的
java web过滤器使用方法,含自动登陆和乱码的过滤器。很适合数学java web的人看,有注释。
配置在web.xml中,可以防止SQL注入,可以自己定义一些需要过滤的特殊字符
实现对网页的访问控制权限,使用过滤器的方法实现的权限访问
过滤器在Java Web开发中的应用研究.pdf
主要介绍了java图片滑动验证(登录验证)原理与实现方法,结合实例形式详细分析了java图片滑动登录验证的相关原理、实现方法与操作技巧,需要的朋友可以参考下
java 五种常用过滤器
java web 登录验证项目源码,java web开发
java过滤器java过滤器java过滤器java过滤器