使用Struts或自定义控制器

时间:2011-08-25 01:58:37

标签: model-view-controller struts2 controller scalability

我正在开发一个Ajax密集的应用程序,用户永远不会从同一页面导航。但是,对服务器进行数十种不同类型的数据调用,我相信将来会添加这个应用程序。对于这些调用中的每一个,我都需要检查以确保用户(A)已登录(B)对其请求具有足够的权限,然后使用hibernate填充bean,然后将其转换为JSON,XML或错误/登录消息。

我知道这可能与Struts有关,但是当我可以创建一个概念上看起来像这样的自定义servlet控制器时,使用它有什么好处:

Controller extends Servlet
{
    status = checkLogin()
    if(status == SUCCESS)
        status = checkPermissions()
    if(status == SUCCESS)
        status = validateCommand()
    if(status == SUCCESS)
        bean = factory()
    if(status == LOGIN)
        promptLogin()
    else if(status == ERROR)
        toError(status)
    else if(isJson)
        toJson(bean)
    else
        toXml(bean)
}

我觉得这可以达到我的目的,而且更简单/更小但我不是Java专家,所以我很欣赏这方面的一些建议。我的主要优先事项是可扩展性和维护。也许我应该使用更好的框架?提前谢谢!

2 个答案:

答案 0 :(得分:0)

Alex,使用任何框架的想法是struts2 / spring mvc是如此带走公共代码并让开发人员专注于业务逻辑就像你和未来一样,你提到它可以增长复杂的部分,所以它总是更好地使用任何现有的框架,让他们处理请求流程周期,你专注于业务逻辑

另外,当车轮已经开发并经过许多其他人的测试时,没有任何好处可以重新发明车轮。 正如您所说,您的主要目标是可扩展性和维护,所以我认为最好使用一些众所周知的框架来实现这个目标

答案 1 :(得分:0)

您的用例已经听起来很复杂,您可能会从框架中受益,因为它明确表示您有以下要求:

  • 安全
  • 多个用户操作
  • JSON / Payload编组

为了解决您的具体问题,Struts2可以使用Interceptors(对于安全性),Actions(S2中MVC的关键)和Plugins(以及{3}}轻松满足所有这些要求(为您的JSON响应)。但是,如果您从头开始开发此应用程序,并且您有一些技术上的余地,那么肯定还有其他可行的选项,例如JSF(带有PrimeFaces组件库),Wicket等等。