龙空技术网

SpringMVC访问静态资源

知了堂 96

前言:

此刻大家对“aspnetmvc访问html”大概比较关怀,同学们都需要学习一些“aspnetmvc访问html”的相关文章。那么小编也在网络上搜集了一些对于“aspnetmvc访问html””的相关内容,希望兄弟们能喜欢,咱们一起来了解一下吧!

有些时候我们在使用SpringMVC的时候造成无法访问静态资源文件(如:html,js,css,image等等)。其主要的原因出在web.xml文件我们设置SpringMVC前端控制器的映射路径

<servlet>        <servlet-name>spmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc-web.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>            <servlet-mapping>        <servlet-name>spmvc</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>

上面代码中的<url-pattern>/</url-pattern>相当于拦截项目中所有请求,这样就造成无法访问静态资源文件

解决方法一:在springmvc-web.xml中添加资源映射

<mvc:resources mapping="/resources/**" location="/resources/" /><mvc:resources mapping="/images/**" location="/images/" /><mvc:resources mapping="/js/**" location="/js/" />
mapping:映射,两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/)location:本地资源路径,注意必须是webapp根目录下的路径

这样我们就可以直接访问该文件夹下的静态内容了,如下路径:

WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

当然,你非要放在WEB-INF中,则必须修改resources映射,配置文件中代码如下

<resources mapping="/js/**" location="/WEB-INF/js/" />

解决办法二:使用默认的静态资源处理Servlet处理静态资源(涉及spring-mvc.xml, web.xml)

在spring-mvc.xml中启用默认Servlet

<mvc:default-servlet-handler/>
修改web.xml文件,且下面的代码必须在DispatcherServlet的前面
<servlet-mapping>        <servlet-name>default</servlet-name>        <url-pattern>*.js</url-pattern>        <url-pattern>*.css</url-pattern>        <url-pattern>/assets/*"</url-pattern>        <url-pattern>/images/*</url-pattern>    </servlet-mapping>

解决办法三:将DispatcherServlet的URL映射改成*.do的形式,这样在访问静态资源文件就不会被拦截到

<servlet>    <servlet-name>spmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:springmvc-web.xml</param-value>     </init-param>     <load-on-startup>1</load-on-startup></servlet>        <servlet-mapping>     <servlet-name>spmvc</servlet-name>     <url-pattern>*.do</url-pattern></servlet-mapping>

原创:知了堂Java培训讲师-子墨

原文链接:SpringMVC访问静态资源

标签: #aspnetmvc访问html