基于Struts2和iBATIS的JSP开发框架设计体系的开发.docx

上传人:rrsccc 文档编号:8927271 上传时间:2021-01-25 格式:DOCX 页数:4 大小:14.01KB
返回 下载 相关 举报
基于Struts2和iBATIS的JSP开发框架设计体系的开发.docx_第1页
第1页 / 共4页
基于Struts2和iBATIS的JSP开发框架设计体系的开发.docx_第2页
第2页 / 共4页
基于Struts2和iBATIS的JSP开发框架设计体系的开发.docx_第3页
第3页 / 共4页
基于Struts2和iBATIS的JSP开发框架设计体系的开发.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于Struts2和iBATIS的JSP开发框架设计体系的开发.docx》由会员分享,可在线阅读,更多相关《基于Struts2和iBATIS的JSP开发框架设计体系的开发.docx(4页珍藏版)》请在三一文库上搜索。

1、基于Struts2和iBATIS的JSP开发框架设计体系的开发JSP(Java Server Pages)是常见的B/S架构(Browser/Server架构)【1】实现技术之一。在笔者为学校开发奖助贷系统;和认证考试报名系统;等JSP应用系统的过程中,遇到了以下问题:(1)为系统所有模块增加、修改或者移除一个功能时,需要改动大量代码,异常处理分散,当异常处理方式改变时,代码修改量也很大;(2)系统中需要大量动态拼接SQL语句,在Java中拼接sql语句非常繁琐,而且容易出错;(3)业务逻辑处理和数据存取之间的接口耦合度高,多个开发人员之间沟通成本也很高。笔者通过对已开发的两个项目进行研究,设

2、计了一个简单的JSP开发框架,来解决上述三个问题。1 关键技术简介1.1 MVC和Struts2框架MVC框架模式全称是Model-View-Controller【2】。其中,Model表示业务逻辑和数据存取,View表示数据显示,Controller连接Model和View两部分。MVC把数据显示(V)和数据(M)隔离,同时也把两者之间的联系(C)独立出来,三个部分各司其职,互不干扰。Struts2框架【3】对应于Controller部分。它通过编写XML配置文件,控制页面跳转。Struts2的配置代码示例如下:method=query/list_s.jsp/list_t.jspStruts

3、2的拦截器机制还能对所有请求做相同的处理【4】。Struts2的拦截器机制如图1所示。图1 Struts2拦截器原理图1中虚线框起来的部分显示,拦截器可以在Action调用前后增加一些功能模块。使用拦截器,不需要每个Action自己去调用这些功能模块,而是由Struts2的配置自动为Action增加这些模块。这可以解决引言中提出的第一个问题。1.2 iBATIS框架iBATIS是一个持久层框架。笔者所在学校的Web应用程序,其数据都来自数据中心,数据库结构对外是不开放的,仅对外提供必需的SQL语句。这种情况下Hibernate等框架并不适用。iBATIS是半自动化的【5】。它实现的是业务对象和

4、SQL语句的映射,非常适合处理这类情况。iBATIS采用的是在SQL语句中使用iBATIS标签来拼接SQL语句,示例代码如下:select * from t1 where 1=1column1 = #A#从上述代码可以看出,iBATIS比Java拼接SQL语句更简洁,也没有单引号匹配、遗漏逗号等问题。2 JSP应用开发框架设计按照MVC的思想,数据显示和业务处理是相互独立的,分开后可以降低耦合度,把Model所代表的业务逻辑和数据存取分开,可以进一步降低耦合度。因此,在笔者设计的框架中,后台采用了比较流行的Action-Service-Dao三层结构。开发框架结构如图2所示。图2 JSP应用开

5、发框架结构图2.1 异常处理系统运行过程中有可能会遇到网络中断,数据库崩溃等业务无关的问题,还有可能出现用户查找的数据不存在、重复提交数据等业务相关的错误。框架提供了统一的方式处理这些异常和错误。框架的异常处理结构如图3所示。图3 异常处理结构图图3中的SystemException和BusinessException是自定义的两个异常类,分别表示业务无关的异常和业务相关的错误。这两个异常类不需要有任何的实质性的处理,只需要能记录异常信息即可。2.2 Dao层接口设计Dao层的接口BasicDao仅提供五个方法:public interface BasicDaopublic List sele

6、ct(BasicVO vo);public int selectCount(BasicVO vo);public void insert(BasicVO vo);public void update(BasicVO vo);public void delete(BasicVO vo);这样设计,避免了Dao层方法过度重载和对外接口频繁改动。Dao层接口简单固定,所以Service层无需等待Dao层完全实现就可以进行编码和初步测试,开发过程中也不需要和Dao层的开发人员进行过多沟通。假如某个具体的Dao层的类因为性能或者其他原因,需要更多个性化方法,可以自行添加其他方法。3 JSP应用开发框架的

7、实现实现这个框架,需要为其加上统一的权限验证和异常处理功能,并使用iBATIS框架实现Dao层。3.1 权限验证和异常处理权限验证应该添加在每次Action调用之前,而异常处理应该是捕获Action抛出的异常,发生在Action调用之后。这两个功能都可以借助Struts2的拦截器机制实现。因为权限验证和异常处理是针对整个系统的,所以笔者在同一个拦截器MyInterceptor里实现(也可以分在两个拦截器里实现)。MyInterceptor的核心代码如下:public class MyInterceptorextends AbstractInterceptor Overridepublic St

8、ring intercept(ActionInvocation arg0)String result = success;;int errorType = 0;if(用户未登录)result = error;;errorType = nologin;; else if(用户没有权限)result = error;;errorType = noauthor;; else tryresult = arg0.invoke(); catch(Exception e)result = error;;errorType = exception;;return result;系统中不管是出现异常还是业务相关

9、的错误(包括未登录和没有权限),MyInterceptor都会返回error;。在Struts2里配置error对应的result是一个链式请求mngerror.action,接下来就会进入mngerror对应的方法去处理。3.2 Dao层具体实现首先用iBATIS的配置文件SqlMapConfig.xml创建一个SqlMapClient对象,核心代码如下:Reader reader = Resources.getResourceAsReader(SqlMapConfig.xml);SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMap

10、Client(reader);reader.close();接下来,在方法里使用sqlMapper进行增删改查等操作:sqlMapper.queryForList(select;, vo);sqlMapper.queryForObject(selectCount;, vo);sqlMapper.insert(insert;, vo);. .4 结语目前,该框架已经在项目中得到了实际应用,笔者利用这个框架,重新开发了学校的奖助贷管理系统和等级考试报名系统。该框架提高了Web应用程序的灵活性和扩展性,也大大缩短了开发周期。如何提高框架中数据存取的性能和效率是笔者下一步着重要考虑的问题。参考文献:【

11、1】徐秀敏,郝赫,曹占峰,尹洪苓,朱大勇.基于三层B/S的规划计划信息管理平台.计算机系统应用,2013,22(4):51-54.【2】丁振凡.基于SpringMVC的网络存储系统.计算机系统应用,2013,22(2):178-181.【3】丁波,晁爱农.基于Struts2框架的AJAX开发研究.计算机工程与设计,2009,30(16):3910-3913.【4】卞世晖,李龙澍,陈圣兵,李浩.基于AOP理念的Struts2拦截器的研究与应用.电子设计工程,2010,18(1):8-9.【5】Clinton Begin,Brandon Goodin,Larry Meadors.iBATIS in Action.北京:人民邮电出版社,2008.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1