1 项目介绍
1.1 项目背景
国税协同办公平台包括了行政管理、后勤服务、在线学习、纳税服务、我的空间等几个子系统;我们本次主要的开发功能是纳税服务子系统的部分模块和基于纳税服务子系统信息的个人工作台首页。纳税服务子系统是办税pc前端或移动端的后台管理系统,主要包括的功能有系统角色管理、用户管理、信息发布管理、投诉受理、纳税咨询、易告知、服务预约、服务调查等模块。
1.2 项目前期
项目前期;一般是由客户经理从客户那边了解到有关该项目的招标信息,然后开发公司再组织竞标;编写标书和详细的项目建设方案。这个阶段一般由商务部门和开发部门的管理层参与。建设方案由部门经理或者项目经理协助完成。项目建设方案中一般包括初步的系统功能、模块设计、软硬件设备、开发组人员介绍等。提供这些信息给客户后他们再评估相应开发公司是否有承建系统能力。
1.3 需求分析
当项目中标后,公司的客户经理、项目经理再到客户环境进行详细的需求调研,完成调研后将初步的调研结果转化成正式的需求文档。需求文档是所有后续流程的基础和非常重要的文档,开发和测试都需要按照需求来开发测试。详细需求见《国税协同平台-纳税服务需求规格说明书.docx》
1.4 设计
在这个阶段主要是针对需求进行详细的开发前的分析和对具体模块的设计。在设计过程中可能包括到的有系统原型设计的完善、界面美工设计切图、数据库设计(概念、物理模型)等;最终需要出详细设计说明书。见《国税协同平台-纳税服务详细设计说明书.docx》
1.5 制定开发计划
在需求和详细设计都已经确定的情况下;项目需要根据开发的时间和任务数来制定开发计划;计划中需要描述所有的开发阶段,从需求阶段到部署上线期间所有要做的任务,每个任务对应具体的开始时间、结束时间,前置任务,工作时长,资源名称。后续的开发都根据该计划进行在每周开周例会上确认开发进度是否和计划保持一致,如果不一致则需要预测好相应方案;保证能如期提交系统给到客户。
1.6 开发
根据开发计划,项目经理将组织开发团队完成具体的开发任务,每周向公司部门、客户主管人员汇报项目进度。对应具体的开发人员则熟悉、理解需求,明白设计文档;按照计划中时间点开发功能,提交代码。
2 框架整合
2.1 新建数据库及web项目
2.1.1 创建itcasttax数据库
-- 创建数据库
create database itcasttax default character set utf8 collate utf8_general_ci;
2.1.2 新建web项目
新建工作空间指定项目编码(或工作空间编码)为utf-8,再建 web project,配置buildpath
引入tomcat 的包:
如若对应的myeclipse版本没有上述的“myeclipse server library”;可以选择“my eclipse library”然后选择ee的包。
选择对应配置的tomcat版本即可。
添加jstl jar包和mysql驱动包;
2.2 框架整合
2.2.1 添加struts2的jar包和配置文件
添加jar包:
commons-fileupload-1.3.1.jar,commons-io-2.2.jar,commons-lang-2.4.jar ,commons-lang3-3.2.jar,freemarker-2.3.19.jar,ognl-3.0.6.jar,struts2-core-2.x.jar
,struts2-spring-plugin-2.x.jar,xwork-core-2.x.jar 到web-inf/lib目录下。
添加struts.xml到src目录下。可在“struts-2.x\apps\struts2-blank\web-inf\classes”下复制。
在struts.xml中添加几个常用属性:
配置web.xml:添加struts2 过滤器:
struts2org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter
struts2
*.action
2.2.2 添加hibernate的jar包和配置文件
添加hibernate jar包:
hibernate3.jar,lib/requiredconf/*-spring.xml />
编写testaction类
在test的conf文件夹下新建test-struts.xml中配置testaction :
/web-inf/jsp/test/test.jsp
将test-struts.xml导入到struts.xml文件中。
在webroot目录下新建test/test.jsp
在浏览器中输入:http://localhost:8080/itcasttax/test.action 查看后台是否能输入service中的打印信息。
2.3.2 整合hibernate 和 spring
在applicationcontext.xml中配置如下原本在hibernate.cfg.xml中需要配置的信息,在spring中配置后hibernate.cfg.xml 可删除。
1、 配置c3p0数据库连接源:
2、 db.properties
jdbcurl=jdbc:mysql://localhost:3306/itcasttax?useunicode=true&characterencoding=utf8
driverclass=com.mysql.jdbc.driver
user=root
password=root
initialpoolsize=10
maxpoolsize=30
3、 配置sessionfactory,并将datasource指向c3p0创建的datasource:
org.hibernate.dialect.mysql5dialect
true
update
none
classpath:cn/itcast/nsfw/*/entity/*.hbm.xml
classpath:cn/itcast/test/entity/*.hbm.xml
编写实体类person和对应的映射文件person.hbm.xml:
映射文件的头部信息:
编写完实体映射文件后,用junit测试hibernate和spring的整合,在测试用例中启动spring容器的时候将扫描person类根据其创建数据库表,并在测试时将向表插入一条数据。
测试hibernate,添加一个人员
测试框架分层的整合(service 与 dao)
testdao 中新增方法 save ,在testservice中通过调用testdao来保存人员信息。
2.3.3 配置spring事务管理
【注意:上面的pointcut expression 表示拦截以service结尾的bean,或者可写成
execution(* cn.itcast..service.impl.*.*(..))】
完善 testservice接口和testserviceimpl;利用service中的操作来验证上面配置的事务管理是否生效。
测试方法
dao中
service中
2.4 资源文件分类
1、 将配置文件归类到新建config文件夹;
2、 源代码目录按照功能模块进行划分:cn.itcast.子系统.功能模块.*
3、 jsp放置到web-inf目录下;
4、 其它:
2.5 日志工具配置
在控制台会报出日志log4j没有配置好配置文件的信息。
slf4j 接口jar(slf4j-log4j12-1.6.1.jar)
log4j的jar包(com.springsource.org.apache.log4j-1.2.15),配置log4j.properties文件。
测试:
2.6 编写基类basedao
dao基类中配备增删改查的操作。
获取泛型类型:
// 使用反射得到t的真实类型
parameterizedtype pt = (parameterizedtype) this.getclass().getgenericsuperclass(); // 获取当前new的对象的 泛型的父类 类型
this.clazz = (class) pt.getactualtypearguments()[0]; // 获取第一个类型参数的真实类型
}
3 用户管理
3.1 实现crud的步骤及用户实体映射文件
1、 用户实体类及映射文件:usre.java 和 user.hbm.xml
2、 实现userdao、userdaoimpl,直接继承basedao、basedaoimpl;
3、 编写userservice、userservice类,里面包括basedao中的基本方法;
4、 useraction中要实现增删改查,需要6个方法;我们约定需要跳转到页面的方法以ui结尾,如果addui 则说明这是跳转到添加页面,需要对应一个addui.jsp。在删除、修改、添加完成后应该返回列表页面,这时为了避免重复提交返回使用重定向。
配置user-spring.xml,并将其导入到applicationcontext.xml中,然后在applicatoincontext.xml中设置所有业务dao的父类dao,为basedao中的hibernatedaosupport注入sessionfactory。
在user-spring.xml中的内容:
3.2 实现用户管理的crud方法及显示列表
在useraction中至少需要有的6个方法:
listui() --- 返回到列表页面对应listui.jsp
addui() --- 返回到添加页面对应addui.jsp
add() --- 重定向到listui
edit() --- 重定向到listui
editui() --- 返回到编辑页面对应editui.jsp
delete() --- 删除用户完后重定向到listui
设置完action后,配置user-struts.xml文件,里面对应各个方法对应的页面;最后将user-struts.xml包含到struts.xml文件中。
接下来引入美工设计好的页面;将数据与页面结合展示。
3.3 完成美工设计页面显示
将美工设计好的页面复制到项目中:
将js、css、image、分别放置到webroot目录下;其它的jsp对应...