问题背景
自己做SpringMVC项目的时候,希望通过login.jsp向resume.jsp传递参数name,resume.jsp是由我本地html生成的,结果发现页面中的css以及图片等静态资源都没有被访问到。上网看了大神的解决方案,总结就以下三种。
- 修改web.xml配置
因为我之前的设置,将所有的请求均拦截下来,然后交由对应的controller处理。设置如下:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<!--拦截所有请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>
然而,因为css、js、图片等是静态资源,一般不会有专门的controller处理,这时需要告诉服务器静态资源不需要拦截。设置如下:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpeg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<!--拦截所有请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>
这样设置使得以.css、.jepg、.js结尾的请求交给Tomcat处理,而Tomcat就可以根据路径(一般使用相对路径)进行查询。这也是试验成功的做法,虽然是最麻烦的做法,但成功地访问到了图片和css。
- 修改dispatcher-servlet.xml配置
在dispatcher-servlet.xml中添加如下代码:
<mvc:resources mapping="/image/**" location="/image/"> </mvc:resources> <mvc:resources mapping="/css/**" location="/css/"> </mvc:resources>
这种做法相当于给静态资源请求分配特定的handler,当然并不是handler,只是告诉服务器去对应的location下查找对应的mapping。
我在使用这种做法时,发现访问映射…/login提示404错误,即意味着不能访问controller,这时需要在上述代码后添加:
<mvc:annotation-driven/>
这默认服务器会帮我们注册默认处理请求。
3.全部使用默认映射
在dispatcher-servlet.xml中添加:
<mvc:default-servlet-handler/>
这会使得所有的请求均以默认的方式处理,丧失了SpringMVC独特的restful风格。所以我建议还是使用前两种做法。
记录我的经验
拜拜┏(^0^)┛
来源:CSDN
作者:AdiosLhl
链接:https://blog.csdn.net/weixin_37947205/article/details/103890041