Spring MVC:将多个URL映射到同一个控制器

时间:2010-10-10 00:19:36

标签: java spring spring-mvc

我有20多个表格,它们是从同一页面链接的。某些表单共享相同的控制器,而其他表单使用自己的控制器例如,表单ABC使用DefaultController,而表单D使用ControllerD

我想要实现的是以一致的方式将URL映射到每个表单。

因此,理想情况下,链接页面如下所示:

  • 这个

    <a href="/formA.html">Form A</a>
    <a href="/formB.html">Form B</a>
    <a href="/formC.html">Form C</a>
    <a href="/formD.html">Form D</a>
    
  • 或者:

    <a href="/form.html?name=A">Form A</a>
    <a href="/form.html?name=B">Form B</a>
    <a href="/form.html?name=C">Form C</a>
    <a href="/form.html?name=D">Form D</a>
    

问题是如何将每个URL映射到适当的控制器。使用第一个网址格式,您可以将formD.html映射到ControllerD,但不确定如何将form[A|B|C].html映射到DefaultController。使用第二个URL模式,我甚至不知道从哪里开始...

有人做过这样的事吗?

1 个答案:

答案 0 :(得分:146)

由于似乎没有人在这里提出完整的答案:

@RequestMapping注释可以为其“value”参数获取数组。要使用第一个模式在控制器级别映射,请使用:

@Controller
@RequestMapping(value={"/formA.html", "/formB.html", "/formC.html"})
public class ControllerA {

}

然后:

@Controller
@RequestMapping(value="/formD.html")
public class ControllerD {

}