我的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,因为它是政府中使用的既定应用程序。
答案 0 :(得分:4)
在<url-pattern>
中使用通配符时,默认情况下控制器名称对应于模式的通配符部分。
因此,您可以将控制器重命名为/index
,或将alwaysUseFullPath
的{{1}}属性设置为HandlerMapping
。