当前位置: 代码迷 >> Java Web开发 >> spring-mvc 注解的有关问题
  详细解决方案

spring-mvc 注解的有关问题

热度:10066   发布时间:2013-02-25 21:20:41.0
spring-mvc 注解的问题
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
类似这样
  相关解决方案