Spring MVC - 在使用mvc:resources时将控制器映射到上下文根(/)

时间:2012-03-01 16:50:51

标签: java spring-mvc

上午,

将控制器映射到/(即localhost:8080 / someApp /将映射到@Controller(“/”))同时还使用mvc:resources

web.xml映射:

  <servlet-mapping>
    <servlet-name>springServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

MVC:资源

<mvc:resources mapping="/resources/**" location="/resources/" />

服务器正确加载页面,但是当我映射到资产时,即

<link type="text/css" rel="stylesheet" href="<c:url value="/resources/css/blueprint/print.css"/>" />

在Web浏览器中通过view-source单击css文件时,服务器响应将映射回索引页,而不是资源。让我相信它与servlet映射有关。

任何帮助都会很棒!

谢谢!

修改 忘了提,如果我绑定控制器说:

@Controller("/pages")

一切正常,只是希望上下文根能够正确响应。

2 个答案:

答案 0 :(得分:9)

@Controller("/)

@RequestMapping("/")

不是一回事。

由于@RequestMapping可能放在类级别,因此将映射放在类上会产生预期的效果。

示例:

@Controller
@RequestMapping("/")
public class RootController
{

  @RequestMapping(method=RequestMethod.GET)
  public String index()
  {
    return "index";
  }

}

这将正常工作,也适用于mvc:resources bean。

答案 1 :(得分:-1)

将此行放在mvc-dispatcher-servlet.xml

<bean name="/"
      class="com.springapp.mvc.HelloController" />

它会起作用。

在web.xml中进行映射

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>