java - 用于遗留 Java EE 项目的自定义 Web MVC

标签 java model-view-controller jsp servlets

我正在为一个项目创建我自己的自定义 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)

你认为我在这里遗漏了什么吗?我知道我可以通过在配置文件中为每个请求页面提供错误页面来使其变得更奇特,但这些也可以稍后完成。

最佳答案

我认为您最终将重新发明轮子,推出自己的 MVC 框架。我知道创建自己的 API 很诱人,因为您不必习惯新的 API,而是创建自己的 API,并且可以更轻松地使其适应您的特定用例。但由于它似乎是一个生命周期很长的应用程序,因此您必须考虑这样一个事实:您自己的框架(现在可能是最先进的)也将在几年后成为遗产。

这就是采用流行框架之一派上用场的地方。新框架的创建者通常希望其他框架也迁移,因此他们将(或应该)提供简单的集成或迁移选项,远离他们认为做得更好的框架(Spring 是一个很好的例子,因为它例如与现有框架无缝集成) Struts 应用程序,您可以逐步移动您的应用程序,而无需将旧应用程序放入垃圾箱)。此外,大多数当前的框架都非常通用(这有时可能是一个问题,因为它们需要更多时间来了解)并且可以适应几乎所有用例。

因此,我建议仔细审查现有的解决方案(您也可以从他们的设计决策和错误中学到很多东西),只有在没有一个符合您的要求时才开始制作自己的解决方案。

关于java - 用于遗留 Java EE 项目的自定义 Web MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2103243/

相关文章:

java - Android/Java 正则表达式从子字符串中删除多余的零

java - 比较两个文件中的每一行

java - c++ "new"关键字与 java 的比较

function - Golang MVC结构

java - 如何将数据从 jsp 页面插入 mysql 数据库并从 Eclipse 内部对该表运行查询?

java - jsp 重定向不起作用

java - 使用编译时环境变量配置 RestApplicationPath

c# - 在网站的子文件夹中托管一个 mvc web api 应用程序

model-view-controller - MVC 模型对象、域对象和 DTO 之间有什么区别

javascript - 表标题上的蒲公英数据表复选框