1. 程式人生 > >web 專案無法訪問html,但是可以訪問jsp

web 專案無法訪問html,但是可以訪問jsp

問題簡述:可以訪問以.jsp為字尾的頁面,不能訪問.html為字尾的頁面

檢查web.xml中的【url-pattern】的設定

  <servlet>
  	<servlet-name>spring-mvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 指定路徑 -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:spring-mvc.xml</param-value>
  	</init-param>
  	<!-- 隨spring啟動而啟動 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
 
  <!-- Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>spring-mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

原因:【/】:它會攔截所有的url,如:/test,/test1.html,/1.jpg……,但是除了以jsp結尾的url不會交給前端控制器。所以導致了不能訪問html檔案。對於*.jsp,由於servlet容器中內建了jspServlet,所以不會被/攔截

解決方法:

在上述程式碼前插入以下程式碼,那麼符合相應的【url-pattern】規則的訪問,就會由預設servlet處理。

<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>
 
    <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>*.html</url-pattern> 
    </servlet-mapping>