我正在研究的当前应用程序是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();
%>
问题:
答案 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(参见上面的建议),它可能会让你的生活变得更轻松。
祝你好运