0

我正在处理的当前应用程序是 2003 年的传统 J2EE 应用程序!具有基于 JSP 的前端,以及一些常见的服务层(Auth、DAO 等)。

麻烦的是,前端是一团糟。没有 MVC,没有模板,什么都没有。多年来,开发人员一直将代码直接写入 JSP(我的意思是大量 Java 代码),并且在这些块中的某个时刻,控制流传递到服务层。阅读和调试很痛苦。

我正在为这个应用程序编写新功能,并且必须以一种相当不显眼的方式来完成它。通常不鼓励更改 xml 配置或类路径设置等的任何内容。

我的问题是:除了 JSP 作为应用程序的入口点之外什么都没有,如何在这些约束下最好地编写最干净的代码?

我正在制作 ajaxian 模块(项目 svn 中已经有 jQuery),所以我的 JavaScript 和 JSP 通常如下所示:

JavaScript:

jsAjaxCall({
    url: 'myActionURL.jsp',
    method: 'post',
    params: {},
    success: function(data){
    },
    failure: function(data){
    }
});

myActionURL.jsp

<%
    //entry into server tiers
    SomeEntryPointClass entry = new SomeEntryPointClass(request);
    String responseString = entry.doYourJob();
    PrintWriter out = response.getWriter();
    out.print(responseString);
    out.flush();
%>

问题:

  1. 这个想法是让 JSP 中的 Java 代码保持在绝对最低限度,并尽快将请求对象移交给一个前端(命名它是什么东西!)对象。考虑到限制,这是一种合理正确的方法吗?
  2. 我可以做哪些额外的事情来保持整洁和井井有条?(我已经推出了我自己的类,用于将请求参数绑定到域对象,所以这也是一个不错的优点)。
  3. 在这种情况下如何进行无痛表单验证?我错过了 Spring MVC 的验证!简直无法想象除了 JSP 之外的所有手动 hoopla 以及路由和绑定混乱!:(
4

1 回答 1

1

好消息是jsp的编译成servlet。这当然是个好消息,因为它将允许您以通常使用 servlet 的方式使用 jsp。

将您的 java 用法保持在 jsp 中并传递给辅助对象(不能让自己说正面)是正确的调用,因为:

1) jsp 文件的大小有一个硬性限制

2) 从 jsps 编写单元测试比纯类更难

3) 大多数 IDE 不会为嵌入在 jsp 中的 java 提供与普通类相同级别的代码编写支持

4)调试会更容易

至于您的第二个问题,如果它是 jsp 2,您可以考虑使用自定义标签,它们可能是组织 jsp 繁重代码的有用方法。此外,我想如果你想全程使用 ajax 并且感觉很狡猾,你可以编写 jsp 页面来为你提供 Json 对象。有效地将您的 jsp 转换为前端服务。

至于第三个选项,我很抱歉,但你的系统听起来一点也不痛苦。使用 strut 或 jsr303 或 spring mvc 甚至新的 servlet 验证会有点痛苦。

当然,如果您编写了一个返回经过验证的 json 对象的验证 jsp(请参阅上面的建议),它可能会让您的生活更轻松一些。

祝你好运

于 2012-07-06T11:38:57.187 回答