国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

詳解SpringMVC中設置靜態資源不被攔截的問題

2019-11-26 13:09:28
字體:
來源:轉載
供稿:網友

這兩天使用SpringMVC來做登錄,注冊的小demo,其中用到了springmvc攔截器對登錄操作進行攔截處理,并對url進行驗證。驗證通過則可以進行handler的處理,如果驗證不通過直接跳回或者重定向到指定的頁面。

但是在做這個操作的時候,遇到很大的一個問題就是項目demo中的靜態資源都會在每次請求中被攔截處理了!跳回頁面的時候,頁面就不再是想想中的呈現的樣子了。

以為我在springmvc.xml中已經配置了攔截器和靜態資源的配置卻還是出現這樣的結果,所以就又是看前段瀏覽器的設置,又是看css文件,js文件。最后才鎖定目標是靜態資源的問題,直接在web.xml中使用defaultServlet的方式才解決問題。

下面是我的攔截器代碼:

@Override public boolean preHandle(HttpServletRequest request,   HttpServletResponse response, Object handler) throws Exception {  String url=request.getRequestURI();  System.out.println(url);  String method=request.getMethod();   //判斷是否在做登錄操作  if(url.indexOf("/login")>=0&&method.equalsIgnoreCase("post")){    return true;  }     //判斷是否在做注冊操作     if(url.indexOf("/toAddUserPage")>=0){   return true;  }   //如果時登錄用戶則可以進行下一步操作 返回true  HttpSession session=request.getSession();  User user=(User) session.getAttribute("user");  if(user!=null){        //登錄之后不能使用登錄操作和注冊操作        if(url.indexOf("/toLogin")>=0||url.indexOf("/toAddUserPage")>=0){    request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);    return false;   }   return true;  }  //其他操作直接返回到登錄頁面  request.getRequestDispatcher("/WEB-INF/jsp/user/login.jsp").forward(request, response);  return false; } 

下面是我的springmvc的配置:

<!-- 可以掃描controller、service、這里讓掃描controller,指定controller的包 -->  <context:component-scan base-package="com.ipro.shopping.controller"/>   <!-- 使用 注解驅動可以加載處理器適配器和處理器映射以及json解釋器不用單獨再添加處理器適配器和核處理器映射的配置 -->  <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>    <!-- 靜態資源解析包括 :js、css、img、 -->  <!-- <MVC:RESOURCES LOCATION="/" MAPPING="**.HTML"/>  <MVC:RESOURCES LOCATION="/" MAPPING="**.JS"/>  <MVC:RESOURCES LOCATION="/" MAPPING="**.CSS"/>  <MVC:RESOURCES LOCATION="/" MAPPING="**.PNG"/>  <MVC:RESOURCES LOCATION="/" MAPPING="**.GIF"/>  <MVC:RESOURCES LOCATION="/" MAPPING="**.JPG"/> -->    <!-- 配置攔截器 -->  <mvc:interceptors>   <mvc:interceptor>    <mvc:mapping path="/**"/>    <bean class="com.ipro.shopping.interceptor.LoginInterceptor"></bean>   </mvc:interceptor>  </mvc:interceptors> 

我把所有的靜態資源都設置成怎樣的形式,可結果還是無法返回正確的答案。

下面是配置web.xml之后的文件:

<servlet-mapping>   <servlet-name>default</servlet-name>   <url-pattern>*.jpg</url-pattern>  </servlet-mapping>  <servlet-mapping>   <servlet-name>default</servlet-name>   <url-pattern>*.gif</url-pattern>  </servlet-mapping>  <servlet-mapping>   <servlet-name>default</servlet-name>   <url-pattern>*.js</url-pattern>  </servlet-mapping>  <servlet-mapping>   <servlet-name>default</servlet-name>   <url-pattern>*.css</url-pattern>  </servlet-mapping>  <servlet-mapping>   <servlet-name>default</servlet-name>   <url-pattern>*.png</url-pattern>  </servlet-mapping>    <!-- springmvc前端控制器 -->  <servlet>   <servlet-name>springmvc</servlet-name>   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>   <!-- contextConfigLocation配置springmvc加載的配置文件 (配置處理器映射器、適配器等等) 如果不配置contextConfigLocation,    默認加載的是/WEB-INF/servlet名稱-serlvet.xml(springmvc-servlet.xml) -->   <init-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:springmvc.xml</param-value>   </init-param>  </servlet> 

注意的是我們配置defaultServlet一定要配置到springmvc的前端控制器(DispatcherServlet)前面才會生效。

上面是我在做登錄驗證的時候用到的,僅供參考。目前這個問題只做了一種方案,網上說的有三種可以解決的方案,第一種就是我上面提到的這種

第二種就是在springmvc中配置的方式,只不過我配置的沒有成功。另外一種就是也是使用defaultServlet使用注解的方式配置。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻阳| 平江县| 临颍县| 兴宁市| 辽源市| 九江县| 彩票| 隆回县| 临湘市| 巴塘县| 乌兰察布市| 哈密市| 大安市| 清水河县| 中西区| 科尔| 绩溪县| 稻城县| 洪湖市| 濉溪县| 久治县| 张家港市| 荆州市| 边坝县| 萍乡市| 江西省| 玉树县| 桓仁| 加查县| 深水埗区| 怀柔区| 如皋市| 葵青区| 万荣县| 老河口市| 古交市| 克山县| 昌宁县| 江阴市| 彰化县| 金寨县|