Spring控制器设置问题?

时间:2010-02-04 20:46:43

标签: java spring java-ee spring-mvc

我使用Spring MVC开发Java webapp。我有如下设置:网站的2个页面负责呈现类似的内容。其中一个页面只是略微不同地呈现项目(因此需要不同的视图),并且数据略有不同(限制查询而不是拉动所有项目)。

我的问题是:最好的方法是实现2个独立的控制器来处理这些页面,还是使用单个控制器会更好?如果答案是使用单个控制器,我如何从控制器内部找出请求来自哪个页面(以便我可以调用相应的服务和视图)?感谢

2 个答案:

答案 0 :(得分:3)

使用Spring 2.5+ annotated controllers,拥有一个控制器或两个控制器之间的区别并不是特别相关。

例如,假设你有一个这样的控制器类:

@Controller
public class MyController {

   @RequestMapping ("/pageA");
   public String handlePageA() {
      .. do stuff
   }

   @RequestMapping ("/pageB");
   public String handlePageB() {
      .. do stuff
   }
}

这应该是显而易见的。您可以获得一个控制器的好处,使用两个处理程序方法,每个“页面”一个。

确实没有理由再使用2.5之前的控制器了。您可以将新样式与旧样式一起使用,因此即使是旧版2.5之前的应用程序也可以在升级后使用新样式。

答案 1 :(得分:0)

您可以通过不同方式解决问题。
1.您可以传递一个特殊的参数来帮助您决定要渲染的视图。按照这种方式,您需要使用一个额外的参数编写单个控制器方法。
2.您可以将像db查询这样的通用逻辑提取到一个单独的方法中,然后在两个控制器方法中使用它,从而消除了大部分代码重复。 3.这可能不适用于您,因为您使用的两个视图都是HTML,但仅为了提供信息,您可以使用内容协商解析器,可以使用内容协商来编写一个控制器根据内容类型执行不同的视图/呈现。