java实现拦截器

来源:互联网 发布:可变利益实体 知乎 编辑:程序博客网 时间:2024/06/05 08:45

1.web.xml配置

<!-- 用户登录拦截器 --><filter><filter-name>loginfilter</filter-name><filter-class>com.LoginFilter</filter-class></filter><filter-mapping><filter-name>loginfilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

2.Filter编写

package com.parma.electric.core.interceptor;import java.io.IOException;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.Map.Entry;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 org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * 用户登录拦截器 * @author PhilShen * */public class LoginFilter implements Filter {private static Logger LOGGER = LoggerFactory.getLogger(LoginFilter.class);@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) request;String requestURI = req.getRequestURI();if (LOGGER.isDebugEnabled()) {String params = "";Map<String, String[]> parameterMap = req.getParameterMap();for (Entry<String, String[]> entry : parameterMap.entrySet()) {params += entry.getKey() + ":" + Arrays.toString(entry.getValue());}LOGGER.debug("请求url:{} 参数:{}", req.getRequestURI(), params);}if (requestURI.endsWith("login.jsp") == false && requestURI.endsWith(".jsp")) {String str = (String) req.getSession().getAttribute("isLogin");if (str == null) {HttpServletResponse resp = (HttpServletResponse) response;resp.sendRedirect("login.jsp");return;}}chain.doFilter(request, response);}@Overridepublic void init(FilterConfig arg0) throws ServletException {}}