当前位置: 代码迷 >> J2EE >> 用filter 干拦截器还要在别的地方配置么
  详细解决方案

用filter 干拦截器还要在别的地方配置么

热度:75   发布时间:2016-04-22 00:57:06.0
用filter 做拦截器还要在别的地方配置么
springmvc用filter 做拦截器还要在别的地方配置么
Java code
package com.bolo.examples;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 org.apache.commons.lang.StringUtils;import com.bolo.examples.base.entity.User;public class MyFilter implements Filter {    private static final String FILTERED_REQUEST = "@@session_context_filtered_request";    private static final String[] INHERENT_ESCAPE_URIS = { "/index.jsp",            "/index.html", "/login.jsp" };    public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {        if (request != null && request.getAttribute(FILTERED_REQUEST) != null) {            chain.doFilter(request, response);        } else {            request.setAttribute(FILTERED_REQUEST, Boolean.TRUE);            HttpServletRequest httpRequest = (HttpServletRequest) request;            User userContext = getSessionUser(httpRequest);            if (userContext == null    && !isURILogin(httpRequest.getRequestURI(), httpRequest)) {                String toUrl = httpRequest.getRequestURL().toString();                if (!StringUtils.isEmpty(httpRequest.getQueryString())) {                    toUrl += "?" + httpRequest.getQueryString();                }                httpRequest.getSession().setAttribute(LOGIN_TO_URL, toUrl);                request.getRequestDispatcher("/index.jsp").forward(request,response);                return;            }            chain.doFilter(request, response);        }    }    //@Override    public void init(FilterConfig filterConfig) throws ServletException {    }   /**    * 当前URI资源是否需要登录才能访问    * @param requestURI    * @param request    * @return    */    private boolean isURILogin(String requestURI, HttpServletRequest request) {        if (request.getContextPath().equalsIgnoreCase(requestURI)||(request.getContextPath() + "/").equalsIgnoreCase(requestURI))            return true;        for (String uri : INHERENT_ESCAPE_URIS) {            if (requestURI != null && requestURI.indexOf(uri) >= 0) {                return true;            }        }        return false;    }    protected User getSessionUser(HttpServletRequest request) {        return (User) request.getSession().getAttribute(USER_CONTEXT);    }    //@Override    public void destroy() {    }}


------解决方案--------------------
和配置普通的servlet差不多吧.你自己测试下能行没就知道了啊
------解决方案--------------------
编写完filter,需要在web.xml中进行配置,代码如下:
<filter>
<filter-name>myFilter</filter-name>
<filter-class>--此处为你编写的MyFilter路径--</filter-class>
</filter>

<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern> //若想进行细化过滤,使用/*;若只想对jsp页面进行过滤,则使用*.jsp;意思类推
</filter-mapping>
  相关解决方案