在已经凌乱的应用程序中添加新代码

时间:2012-07-06 11:08:15

标签: java jsp servlets

我正在研究的当前应用程序是2003年的传统J2EE应用程序,带有基于JSP的前端,以及一些通常可疑的服务层(Auth,DAO等)。

麻烦的是,前端很乱。没有MVC,没有模板,没有任何东西。多年来,开发人员已将代码直接编写到JSP中(我的意思是大量的Java代码),并且在这些块中的某些时候,控制流会传递到服务层。阅读和调试很痛苦。

我正在为此应用程序编写新功能,并且必须以相当不引人注目的方式执行此操作。通常不鼓励任何改变xml配置或类路径设置等的事情。

我的问题是:只提供JSP作为应用程序的入口点,如何最好地在这些constaints下编写最干净的代码?

我正在创建ajaxian模块(jQuery已经在项目svn中可用),所以我的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. 我们的想法是将Java代码保存在JSP中,绝对最低限度, 并将请求对象切换到前面(这是什么东西 命名它!)尽快对象。这是否合理正确 给出约束的方法?
  2. 我可以做些什么来保持干净 组织得好吗? (我已经推出了自己的绑定类 请求域对象的参数,所以这也是一个不错的选择。
  3. 如何在这样的情况下进行无痛表格验证?我 缺少Spring MVC的验证!只是无法想象所有的手动喧嚣和路由和绑定混乱只有JSPs! :(

1 个答案:

答案 0 :(得分:1)

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

将你的java用法保存在jsp中并传递给helper对象(无法让自己说出前面的对话)是正确的调用:

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

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

3)大多数IDE都不会为jsp中嵌入的java提供相同级别的代码编写支持,而这些代码正常用于普通类

4)调试会更容易

至于你的第二个问题,如果它是jsp 2你可以看看使用自定义标签,它们可以是组织jsp重代码的有用方法。 另外我想如果你想在整个过程中使用ajax并且感觉很狡猾,你可以编写专门为你提供Json对象的jsp页面。有效地将您的jsp转变为前端服务。

关于第三种选择,我很抱歉,但你的系统听起来不过是无痛的。 使用strut或jsr303或spring mvc甚至新的servlet验证都会有点痛苦。

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

祝你好运