- 浏览: 18522 次
最新评论
1.Spring课程内容重点
1)理论
了解IOC和AOP概念
了解IOC(DI)和AOP(动态代理)原理
*2)熟练掌握Spring和Struts2,Hibernate整合应用
*3)掌握Spring事务管理应用
上面2,3建议采用注解的应用方式。
==========首先完成下面两个案例===========
1)利用Struts2+Hibernate结构完成资费管理模块
(案例hibernate02_2)
2)利用Struts2+Spring+Hibernate结构完成资费管理模块(案例spring04_3)
==========项目重构============
项目SSH版本结构采用ssh-2.jpg结构图。
1.项目一期功能
1)资费管理模块(COST)
对资费信息进行增删改查的维护。资费是为用户提供服务后,对用户收费的一个标准。
2)账务账号模块(ACCOUNT)
对账务账号进行增删改查的维护。用户使用电信服务,必须先开通一个账务账号。
3)业务账号模块(SERVICE)
对业务账号进行增删改查的维护。用户开通一个账务账号后,可以使用电信不同的服务器服务,每一种服务提供了一个业务账号。
4)角色管理(ROLE,ROLE_PRIVILEGE,
privileges.xml)
对角色信息进行增删改查的维护,不同的角色可以有不同的操作权限。
首先在privileges.xml中录入权限操作请求的URL.
然后对角色信息进行维护,主要对ROLE和ROLE_PRIVILEGE表进行操作。
5)管理员管理模块(ADMIN,ADMIN_ROLE)
对管理员信息进行增删改查的维护,不同的管理员可以有不同的角色。
对管理员 信息维护,主要是对ADMIN和ADMIN_ROLE表进行操作.
2.项目二期功能
1)对前面5个模块做SSH重构。
a.主要是采用Spring+Hibernate重构原有的DAO
b.将Action,Service,DAO交给Spring容器管理。
由Spring容器采用IOC机制控制。
c.事务管理采用Spring AOP声明式事务管理实现
d.修改struts.xml的<action>元素的class属性,将该属性值写成容器中的action组件的id值。
2)扩展功能1:权限控制模块
当管理员登录后,执行具体操作时,需要对其进行权限检查,看看是否有该操作权限,如果没有跳转到nopower.html提示页面。
(如果想改变管理员拥有的操作权限,可以通过角色管理和管理员管理模块变更)
3)扩展功能2:生成账单模块
根据用户使用的服务记录和资费标准,调用一个PL/SQL程序生成账单信息。利用一个任务调度组件,每月月底定时触发该PL/SQL程序,统一生成账单信息
4)扩展功能3:账单模块
根据账务账号,身份号等条件查询账单信息。
5)扩展功能4:报表模块
统计某个用户在每个月使用服务器的总时间。
==========SSH重构方法=============
1.工程改造:原工程Struts2+JDBC
目标工程:Struts2+Spring+Hibernate
1)追加jar包
追加Spring框架的开发包(ioc,aop)
追加Hibernate框架的开发包
追加struts2-spring-plugin.jar
追加dbcp连接池开发包
2)追加配置
src下添加Spring配置文件.
--applicationContext-component.xml
--applicationContext-transaction.xml
web.xml中追加ContextLoaderListener配置
--加载路径classpath:applicationContext-*.xml
web.xml中追加OpenSessionInViewFilter配置
---------------------------------------
2.功能改造(账务账号查询功能)
1)熟悉原有设计流程
accountSearch.action
-->AccountSearchAction.execute
-->AccountDAOImpl.findByParameters()
-->/account/account_list.jsp
2)改造AccountDAO.findByParameters()
--检查是否有操作表的POJO类和hbm.xml,没有追加
追加Account.hbm.xml映射描述文件和POJO类
(注意修改POJO和hbm.xml保持一致)
--重新创建一个AccountDAO组件,采用Spring+Hibernate方式实现。
--将AccountDAO组件扫描到Spring容器
在applicationContext-component.xml开启组件扫描。
在AccountDAO类定义前添加@Repository注解.
将SessionFactory给AccountDAO注入。
--单体测试,测试Spring中的AccountDAO
3)改造AccountSearchAction
--将Action扫描到Spring容器
--采用@Resource注入方式使用DAO
--修改<action>配置的class属性值
4)改造完毕,测试
3.追加业务账号查询
1)设计请求处理流程
searchService.action-->SearchServiceAction
-->HibernateServiceDAO-->service/service_list.jsp
2)编写HibernateServiceDAO
--添加操作表的POJO和hbm.xml。检查POJO和hbm.xml是否一致,注意hbm.xml中pojo的包路径。
--在applicationContext-component.xml中的sessionFactory定义中加载hbm.xml
--编写HibernateServiceDAO接口和实现
--将HibernateServiceDAO扫描到Spring容器
3)TODO 编写SearchServiceAction
--将Action扫描到Spring容器
--采用@Resource注入方式使用DAO
--修改<action>配置的class属性值
4)TODO 测试
4.追加权限控制功能
采用Struts2拦截器检查是否登录,是否拥有权限。
未登录定位到登陆页面,登录进行权限检查,没有权限定位提示页面。
1)修改privileges.xml权限配置文件。
将系统操作请求定义到privileges.xml中.
2)权限控制具体方案:
用户登录成功,向用户session写入用户对象信息和该用户具有的权限列表信息。
用户执行每个请求操作时,取出该请求的URL地址,和session中该用户的权限列表对比,如果包含在权限列表中,说明具有操作权限,如果没有包含,说明不具有操作权限。
5.定时执行生成账单任务
采用Quartz任务调度组件定时调用Oracle端的PL/SQL程序完成。
1)根据Service_Detail表生成Bill和Bill_Item表的记录。
2)将变更的业务备份信息同步到Service表
login.do-->LoginAction-->AdminInfoDAO
-->成功index.html(失败login.jsp)
============权限管理的设计==============
1.功能设计:
系统提供了管理员、角色、权限这3部分。
一个管理员可以具有多个角色。
一个角色可以具有多个权限。
一个权限可以具有多个操作请求URL。
系统通过管理员管理模块,角色管理模块可以对管理员、角色等信息进行维护。
权限控制的实现:用户登录成功后,会将用户信息和他具有的权限操作信息写入session.在用户进入系统进行各个操作时,首先会调用Struts2拦截器组件,检查用户是否登录,如果登录,检查当前操作URL是否在权限操作列表中。如果存在此URL,允许执行后续业务处理,不存在定位到没有权限提示页面.
2.数据库设计
Admin_Info(管理员表)
Admin_Role(管理员和角色关系表)
Role(角色表)
Role_Privilege(角色和权限关系表)
Privilege表或privileges.xml (权限表)
========任务调度设计===========
1.存储过程UPDATE_SERVICE_COST
将变更业务资费操作的记录更新到Service表
2.触发器gen_fee
通过DMS数据采集系统,向Service_Detail表插入数据时,执行该触发器处理。
该触发器在采集Service_Detail数据插入时,计算该表中COST费用字段值。根据使用UNIX服务器时间,针对套餐计费和计时计费用户分别进行计算。
3.存储过程GBILL_ALL
根据Service_Detail表的记录,生成Bill和Bill_Item账单信息。
主要逻辑:根据Service_Detail信息,首先生成Bill_Item,然后根据Bill_Item生成Bill记录,放到临时表中。之后从临时表取出数据,向Bill插入记录,有了Bill_ID主键值了,再向Bill_Item插入记录。
4.Java功能端的实现
每月月底自动执行GBILL_ALL(先执行)和UPDATE_SERVICE_COST(后执行)存储过程。
基于Quartz调度组件每月底24:00执行上述两个存储过程。
----------技术调研过程------------
1. Java 定时任务
CSDN
ITEYE
Blog
2.Quartz
了解Quartz作用
3.Quartz 使用入门
了解Quartz主要构成.
了解触发器表达式.
*4.Spring Quartz
Spring+Quartz使用示例
*5.Hibernate 调用存储过程
============账单管理的查询============
姓名
身份证
*账单时间
*账单ID
*账务账号
*账单费用
*支付状态
*支付方式
--------------SQL-------------
select b.ID,b.ACCOUNT_ID,
b.BILL_MONTH,b.COST,
b.PAYMENT_MODE,
b.PAY_STATE,
a.IDCARD_NO,a.REAL_NAME
from BILL b
join ACCOUNT a on(b.ACCOUNT_ID=a.ID)
//where
-------------HQL----------
select b.id,b.accountId,
b.billMonth,b.cost,
b.paymentMode,b.payState,
a.idcardNo,a.realName
from Bill b,Account a
where b.accountId = a.id
=======账单管理的账单明细查询========
需要2个查询语句,一个用于查询上面账单信息显示,
另一个用于查询明细列表信息。
----------1、查询账单信息 HQL--------
select b.id,b.accountId,
b.billMonth,b.cost,
a.idcardNo,a.realName
from Bill b,Account a
where b.accountId = a.id and b.id=?
-----------2、查询账单明细列表 SQL----------
*账单ID
*账单明细ID
*OS 账号
*服务器 IP
*账务账号ID
*时长sum(duration)
*费用
*资费
select bi.ITEM_ID,s.OS_USERNAME,
s.UNIX_HOST,s.ACCOUNT_ID,
bi.COST,c.NAME,sum(sd.DURATION)
from BILL_ITEM bi ,SERVICE s,
COST c,SERVICE_DETAIL sd
where bi.SERVICE_ID=s.ID
and s.COST_ID= c.ID
and sd.SERVICE_ID=s.ID
and bi.BILL_ID=?
group by bi.ITEM_ID,s.OS_USERNAME,
s.UNIX_HOST,s.ACCOUNT_ID,
bi.COST,c.NAME;
-----------3、查询账单明细的使用明细记录 SQL----------
select sd.CLIEND_ID,sd.LOGIN_TIME,
sd.LOGOUT_TIME,sd.DURATION,
sd.COST,c.NAME
from SERVICE_DETAIL sd,SERVICE s,
COST c,BILL_ITEM bi
where sd.SERVICE_ID=s.ID
and s.COST_ID=c.ID
and bi.SERVICE_ID=s.ID
and bi.ITEM_ID=?
===========报表模块查询============
1.客户使用使用时长
select a.id,a.login_name,a.real_name,
a.idcard_no,a.telephone,
to_char(sd.logout_time,'yyyymm') as month,
sum(sd.duration)
from Account a,Service s,Service_Detail sd
where a.id=s.account_id and s.id=sd.service_id
group by a.id,a.login_name,a.real_name,
a.idcard_no,a.telephone,
to_char(sd.logout_time,'yyyymm')
order by a.id,month;
2.时长排行榜
-----获取每一台服务器的前3名账户-----
select * from
(
select s1.unix_host,s1.account_id,a1.real_name,a1.idcard_no, sum(sd1.duration) total
from Service s1,Service_Detail sd1,Account a1
where s1.id=sd1.service_id(+) and s1.unix_host='192.168.0.20' and a1.id=s1.account_id
group by s1.unix_host,s1.account_id,a1.real_name,a1.idcard_no
--having sum(sd1.duration) is not null
order by total desc
)
where rownum<=3
-------------------------------
先查询HOST获取所有服务器信息。
然后在业务层遍历服务器集合,循环获取
每一台服务器按累计时长排序的
前3名账户信息,之后拼成一个
账户信息集合,传递到页面,迭代显示。
3.资费使用率列表实现
可以采用formula子查询映射实现。
参考代码中的Host类和Host.hbm.xml文件
发表评论
-
PLSQL学习笔记
2014-02-12 23:54 1929第一天: 1、 SQL:是单纯的SQL语句, ... -
ORACEL学习笔记
2014-02-12 23:52 11541. SQL语言的分类 1. ... -
自动生成日期的差值.....
2013-12-30 19:48 680自动生成两个日期的差值 后台的验证:String stayDu ... -
Jquery学习笔记
2013-11-25 00:00 560第一天 jQuery介绍 Jquery是一个js框架(其实就是 ... -
Ajax学习笔记
2013-11-24 23:08 439第一天 Ajax的核心是js的 ... -
JDBC学习笔记
2013-11-24 23:05 600-----------------------------JD ... -
PL/SQL学习笔记
2013-11-24 22:50 840SQL:是单纯的SQL语句,PL/SQL:是把DML和sel ...
相关推荐
整合SSH 框架所需 jar 包(maven 项目 pom.xml 格式),包含大部分的 jar 包引入说明
【Java SSH CRM项目详解】 Java SSH CRM项目是一个基于Java技术栈的企业级客户关系管理(CRM)系统。SSH是Spring、Struts和Hibernate三个开源框架的缩写,它们共同构成了Java Web开发的强大基石。这个项目利用这三...
SpringBoot 是一种基于 Spring 框架的高度集成...这个项目不仅是一个学习资源,也可以作为实际项目重构的参考模板。通过深入研究和实践,你可以更好地掌握 SpringBoot 的核心特性和最佳实践,提高你的 Java 开发技能。
【描述】提到"有文档,数据库2013-03-19",这表明重构项目不仅包含了源代码,还有相关的技术文档,这些文档可能包括设计文档、需求分析、数据库模型等,帮助开发者理解项目结构和业务逻辑。同时,存在一个2013年3月...
在SSH项目中,可能涉及对Action、Service、DAO层的优化,比如提取重复代码、减少耦合、增强测试覆盖率等。 这个基于SSH的商城项目后台,通过合理地运用设计模式和框架,实现了功能丰富的后台管理功能,包括商品管理...
此外,表单的action属性设置,以及SSH项目重构的步骤也是开发中需要注意的点。 以上是对Spring框架的一些关键知识点的详解,涵盖了从基础概念到实际应用的多个方面,对于学习和掌握Spring有着重要的指导意义。
这是一个基于SSH的DRP系统,已经实现了基础数据管理,分销商库存管理,系统管理等功能,可以直接运行,使用的工具是myeclipse8.5,mySql等,有sql文件,还有关于DRP的ppt,和html模版,需要的朋友可以下载下来参考
### SSH项目经验总结 #### 1. SSH框架基础与整合 - **SSH框架**:SSH是Struts2、Spring和Hibernate三个开源框架的首字母缩写。这些框架被广泛应用于Java Web开发中,用于构建高性能的企业级应用。 - **Struts2**...
在压缩包中的"ssh"目录很可能包含了整个SSH项目的源代码,包括配置文件如struts.xml、hibernate.cfg.xml和spring配置文件,以及Action类、DAO(数据访问对象)层、Service层和实体类等。Action类是Struts2的核心,...
在这个SSH项目中,Spring很可能是用来管理业务逻辑和数据访问层的组件。 **Hibernate** 是一个ORM(Object-Relational Mapping,对象关系映射)框架,它允许开发者用Java对象来操作数据库,而无需编写SQL。...
SSH,全称Spring、Struts、Hibernate,是Java Web开发中的三大开源框架,它们的集成应用广泛用于构建高效、可维护的...通过分析和重构这个项目,开发者可以深入理解SSH框架的工作原理,提升自己的编程和架构设计能力。
它内置了对SSH的支持,包括项目模板、自动配置、调试工具等,方便开发者快速构建SSH项目。在MyEclipse中,可以方便地创建和管理SSH的各个组件,以及利用其强大的代码提示和重构功能。 5. **sample.sql**:这个文件...
SSH网上书店代码是一个基于Struts、Spring和Hibernate这三个框架集成开发的项目,旨在实现一个简易的在线购书系统。SSH是Java开发Web应用时常用的三大框架,分别负责表现层、业务逻辑层和数据访问层的功能。 1. **...
在MyEclipse 6.0版本中,开发者可以方便地创建、运行和调试SSH项目。 SQL Server 2000是由Microsoft公司开发的关系型数据库管理系统,它支持多种数据库操作,包括数据存储、查询、备份和恢复等。在开发登录模块时,...
7. **软件库管理系统**:提及将论坛系统改造为软件库管理系统,这可能涉及到对原有业务逻辑的调整和模块的重构,例如添加对软件信息的管理、版本控制、下载统计等功能。 8. **讨论与问题解答**:提供论坛供用户交流...
在用户管理系统开发过程中,MyEclipse提供了一个便捷的环境来编写、编译和运行SSH项目,同时也支持代码提示、重构等功能,提高开发效率。 最后,MyEclipse内嵌的Tomcat服务器是运行这个SSH用户管理系统所需的Web...
**基于配置SSH2的网上商城**是一个典型的Java Web项目,主要使用了Spring、Struts2和Hibernate这三大框架,简称SSH2。这个项目适合于学习和实践...而对于有经验的开发者,这样的项目则提供了重构、优化和扩展的挑战。
这个本人做的 SSH 集成框架(扫描加注解) 包含整个项目(src) 1、环境是 tomcat6.0 mysql5.5 、eclipse 、jdk1.6 2、有用户登录、单元测试。功能 用户的增、删、改、查, 用户登录有jsp页面 增、删、改、查在...
对于描述中的"已完成user、main、cart部分的结构优化,还差order部分没有优化",这可能是在进行一个电商项目,其中user、main、cart和order可能代表用户模块、主界面模块、购物车模块和订单模块。在SSH的上下文中,...
SSH框架,全称为Spring、Struts和Hibernate,是Java企业级开发中常用的一种开源框架组合。这个框架集合提供了模型-视图-控制器(MVC...在实际开发中,应根据项目的规模、复杂度和团队能力来决定是否使用SSH或其他框架。