web.xml配置如下
- XML code
<servlet> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/appServlet/servlet-context.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
模版是velocity 类似这样的
- XML code
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
现在的问题是
我在一个方法上配置如下
- Java code
@RequestMapping(value="/trend/test", method=RequestMethod.GET) public String test(Model model) { // model.addAttribute("foo", "bar"); // model.addAttribute("fruit", "apple"); return "index"; }
转向到/WEB-INF/views/index.vm上去了
这个页面时找到了,但是其他的图片,css等都通过/trend 去转向 。所以这个页面上的图片,还有嵌入的其他的vm都无法找到
比如index.vm这个页面引用了
- HTML code
<iframe width="100%" .... src="velocity/layout/header.vm"/>
就会从/trend/velocity/layout/header.vm去找 。
请问这样的问题怎么解决??
------解决方案--------------------------------------------------------
/trend/test
这个是你的访问路径
forward出来的路径也是这个
用相对路径的访问得到的css,js当然也是这个路径的
比如引入a.css,b.js
那css和js的路径是
/trend/a.css /trend/b.js
但是由于你直接把/作为servlet拦截路径,所以这2个访问实际也被spring截取了,并且找不到相应的转发请求
解决办法是在spring中配置一个静态映射
<mvc:resources location="/static/" mapping="/static/**"/>
指定/static/下的文件不作为spring-mvc的请求处理
在jsp中载入css和js的代码修改为相对或绝对路径
../static/a.css ../static/b.js
或者
项目/static/a.css 项目/static/b.js
类似这样