web项目前后台登录自定义过滤实现

来源:互联网 发布:企业cms 编辑:程序博客网 时间:2024/06/11 18:39
最近在做一个项目,用到了web的过滤器,与大家分享下:
webxml中需要配置:<pre name="code" class="html"><!-- 登录拦截 --><filter><filter-name>LoginInterceptor</filter-name><filter-class>com.yc.vcloud.utils.LoginInterceptor</filter-class></filter><filter-mapping><filter-name>LoginInterceptor</filter-name><url-pattern>/*</url-pattern></filter-mapping>

Java源码
package com.yc.vcloud.utils;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.filter.OncePerRequestFilter;/** * 登录过滤 *  * @author Luo_dawei * */public class LoginInterceptor extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {// 不过滤的uriString[] notFilter = new String[] { "login.jsp", "back/backlogin.jsp", "index.html", "register.jsp" };// 请求的uriString uri = request.getRequestURI();// uri中包含page时才进行过滤if (uri.contains("page")) {// 是否过滤boolean doFilter = true;for (String s : notFilter) {if (uri.contains(s)) {// 如果uri中包含不过滤的uri,则不进行过滤doFilter = false;break;}}System.out.println("doFilter==>"+doFilter);if (doFilter) {// 执行过滤// 从session中获取登录者实体Object objUser = request.getSession().getAttribute(SessionAttribute.USERLOGIN);Object objAdmin = request.getSession().getAttribute(SessionAttribute.ADMINLOGIN);if (null == objUser) {// 如果session中不存在登录者实体,则弹出框提示重新登录// 设置request和response的字符集,防止乱码request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();StringBuilder builder = new StringBuilder();builder.append("<script type=\"text/javascript\">");builder.append("alert('您好,请先登录!');");if (null == objUser) {builder.append("location.href='login.jsp';");}if (null == objAdmin) {builder.append("location.href='backlogin.jsp';");}builder.append("</script>");out.print(builder.toString());} else {// 如果session中存在登录者实体,则继续filterChain.doFilter(request, response);}} else {// 如果不执行过滤,则继续filterChain.doFilter(request, response);}} else {// 如果uri中不包含page,则继续filterChain.doFilter(request, response);}}}

1 0
原创粉丝点击