SSH项目实战课程V7第3天.docx
- 文档编号:8073310
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:30
- 大小:1.69MB
SSH项目实战课程V7第3天.docx
《SSH项目实战课程V7第3天.docx》由会员分享,可在线阅读,更多相关《SSH项目实战课程V7第3天.docx(30页珍藏版)》请在冰豆网上搜索。
SSH项目实战课程V7第3天
1项目介绍
1.1项目背景
国税协同办公平台包括了行政管理、后勤服务、在线学习、纳税服务、我的空间等几个子系统;我们本次主要的开发功能是纳税服务子系统的部分模块和基于纳税服务子系统信息的个人工作台首页。
纳税服务子系统是办税PC前端或移动端的后台管理系统,主要包括的功能有系统角色管理、用户管理、信息发布管理、投诉受理、纳税咨询、易告知、服务预约、服务调查等模块。
1.2项目前期
项目前期;一般是由客户经理从客户那边了解到有关该项目的招标信息,然后开发公司再组织竞标;编写标书和详细的项目建设方案。
这个阶段一般由商务部门和开发部门的管理层参与。
建设方案由部门经理或者项目经理协助完成。
项目建设方案中一般包括初步的系统功能、模块设计、软硬件设备、开发组人员介绍等。
提供这些信息给客户后他们再评估相应开发公司是否有承建系统能力。
1.3需求分析
当项目中标后,公司的客户经理、项目经理再到客户环境进行详细的需求调研,完成调研后将初步的调研结果转化成正式的需求文档。
需求文档是所有后续流程的基础和非常重要的文档,开发和测试都需要按照需求来开发测试。
详细需求见《国税协同平台-纳税服务需求规格说明书.docx》
1.4设计
在这个阶段主要是针对需求进行详细的开发前的分析和对具体模块的设计。
在设计过程中可能包括到的有系统原型设计的完善、界面美工设计切图、数据库设计(概念、物理模型)等;最终需要出详细设计说明书。
见《国税协同平台-纳税服务详细设计说明书.docx》
1.5制定开发计划
在需求和详细设计都已经确定的情况下;项目需要根据开发的时间和任务数来制定开发计划;计划中需要描述所有的开发阶段,从需求阶段到部署上线期间所有要做的任务,每个任务对应具体的开始时间、结束时间,前置任务,工作时长,资源名称。
后续的开发都根据该计划进行在每周开周例会上确认开发进度是否和计划保持一致,如果不一致则需要预测好相应方案;保证能如期提交系统给到客户。
1.6开发
根据开发计划,项目经理将组织开发团队完成具体的开发任务,每周向公司部门、客户主管人员汇报项目进度。
对应具体的开发人员则熟悉、理解需求,明白设计文档;按照计划中时间点开发功能,提交代码。
2框架整合
2.1新建数据库及web项目
2.1.1创建itcastTax数据库
--创建数据库
CREATEDATABASEitcastTaxDEFAULTCHARACTERSETutf8COLLATEutf8_general_ci;
2.1.2新建web项目
新建工作空间指定项目编码(或工作空间编码)为utf-8,再建webproject,配置buildpath
引入应用服务器tomcat的包:
选择对应配置的tomcat版本即可。
如若对应的MyEclipse版本没有上述的“MyEclipseServerLibrary”;可以选择“MyEclipseLibrary”然后选择ee的包。
需要连接mysql数据库,再添加mysql驱动包。
2.2框架整合
2.2.1添加struts2的jar包和配置文件
1、添加struts2jar包到web-inf/lib目录下;
2、添加struts.xml到src目录下。
可在“struts-2.x\apps\struts2-blank\WEB-INF\classes”下复制。
在struts.xml中添加几个常用属性:
--禁用动态方法访问-->
--配置成开发模式-->
--配置拓展名为action-->
--把主题配置成simple-->
3、配置web.xml:
添加struts2过滤器:
2.2.2添加hibernate的jar包和配置文件
添加hibernatejar包到web-inf/lib目录下;
至于hibernate.cfg.xml文件,因项目使用spring来整合管理实体和数据库的连接等hibernate原本的配置,所以这个配置文件不再需要。
2.2.3添加spring的jar包和配置文件
添加springjar包到web-inf/lib目录下
添加spring配置文件applicationContext.xml到src目录下;
在web.xml中注册spring监听器,启动spring容器:
applicationContext.xml
2.3整合测试项目
2.3.1整合struts和spring
预期:
如果可以在action中能够正确调用service里面的方法执行并返回到一个页面中;那么我们认定struts和spring的整合是成功的。
编写JUnit测试类,测试spring加载是否正确:
编写TestService接口和实现类TestServiceImpl
在applicationContext.xml中添加bean扫描配置信息;这边使用导入配置文件的方式配置。
①首先在cn.itcast.test.conf中建立test-spring.xml(可以复制applicationContext.xml内容)
--service-->
component-scanbase-package="cn.itcast.test.service.impl"/> 里面的配置就是普通的bean扫描,只是将扫描范围缩小了。 ②将test-spring.xml导入到applicationContext.xml中如下: cn/itcast/*/conf/*-spring.xml"/> 编写TestAction类 在test的conf文件夹下新建test-struts.xml中配置TestAction: 将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数据库连接源: --导入外部的properties配置文件--> property-placeholderlocation="classpath: db.properties"/> --配置c3p0数据源--> --初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。 Default: 3--> --连接池中保留的最小连接数。 Default: 3--> --连接池中保留的最大连接数。 Default: 15--> --当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。 Default: 3--> --最大空闲时间,1800秒内未使用则连接被丢弃,若为0则永不丢弃。 Default: 0--> 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: class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> cn/itcast/nsfw/*/entity/*.hbm.xml cn/itcast/test/entity/*.hbm.xml 编写实体类Person和对应的映射文件Person.hbm.xml: 映射文件的头部信息: xmlversion="1.0"encoding="utf-8"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN" " 编写完实体映射文件后,用JUnit测试hibernate和spring的整合,在测试用例中启动spring容器的时候将扫描Person类根据其创建数据库表,并在测试时将向表插入一条数据。 测试hibernate,添加一个人员 2.3.3配置spring事务管理 —事务管理--> class="org.springframework.orm.hibernate4.HibernateTransactionManager"> —事务通知--> adviceid="txAdvice"transaction-manager="txManager"> attributes> methodname="find*"read-only="true"/> methodname="get*"read-only="true"/> methodname="load*"read-only="true"/> methodname="list*"read-only="true"/> methodname="search*"read-only="true"/> methodname="*"rollback-for="Throwable"/> attributes> advice> —配置需要进行事务控制的类--> config> pointcutid="serviceOperation"expression="bean(*Service)"/> advisoradvice-ref="txAdvice"pointcut-ref="serviceOperation"/> config> 【注意: 上面的pointcutexpression表示拦截以Service结尾的bean,或者可写成 execution(*cn.itcast..service.impl.*.*(..))】 完善TestService接口和TestServiceImpl;利用service中的操作来验证上面配置的事务管理是否生效。 添加dao层代码并配置dao信息到test-spring.xml文件中;准备事务测试 测试方法 Dao中 Service中 2.4资源文件分类 1、将配置文件归类到新建config文件夹; 2、源代码目录按照功能模块进行划分: cn.itcast.子系统.功能模块.* 3、Jsp放置到WEB-INF目录下; 4、其它: 2.5日志工具配置 在控制台会报出日志log4j没有配置好配置文件的信息。 引入slf4j的jar包和log4j的jar包及其配置文件,配置log4j.properties文件。 测试: 2.6编写基类BaseDao DAO基类中配备增删改查的操作。 获取泛型类型: //使用反射得到T的真实类型 ParameterizedTypept=(ParameterizedType)this.getClass().getGenericSuperclass();//获取当前new的对象的泛型的父类类型 this.clazz=(Class } 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。 --所有dao的parent--> 在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对应复制。 复制完成后针对jsp页面填充动态数据。 对应大多数页面样式和jquery都是需要的,所以我们把公共样式和jquery、struts标签库等信息抽出到一个header.jsp文件中,将此文件放入common公共文件目录。 3.4批量删除 在用户列表listUI.jsp中设置好复选框 propertyvalue="id"/>'/>,点击操作栏中的删除执行js脚本提交用户列表表单到后台UserAction,在action中使用数组接收勾选的用户id,然后在对该数组进行遍历删除。 3.5日期组件wdatepicker 导入WdataPicker文件包到项目的js文件夹下; 在用户管理中的添加、编辑jsp页面对生日表单项引入日期组件: 用法: textfieldid="birthday"name="user.birthday"readonly="true" onfocus="WdatePicker({skin: 'whyGreen',el: 'birthday',dateFmt: 'yyyy-MM-dd'})"/> 回显时,注意设置好显示格式;可以如下设置: textfieldid="birthday"name="user.birthday"readonly="true" onfocus="WdatePicker({skin: 'whyGreen',el: 'birthday',dateFmt: 'yyyy-MM-dd'})"> paramname="value"> datename='user.birthday'format='yyyy-MM-dd'/> param> textfield> 3.6头像上传 在用户管理的添加、编辑页面中,可以上传用户的头像;页面中对头像字段引用type=file的文本域。 之后UserAction接收文件需要配置的3个基本属性变量: 将头像文件保存在服务器的upload/user目录下,文件的名称以uuid重命名。 (必须重命名: ①重名问题②特殊字符在显示时的问题) 3.7批量导入、导出 查阅《POI操作excel.doc》先了解POI,使用POI工具类导出用户数据到excel中。 导出: 在用户管理页面中点击“导出”,将所有用户记录导出到excel中。 在userService中将调用导出工具类ExcelUtil导出数据。 导入: 在用户管理页面中,上传包含用户列表的excel文档,然后点击“导入”将excel中的用户记录插入的用户表中,并显示在列表上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSH 项目 实战 课程 V7