/** * http://auzll.iteye.com/ */ package com.gengweibo.web; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; 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 com.gengweibo.entity.Account; /** * @author auzll@msn.com * @since 2011-3-21 */ public class SessionFilter implements Filter { public void destroy() {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain filter) throws IOException, ServletException { String api = request.getParameter("api"); if (null == api) { String queryString = ((HttpServletRequest) request) .getQueryString(); if (queryString.length() > 0) { Pattern pattern = Pattern .compile("(\\?|&){0,1}api=(.*?)&{0,1}"); Matcher matcher = pattern.matcher(queryString); if (matcher.matches() && matcher.groupCount() >= 2) { api = matcher.group(2); } } } if (null != api && !"link".equalsIgnoreCase(api) && !"logout".equalsIgnoreCase(api) && !"flush".equalsIgnoreCase(api) && null == ((HttpServletRequest) request).getSession() .getAttribute(Account.ACCOUNT_SESSION_KEY)) { ((HttpServletResponse) response) .sendRedirect(((HttpServletRequest) request) .getContextPath() + "/error.jsp?desc=UnLogin"); return; } filter.doFilter(request, response); } public void init(FilterConfig config) throws ServletException {} }