java - springmvc mvc:exclude-mapping 不起作用
天蓬老师
天蓬老师 2017-04-18 10:23:23
0
3
947

在springmvc配置文件中加入下面的代码,路由为"/login"的url还是会被拦截到拦截器中

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/login" />
            <bean class="com.stooges.common.interceptor.LoginInterceptor">             </bean>
        </mvc:interceptor>
    </mvc:interceptors>

拦截器LoginInterceptor

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if (session.getAttribute(Constants.SESS_MANAGER) == null) {
            if (request.getHeader("x-requested-with") != null
                    && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //如果是ajax请求响应头会有,x-requested-with
                response.setHeader("sessionstatus", "timeout");//在响应头设置session状态
                response.setHeader("redirectUrl", request.getContextPath() + "/login");
            }else{
                String path = request.getRequestURI();////原页面

                //根据方法不同拼接参数
                String queryString="";
                if(request.getMethod().equals("GET")){
                    queryString = request.getQueryString();
                }else{
                    Enumeration<String> params=request.getParameterNames();
                    while(params.hasMoreElements()){
                        String paraName=params.nextElement();
                        queryString+=paraName+"="+request.getParameter(paraName)+"&";
                    }
                }
                if (queryString!=null && (!queryString.equals(""))) {
                    path+="?"+queryString;
                }
                response.sendRedirect(request.getContextPath() + "/login");
            }
            return false;
        }else{
            return true;
        }
    }
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

répondre à tous(3)
大家讲道理

La raison découverte aujourd'hui est que la vue renvoyée a été interceptée par l'intercepteur et redirigée à tout moment. Modifiez simplement web.xml

.

Ce qui suit consiste à configurer toutes les requêtes à traiter par springmvc

  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

Ressources statiques configurées ci-dessous

  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/dist/*</url-pattern>
    <url-pattern>/WEB-INF/view/*</url-pattern>
  </servlet-mapping>

correspond à <mvc:default-servlet-handler/>
default-servlet-handler dans springmvc.xml définira un DefaultServletHttpRequestHandler dans le contexte SpringMVC, qui filtrera les requêtes entrant dans le DispatcherServlet. S'il s'avère qu'il s'agit d'une requête non mappée, elle le sera. La requête sera gérée par le Servlet par défaut du serveur d'application WEB. S'il ne s'agit pas d'une requête de ressource statique, le DispatcherServlet continuera à la gérer

.

Généralement, le nom du servlet par défaut d'un serveur d'application WEB est default. Si le nom du servlet par défaut du serveur WEB utilisé n'est pas celui par défaut, vous devez le spécifier explicitement via l'attribut default-servlet-name

左手右手慢动作

Si votre intercepteur hérite de la classe HandlerInterceptorAdapter et remplace la méthode.
Peut-être pouvez-vous créer un motif régulier sans interception, comme suit :


Ensuite, faites un jugement régulier dans la méthode d'interception preHandle

洪涛

<mvc:exclude-mapping path="/login" /> Je l'ai mal écrit

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal