代码之家  ›  专栏  ›  技术社区  ›  Shamik

用于传统JavaEE项目的自定义Web MVC

  •  1
  • Shamik  · 技术社区  · 15 年前

    我正在为一个项目创建自己的自定义MVC Web框架。这个项目有非常古老的代码库,其中一个JSP页面直接向另一个JSP提交表单,而路径也是硬编码的。现在这是一个大项目,放置Struts或JSF需要相当长的时间。 因此,我的建议是构建一个小的定制MVC框架,并将许多现有的页面流转换成它,同时鼓励他们使用这个新的MVC框架开发新的应用程序。

    我想和大家一起回顾一下这是否有意义,或者我们应该直接使用标准的MVC框架。

    我的主意

    1. Create one front controller servlet which will have URL pattern like /*.sm
    2. This servlet reads one config file and creates a map whose key is requestedURI and value is the class name of the command bean.
    3. upon intercepting any action request it reads the parameter map (request.getParameterMap()). This servlet refers the already built map, understand whose command bean is to be invoked? Creates an instance of this command bean.
    4. pass the parameter map to this command bean and calls execute method.
    5. if any exception is found, front controller servlet forwards the request to one global error page
    6. if everything is fine, it then forwards the request to the expected URI (by removong .sm and replace it with .jsp)
    

    你认为我在这里遗漏了什么吗?我知道我可以通过在配置文件中提供每个请求页的错误页来让它更花哨一些,但是这些也可以稍后完成。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Daff    15 年前

    我认为你最终会重新设计你自己的MVC框架。我知道这很有诱惑力,因为您不必习惯新的API,而是创建自己的API,您可以更容易地将其适应特定的用例。但由于它似乎是一个长期使用的应用程序,因此您必须考虑这样一个事实,即您自己的框架(现在可能是最先进的)也将在几年内成为遗产。

    这就是适应流行框架的方法。新框架的创建者通常也希望其他人移动,因此他们将(或应该)提供轻松的集成或迁移选项,而不是他们认为做得更好的框架(Spring是一个很好的例子,因为它可以与现有Struts应用程序无缝集成,并且您可以逐步移动应用程序而不必把旧的扔进垃圾桶)。此外,大多数当前的框架都是非常通用的(有时这可能是一个问题,因为它们需要更多的时间进入其中),并且可以适应几乎所有的用例。

    因此,我建议您仔细检查现有的解决方案(您也可以从它们的设计决策和错误中学到很多东西),只有当它们都不符合您的要求时,才开始创建自己的解决方案。