cari

Rumah  >  Soal Jawab  >  teks badan

java - springmvc mvc:exclude-mapping 不起作用

在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;
        }
    }
天蓬老师天蓬老师2769 hari yang lalu953

membalas semua(3)saya akan balas

  • 大家讲道理

    大家讲道理2017-04-18 10:25:23

    Alasannya diketahui hari ini ialah paparan yang dikembalikan telah dipintas oleh pemintas dan diubah hala sepanjang masa. Cuma ubah suai web.xml

    Berikut adalah untuk mengkonfigurasi semua permintaan untuk dikendalikan oleh springmvc

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

    Sumber statik dikonfigurasikan di bawah

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

    sepadan dengan <mvc:default-servlet-handler/>
    default-servlet-handler dalam springmvc.xml akan mentakrifkan DefaultServletHttpRequestHandler dalam konteks SpringMVC, yang akan menyaring permintaan yang memasuki DispatcherServlet Jika ia didapati sebagai permintaan yang tidak dipetakan, ia akan Permintaan akan dikendalikan oleh Servlet lalai pelayan aplikasi WEB Jika ia bukan permintaan sumber statik, DispatcherServlet akan terus mengendalikannya

    .

    Secara amnya, nama Servlet lalai pelayan aplikasi WEB adalah lalai Jika nama Servlet lalai pelayan WEB yang digunakan bukan lalai, anda perlu menyatakannya secara eksplisit melalui atribut nama-servlet lalai

    .

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 10:25:23

    Sama ada pemintas anda mewarisi kelas HandlerInterceptorAdapter dan mengatasi kaedah tersebut.
    Mungkin anda boleh mencipta corak biasa tanpa pemintasan, seperti berikut:


    Kemudian buat pertimbangan tetap dalam kaedah pemintasan praHandle

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 10:25:23

    <mvc:exclude-mapping path="/login" /> saya salah tulis

    balas
    0
  • Batalbalas