struts采用MVC体系框架,将view与model部分分开,赋予web应用开发以新的内涵。但是,使用struts技术后,大大小小的文件数目激增。给管理及维护带来了不小的挑战。一方面要享受struts的开发效率,另一方面也要考虑到易于维护。
在struts中,有两个突出的关键词:结构和层次。一定要做到:结构严谨、层次分明。如果抓不住这两点,你的开发一定是很失败的。
虽然大大小小的文件数目激增,但每个文件都各司其职,本来无可厚非。不要刻意在乎文件数目的多少(因为这只是表面现象),而要重点关注结构是否合理,层次是否明晰。如果学会换位思考,你会发现:文件数目激增是使用struts技术必须付出的成本;而如果在结构和层次上面下了工夫,这个缺点根本就不成其为缺点了。
那么应该怎样在结构和层次上下工夫呢?身为菜鸟的笔者目前想到了两个很菜的办法:
(一)、分门别类:
将服务于同一种功能的相同类型文件放在同一个子目录里。每一子目录代表一种功能;减少不同目录之间的交叉访问。子目录中又包含子目录,形成多层目录结构。可以将newArticleAction.java与newArticleForm.java放在一个名为articles.newarticle的包中,与其它的java类区分开。可以将与这两个java类相关的所有jsp文件统统放在/WEB-INF/articles/newarticle/下面。
(二)、形式统一:
以上面的两个java类为例子:
实际名称: 在struts-config.xml中的虚拟名称:
newArticleAction.java new_article_action
newArticleForm.java new_article_form
new-article-forward.jsp new_article_forward
new-article-main.jsp new_article_main
new-article-message.jsp new_article_message
一目了然,从每个文件的名称上就可以很清楚地知道这些文件将会出现在什么样的场合,将会在别的文件的什么位置被引用。
另外,如果有多个功能类似的java类,这些类在内部结构上也应该尽量趋向一致。如果newArticleAction.java的内部结构是这样的:
public class NewArticleAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
……
}
protected boolean executeQuery(
Statement stmt,
ActionForm form,
HttpServletRequest request) {
……
}
protected boolean executeUpdate(
Statement stmt,
ActionForm form,
HttpServletRequest request) {
……
}
}
那么功能类似的NewFolderActin.java、RepairFoldersAction.java、ManageLinksAction.java也应当有executeQuery()、executeUpdate()方法,这些方法的返回值应该都是boolean型,参数类型与数目也应该相同。这样,了解了NewArticleAction.java,就等于同时了解了NewFolderActin.java、RepairFoldersAction.java、ManageLinksAction.java,即使Action类的数目激增,也能从容驾驭。
这其实是java“封装”理念的一种变形,即:统一入口、统一出口,把具体的实现过程包裹在“暗箱”里面。
笔者以为:形式上的统一是优化结构、层次的重要一笔,里面有很多技巧值得研究。
本文地址:http://com.8s8s.com/it/it15520.htm