Spring-MVC:是否有可能为一个servlet映射提供两个url模式?

时间:2011-02-11 04:58:07

标签: java spring-mvc

我有.htm和.xml网址,我希望将其解析为WEB-INF文件夹中的.jsp文件。如何指定我希望相同的servlet同时处理* .htm和* .xml URL?

3 个答案:

答案 0 :(得分:7)

使用Spring 3.0

在同一个映射中添加多个url-pattern标签
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/<url-pattern>
    <url-pattern>*.htm</url-pattern>
    <url-pattern>*.html</url-pattern>
    <url-pattern>*.xml</url-pattern>
</servlet-mapping>

关于使控制器将它们解析为您希望的视图对象(.jsp),可以使用扩展控制器类并遵循特定命名约定的控制器来执行此操作,也可以使用注释驱动控制器。下面是注释驱动控制器的示例。

@Controller
public class Controller {

    @RequestMapping(value={"/","/index","/index.htm","index.html"})
    public ModelAndView indexHtml() {
        // RETURN VIEW (JSP) FOR HTM FILE
    }

    @RequestMapping(value="/index.xml")
    public ModelAndView indexXML() {
        // RETURN VIEW (JSP) FOR XML FILE
    }
}

答案 1 :(得分:3)

是的,你可以很好地做到这一点。

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

<servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.xml</url-pattern>
</servlet-mapping>

答案 2 :(得分:1)

我假设您正在讨论“web.xml”文件中的<servlet-mapping>元素。

答案是,您可以通过对同一<servlet-mapping>元素使用具有不同模式的两个<servlet>元素来进行(排序)。

请注意,这是Java EE Servlet规范的一项功能。相关的请求调度发生在Spring查看请求之前。