spring mvc訪問html頁面404報錯解決


<servlet>
<servlet-name>context</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>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>context</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

相比大家都對url-pattern 路徑/和/*都有所困擾。
網上說,/不對(.jsp,.html等)進行攔截。/*對(.jsp,.html等)進行攔截。其實不是這樣的。這兩個都會進行攔截,只是不同點就是,
/路徑會先被Tomcat下web.xml里面的servlet攔截
/*規則會覆蓋所有默認的servlet,會將所有請求都攔截了下來

如果是請求的是html文件。配置成<url-pattern>/</url-pattern>會出現404 。如果是jsp則可以請求200
接下來看下tomcat web.xml文件。原因就是tomcat下的web.xml配置了.jsp文件。所以可以正常訪問。
    <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- The mappings for the JSP servlet -->
    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.jspx</url-pattern>
    
    </servlet-mapping>

解決方案:
1.那么對於html文件咋辦?可以在自己項目下web.xml加入
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>
2.或者在tomcat下web.xml加入 <url-pattern>*.html</url-pattern>不建議這樣做,不靈活

3.還可以在springmvc.xml中針對資源文件加入以下,也可以解決
<mvc:default-servlet-handler/>

原文鏈接:https://blog.csdn.net/saygood999/article/details/86291249


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM