2012-02-05 35 views
0

我想学习Spring MVC的基础知识,并有决心控制器与方式URL的问题。我正在用这个tutorial作为跳板。我能得到它在Tomcat微操作和URL /context/welcome.htm解析为这样的注释控制器:使用配置DispatcherServlet会为REST风格的URL

@Controller 
@RequestMapping("/welcome") 
public class HelloWorldController 

的web.xml文件中配置

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

我会喜欢能够输入/上下文/欢迎和解决HelloWorldController,但这不起作用。我试图设置*,但这会导致servlet无法加载。如果有人可以解释为什么这个URL模式是无效的,以及如何配置该控制器的所有请求,如/欢迎工作和/欢迎而不是只是那些结尾的的* .htm,将不胜感激。在ASP.NET MVC中,提供了一个路由页面来调试这种控制器映射问题。用Spring做这件事的最好方法是什么?

回答

5

试试这个:

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

模式/ *会把一切都通过你的servlet。

模式/让你的servlet默认的servlet的应用程序,这意味着它会不会有另一个精确匹配每个模式回暖。

+0

/提示,现在事情按预期工作。 – dcompiled 2012-02-25 02:25:05

1

使用您现有的代码,您可以通过将请求映射更改为RequestMapping(“/ welcome.htm”)来解决此问题,因为您已在您的servlet映射中创建了.htm。它的所有愿望,我们的应用程序网址应该如何。制作/也将工作的其他建议,所不同的是/ *让你打网址的任何图案,但的* .htm限制从其他模式来解决。

我不认为JS和CSS会因为这个问题,因为js和css不依赖于Spring分发程序Servlet。可以嵌入js和css,而不必使用servlet。考虑一个独立的HTML有js和css,它所有的需要是服务器的上下文而不是servlet