xml文件配置
<!-- 后台管理过滤器的配置 --> <filter> <filter-name>adminFilter</filter-name> <filter-class>com.doit.filter.AdminFilter</filter-class> </filter> <filter-mapping> <filter-name>adminFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
filter代码
package com.doit.filter; 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; /** * 后台管理过滤器 */ public class AdminFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { // 不过滤的url String[] notFilter = new String[] {"login"}; // 请求的url String url = request.getRequestURI(); // 如果是后台管理页面需要过滤 if (url.indexOf("admin/home") != -1 || url.indexOf("/delPage") != -1 || url.indexOf("/updatePage") != -1 || url.indexOf("/addPage") != -1) { // 是否过滤 boolean doFilter = true; for (String s : notFilter) { if (url.indexOf(s) != -1) { // 如果url中包含不过滤的url,则不进行过滤 doFilter = false; break; } } if (doFilter) { // 执行过滤 // 从session中获取登录者实体 Object obj = request.getSession().getAttribute("loginedUser"); if (null == obj) { System.out.println(url); // 如果session中不存在登录者实体,则弹出框提示重新登录 // 设置request和response的字符集,防止乱码 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); String loginPage = "...."; StringBuilder builder = new StringBuilder(); builder.append("<script type=\"text/javascript\">"); builder.append("alert('网页过期,请重新登录!');"); builder.append("window.top.location.href='"); builder.append(loginPage); builder.append("';"); builder.append("</script>"); out.print(builder.toString()); // 如果session中存在登录者实体,则继续 filterChain.doFilter(request, response); } else { // 如果session中存在登录者实体,则继续 filterChain.doFilter(request, response); } } else { // 如果不执行过滤,则继续 filterChain.doFilter(request, response); } } else { // 如果不是后台管理页面 filterChain.doFilter(request, response); } } }