文 档 编 密 拟 日 码 级 制 人 期 XX 水库移民信访应急和综合管理系统 技术研究报告 甲方框架研究以及与 CCP 框架的对比 郑重声明: XX 软件股份有限公司版权所有。本文档中任何部分未经 XX 软件股份有限公 司书面授权,不得将材料泄露给第三方,不得以任何手段、任何形式进行复制与传播。 目录 1.1 问题描述.....................................................................................................2 1.2 需达到的目标.............................................................................................2 1.3 技术路线...................................................................................................2 1.3.1 甲方框架研究........................................................................................2 1.3.2 甲方框架和 CCP 框架的差异....................................................................7 1.4 结论.........................................................................................................12 1.1 问题描述 该项目需要集成在甲方开发的大系统中,由于甲方大系统自身提供了一个开发框 架,其开发框架基于 Struts2+Spring+Hibernate3,与目前我公司项目中采用的 CCP 框架结构相似,但其 JDK 及 SSH 版本比 CCP 更新,其界面风格、权限控制 (Acegi)以及具体代码编写组织方式也与 CCP 完全不同,在开发技术学习和代码集成 上存在一定难度。因此,需要对甲方的开发框架进行仔细研究,掌握其开发方式,并 比较与 CCP 开发框架的差异,从而确定开发集成方案。 1.2 需达到的目标 1、 掌握甲方开发框架下,代码的开发; 2、 比较甲方开发框架和 CCP,寻找开发模式的异同。 1.3 技术路线 1.3.1 甲方框架研究 1.3.1.1 前台代码结构 1、页面框架构成: Index.jsp manage.d o frame.jsp Frame top Frame left Frame.top.d o /jsp/common/ head.jsp 2、页面跳转机制 Frame LeftSwitch Frame right Frame gis Frame.me nu.switch. do /jsp/common/ leftSwitch.html jsp/gis/ ArcGisApp.html 页面请求 request 读取 struts.xml Action Class ( gov.gjym.baseinfo.web.AreaSupport ) eg: 服务器返回处理结果动态页面 (eg: /jsp/baseinfo/Area_List.jsp) 前台编码流程(显示行政区划列表) 1、修改/jsp/common/head.jsp,新增菜单 <td width="75"> <a href="frame.menu_baseInfo.do" target="left"> <img src="images/menu1_off.gif" name="Image1" height="34" width="75" id="Image1" onMouseOver="MM_swapImage('Image1','','images/menu1_on.gif',1)"onM ouseOut="MM_swapImgRestore(1)" onClick="setFouce(1)"> </a> </td> 2 、 修 改 src/gov/gjym/common/web/IndexSupport.java , 增 加 frame.menu_baseInfo.do 对应的 action 方法 3、编写左侧页面\WebRoot\jsp\common\menu_baseInfo.jsp 4、实现 AreaSupport.java 对应的客户端请求方法。 编码注意事项 1、struts.xml 配置规范 package的name表示子系统名,namespace表示模块名, action 的 name 中前部分表示菜单业务名,name 的后部分对应类中的方法名, *号表示接受任何方法 <package name="baseinfo" namespace="/baseinfo" extends='struts-default'> <action name="area.*" class="gov.gjym.baseinfo.web.AreaSupport"> <result name="detail">/jsp/baseinfo/Area_Add.jsp</result> <result name="list">/jsp/baseinfo/Area_List.jsp</result> <result name="choose">/jsp/common/area.jsp</result> </action> </package> 2、页面的主题框架是一个 frameset 其中包括 top left right 等,刷新对应 frame 只 需 指 定 target 即 可 , eg: <a href="baseinfo/area.list.do" target="right"> 1.3.1.2 后台代码结构 一、包结构说明: 包内文件及说明 Package Name gov/gjym/baseinfo/ AreaDao.java 数据访问接口 dao AreaDaoImpl.java 数据访问实现类 gov/gjym/baseinfo/ Area.java 持久对象类 pojo Area.hbm.xml hibernate 映射文件 gov/gjym/baseinfo/ AreaService.java 业务层接口 service AreaServiceImpl.java 业务层实现方法,动态注入了对 应的 dao gov/gjym/ AreaSupport.java 扩展自 ActionSupport 实现页面的 baseinfo/web 扭转,同时该类的父类提供了 getBean 方法,可以从 spring 工厂动态获取业务层类的实例 二、后台实现编码流程(添加一个行政区划) 1、 编写 pojo Area.java 和 hibernate 映射文件 Area.hbm.xml 2、 配 置 /gjym/src/spring/applicationContext.xml 由 spring 实 现 hibernate 的托管 增加一行内容 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="mappingResources"> <list><value>gov/gjym/baseinfo/pojo/Area.hbm.xml</value></list> </property> 3、 编写 AreaSupport.java 类,该类要继承 CommonSupport;编写保存 请求 area.add.do 对应的 action 方法 add(); 4、 编写 AreaService.java 业务层接口类 5、 编写 AreaServiceImpl.java 注入了 AreaDao,修改配置文件 src\spring\spring-baseinfo.xml 6、编写 AreaDao.java 数据访问接口类 7、编写 AreaDaoImpl.java 数据访问实现类 1.3.1.3 系统权限 权限的使用 管理员登陆访问系统管理 用户与角色 用户管理 角色管理 模块与权限设置 模块管理 授权管理 1、 系统管理员登陆进入系统管理界面 2、 角色管理->设置角色成员------设置每个角色下的用户 3、 模块权限设置->授权管理------设置每个角色可以访问的模块 1.3.1.4 Acegi 的应用 Acegi System 过滤器 管理器 1、 编写简单的访问控制策略 2、 配置 acegi 拦截过滤器 Security 提供者 处理程序 ·A、Web.xml Acegi 过滤器的配置 <filter-mapping> <filter-name>acegiFilterChain</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>acegiFilterChain</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> ·B、在 spring 中配置 Acegi 用的组件,其实都是 JavaBean 见 gjymDemo\ src\spring\security.xml 验证用户身份,处理登陆身份验证 <bean id="authenticationProcessingFilter" class="gov.gjym.common.web.AuthenticationProcessingFilter"> 基于URL的安全拦截器 <bean id="securityInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor"> 对应于将要发生的授权的访问控制定义 <bean id="objectDefini
07-技术研究报告
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
本文于
2022-07-21上传分享