现在接手的项目是个别人已经搭好了架子的东东,在后来一段时间的开发过程中,我发现这个系统有一些缺点,总结了一下:
一、表示层
1、第一次看到,把同名的jsp放在不同的目录下,用目录名来区分。
2、同名的jsp往往主要内容相同,只是form要提交到的action不同。
二、控制层(逻辑处理层)
1、本项目大约有20个jsp页面,只用了5个ACTION,每个页面指向某个ACTION的某个处理方法:
比方说:jsp1的form这样写:
- <html:form action="/netinfo.dox" method="post" focus="domain" styleClass="form" >
- <input type="hidden" name="method" value="save"/>
有一个隐藏变量method来标示要由netinfo的save方法来处理,那看一下struts-config.xml里是怎么写的:
struts-config.xml 代码
- <form-beans>
- <form-bean name="NetinfoForm"
- type="org.apache.struts.validator.LazyValidatorForm" />
- .....
- form-beans>
-
- <action-mappings>
- <action path="/netinfo" name="NetinfoForm" parameter="method"
- scope="request" validate="false">
- <forward name="list" path="/pages/netinfoManager.jsp" />
- <forward name="view" path="/pages/netinfoView.jsp" />
- <forward name="regester" path="/pages/registerNetinfo.jsp" />
- <forward name="edit" path="/pages/Manager/registerNetinfo.jsp" />
- <forward name="password" path="/pages/getBackPwd.jsp" />
- <forward name="success" path="/netinfo.dox?method=manager" />
- action>
- .......
- <action-mappings>
-
这就会出现一个潜在的问题:netinfoAction类中不同的处理函数会随着业务的不断细化而迅速增加,不说代码量大,无法迅速定位到要修改的函数处(那时用搜索都慢),单说各个函数之间相互跳转并最终返回到指定页面:函数之间怎么能跳转?看上面的代码:Action返回success时,就会定位到manager方法继续执行,manager 方法还有可能再定位到这个类的其他方法继续执行,最后,很难控制我最初的方法返回的页面究竟是哪个,并且要考虑到另一个页面调用同类的manager方法时,是立即返回一个页面还是要推给另一个方法来定位最终页面。当业务多了,这个问题相当突出,而大量的精力将用在如何正确定位返回页面了。
2、使用了LazyValidatorForm,所有的form都使用这一个东东,直接将数据映射到hibernate持久化对象去了, 但这样的映射不能变通,只能在将要映射前把数据的格式转化一下,再做映射,无疑又增加了几百行代码。
3、由于页面中有URL或连接,每个连接要调用一个ACTION的处理函数,就得写成这样.../neitinfo.dox?method=方法名,这种连接返回的页面往往和form提交到的ACTION方法有不一样的返回页面,甚至还要返回到本页面,前面说过,本页面和另一个页面同名并且也有相同的连接,这就出现问题了,当这些页面的连接都要调用一个处理类的同一个方法时,就不得不使用flag之类的东西来标示是哪个页面来的请求,要回到哪个页面去。。地狱。。
虽然可以在函数中写上下面的文字来解决返回的问题,但还是感觉乱乱的,不舒服:
jsp代码
- <html:hidden property="source" value="<!---->"
java 代码
-
- return new ActionForward(request.getParameter("sourcepage"));
对于这些问题,不知道应不应该换一种组织形式,重新架构。
仔细考虑了一下,结合朋友们的意见,我最终决定把ACTION的数目加上来,这样每个ACTION的函数就可以少一点,不至于那么乱,还有,关于JSP的名称,我决定要改,两个文件同名,在IDE中同时打开这两个文件,将不知道正在修改的页面是哪个,容易产生错误。
好像,增加ACTION的个数就可以解决以上大部分问题了。
希望大家说说自己的意见。
分享到:
相关推荐
“结构主义”宏观框架讨论之十:就业市场,如何跟踪?-0108-长江证券-17页.pdf
“结构主义”宏观框架讨论之九:转型无“牛市”?复盘日韩当年表现-1231-长江证券-25页.pdf
2021年分组讨论发言的几种框架思路.pdf
T3v3-使用Bootstrap和LESS构建的Joomla响应模板框架 T3框架的第三代-从头开始重写以支持Bootstrap&LESS。 访问Google网上论坛以获取最新更新: ://groups.google.com/forum/#!forum/t3fw 访问我们的讨论香奈儿: ...
税务人工智能的中国进程:基于税法理论的框架性讨论.pdf
《Microsoft.NET框架程序设计》(修订版)将深入解释CLR的工作机制及其提供的各种构造,同时还将讨论FCL中一些重要的类型。全书共分为五个部分,包括:.NET框架基本原理、类型和通用语言运行时、类型设计、基本类型,...
GIS项目管理框架探讨.
Inversion of Control的使用(在下面讨论)帮助完成了这种简化。 通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。 Spring被设计为让使用它创建的应用尽可能少的依赖于...
在讨论了语言模型在框架语义方面的表现之后,我认为这将是一个有趣的测试。 有了框架网,我决定微调标准的预训练Seq2Seq模型t5 ,其中输入数据是来自框架网的样本句子,给定的摘要是与该句子关联的框架定义。 设置 ...
基于springboot框架的智慧商城平台 Java语言;SpringBoot框架;MySQL数据库; 本文系统地阐述了整个家具销售管理系统的功能及实现。实现了从商品管理,商品分类和查询,到购物车实现,用户订单处理,再到系统管理...
wpf UI插件式开发框架。使用.net 4.0 Framework,Telerik第三方控件开发,设计模式使用MVVM(使用的不正规,见笑了),使用到...插件管理插件后面有时间再补完整,整个框架完成后,打算写下开发文章,公开和大家讨论下。
商品讨论:每一个用户都有浏览或对一个商品进行讨论的权利,用户发表讨论的信息后,系统的商品讨论表中会加入此条讨论信息。 用户信息管理:管理员可以对用户进行删除。 商品讨论管理:这是只有管理员可以做的一个...
这个项目演示了如何使用Mybatis框架来执行数据库的增、删、改、查等操作。报告还可能包括一些数据查询和性能测试的结果。 总结和结论:报告总结了实验的主要发现,并提供了对Mybatis框架的评价。它还可以讨论在实验...
流行JS框架想知道在Stack Overflow上讨论最多的Javascript框架吗? 2014年5月的数据
Web开发应用框架介绍与比较,分为四章进行展示:Django的python框架、Jfinal框架、Struts框架,以及最后章节对比与总结。末尾写出参考文献。 内容完整,图文表并茂,可用于JavaWeb讨论课展示。 文件仅供参考学习。
本文主要讨论了多因子模型和人工智能在金融预测框架中的应用和比较。文章首先介绍了资产定价中心公式的理论基础,并阐述了随机折现因子的重要性。在随机折现因子框架下,文章讨论了多因子模型和人工智能方法对资产...
java使用ssm框架实现网页爬虫效果,欢迎大家进行交流讨论
政务信息资源总统框架讨论.pdf
本文的核心是侧重于HTML/CSS的框架,JS框架或以JS为核心的框架不讨论(比如YUI);多屏已是既定事实,虽然不是所有开发都要考虑自适应,但有自适应功能至少说明了这框架短期内不会被淘汰。前端工程师可以拿来修改后...