欢迎来到天天文库
浏览记录
ID:23160973
大小:60.00 KB
页数:6页
时间:2018-11-04
《基于struts2和ibatis的jsp开发框架设计体系的开发》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于Struts2和iBATIS的JSP开发框架设计体系的开发 JSP(JavaServerPages)是常见的B/S架构(Broethod=query> /list_s.jsp /list_t.jsp Struts2的拦截器机制还能对所有请求做相同的处理[4]。Struts2的拦截器机制如图1所示。 图1Struts2拦截器原理 图1中虚线框起来的部分显示,拦截器可以在Action调用前后增加一些功能模块。使用拦截器,不需要每个Action自己去调用这些功能模块,而是由Struts2的配置自动为Action增加这些模块。这可以解决引言
2、中提出的第一个问题。 1.2iBATIS框架 iBATIS是一个持久层框架。笔者所在学校的VC的思想,数据显示和业务处理是相互独立的,分开后可以降低耦合度,把Model所代表的业务逻辑和数据存取分开,可以进一步降低耦合度。因此,在笔者设计的框架中,后台采用了比较流行的Action-Service-Dao三层结构。开发框架结构如图2所示。 图2JSP应用开发框架结构图 2.1异常处理 系统运行过程中有可能会遇到X络中断,数据库崩溃等业务无关的问题,还有可能出现用户查找的数据不存在、重复提交数据等业务相关的错误。框架提供了统一的方式处理这些异常和错误
3、。框架的异常处理结构如图3所示。 图3异常处理结构图 图3中的SystemException和BusinessException是自定义的两个异常类,分别表示业务无关的异常和业务相关的错误。这两个异常类不需要有任何的实质性的处理,只需要能记录异常信息即可。 2.2Dao层接口设计 Dao层的接口BasicDao仅提供五个方法: publicinterfaceBasicDao{ publicListselect(BasicVOvo); publicintselectCount(BasicVOvo); publicvoidinsert(Basi
4、cVOvo); publicvoidupdate(BasicVOvo); publicvoiddelete(BasicVOvo); } 这样设计,避免了Dao层方法过度重载和对外接口频繁改动。Dao层接口简单固定,所以Service层无需等待Dao层完全实现就可以进行编码和初步测试,开发过程中也不需要和Dao层的开发人员进行过多沟通。 假如某个具体的Dao层的类因为性能或者其他原因,需要更多个性化方法,可以自行添加其他方法。 3JSP应用开发框架的实现 实现这个框架,需要为其加上统一的权限验证和异常处理功能,并使用iBATIS框架实现Dao层。
5、 3.1权限验证和异常处理 权限验证应该添加在每次Action调用之前,而异常处理应该是捕获Action抛出的异常,发生在Action调用之后。这两个功能都可以借助Struts2的拦截器机制实现。因为权限验证和异常处理是针对整个系统的,所以笔者在同一个拦截器MyInterceptor里实现(也可以分在两个拦截器里实现)。 MyInterceptor的核心代码如下: publicclassMyInterceptor extendsAbstractInterceptor{ Override publicStringintercept( Acti
6、onInvocationarg0) { Stringresult=success; interrorType=0; if(用户未登录){ result=error; errorType=nologin; }elseif(用户没有权限){ result=error; errorType=noauthor; }else{ try{ result=arg0.invoke(); }catch(Exceptione){ result=error; errorType=exception; } } returnresult; }
7、 } 系统中不管是出现异常还是业务相关的错误(包括未登录和没有权限),MyInterceptor都会返回error。在Struts2里配置error对应的result是一个链式请求mngerror.action,接下来就会进入mngerror对应的方法去处理。 3.2Dao层具体实现 首先用iBATIS的配置文件SqlMapConfig.xml创建一个SqlMapClient对象,核心代码如下: Readerreader=Resources. getResourceAsReader(SqlMapConfig.xml); SqlMapClient
8、sqlMapper=SqlMapClientBuilder. b
此文档下载收益归作者所有