如何在Spring MVC servlet映射URL中使用通配符?

时间:2011-09-13 06:10:28

标签: spring-mvc

我的web.xml中设置了一个控制器:

<servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>/console/index</url-pattern>
</servlet-mapping>

在controller-servlet.xml中定义的匹配bean:

<bean name="/console/index" class="com.package.OverviewController"/>

哪个正常 - 当我得到“/ appName / console / index”时,它表现得像我期望的那样。但是当我将web.xml更改为:

<servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>controller</servlet-name>
    <url-pattern>/console/*</url-pattern>
</servlet-mapping>

它不再起作用,给我以下例外:

WARN (org.springframework.web.servlet.PageNotFound) - No mapping for [/appName/console/index] in DispatcherServlet with name 'controller' 

所以我的问题是如何在servlet映射中使用通配符,以便不同的URL都通过单个DispatcherServlet但可能会转到几个控制器bean之一?

仅供参考:我坚持使用Spring 2.0,因为它是政府中使用的既定应用程序。

1 个答案:

答案 0 :(得分:4)

<url-pattern>中使用通配符时,默认情况下控制器名称对应于模式的通配符部分。

因此,您可以将控制器重命名为/index,或将alwaysUseFullPath的{​​{1}}属性设置为HandlerMapping