`
haose
  • 浏览: 3858 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

利用struts,spring,hibernate编写的一个案例分析—相关技术、业务流程内容

阅读更多
项目概要:商品登记后台管理的模拟系统
主要功能模块新用户注册、忘记密码取回新密码商品类别的管理(包括类别登记、维护、重新设置商品的归类)、商品的管理(包括商品的登记、维护)、批处理(商品信息的批量上载、下载)、修正密码功能
技术:采用轻量级的web开发框架(SSH组合– struts、spring、hibernate)来实现,应用经典的MVC架构
按照包的划分分别描述一下系统中所起的作用(java部分):
Action—控制层(由struts来体现),与struts-config.xml结合,控制页面的流转
Dao—数据访问对象层,负责和数据库打交道,应用结合了hibernate技术,以及jdk1.5的泛型技术,形成一个通用的DAO层
Model—模型层,对应数据库中的表结构,由hibernate技术实现
Serlvet—用于初始化基础数据
Service—服务层(业务层),体现整个系统的业务逻辑,也是整个系统最为复杂关键的部分
Activemq— 异步消息发送装置(JMS的一种开源实现),由消息接收装置(consumer包下)、消息转换装置(converter包下)和消息发送装置 (producer包下)组成。这里主要是用于邮件的异步发送,在新用户注册、取回密码时都是通过发送邮件来实现的。异步的优点是在不影响当前系统的进程 下完成任务。
Dwr—Ajax的实现,这里采用了开源的dwr技术实现。主要利用在整体页面不刷新的情况下,动态的改变部分页面内容,提高用户的体验度。比如动态判断用户、类别、商品code等是否已经存在,获取商品类别的显示菜单等等。
Mail—邮件发送功能,其中邮件内容的生成策略采用freemarker技术来实现
Util—工具类,有image下的图片制作类;upload下的图片上传功能;Digest加密技术;Guid用于hibernate的id的生成器
META-INF—下的说明:因为采用activemq4.1版本的原因,它的xsd文件有一定的出入,所以采用修正过的文件,由spring.schemas加载
Resources—资源文件
hibernate.properties:用于配置hibernate参数
mail.properties:配置邮件系统的参数
displaytag:在前台页面显示中,会采用displaytag技术来显示表格,这里配置相应的参数
ApplicationResources:国际化资源信息
WEB-INF下配置信息的几点重要说明:
首先要说明的是—所有的业务逻辑、action、数据访问层、异步装置、邮件系统…都是交由spring来管理的。所以在spring的包下可 以看到action.xml、activemq.xml、dao.xml、dwr.xml、mail.xml、service.xml以及 hibernate的核心配置base.xml和组装所以信息的beans.xml。
这是配置文件的核心所在,下面一一介绍:
action.xml—需要和struts包下的struts-config.xml配合使用,这里把action的生命周期也交由spring来管理了。可以看个例子
struts-config.xml下的loginAction
<action path=”/loginAction”name=“loginForm” parameter=“method”
type=”org.springframework.web.struts.DelegatingActionProxy”
scope=“request” validate=“false” input=“/jsp/login.jsp”>
<forward name=“success” path=“/jsp/default.jsp” />
</action>
action.xml下的loginAction
<bean name=”/loginAction”class=“com.iplan.portal.action.LoginAction”>
<property name=“userService”>
<ref bean=“userService” />
</property>
</bean>
注意粗体红色的部分,它们是一一对应的,粗体蓝色的部分说明actionspring来接管
注意:这里的action.xml没有在beans.xml中接管,而是在web.xml中体现的。因为struts-config.xml和action.xml是联动的关系,在web.xml中通过servlet中配置struts-config.xml即可。
activemq.xml—配置异步装置,对应java下service包下的activemq中的类信息
dao.xml—数据访问对象配置,baseGenericDAO:泛型dao。下面的userDAO、categoryDAO、productDAO都继承于泛型dao,分别是三个实体的数据访问对象。
dwr.xml—ajax的实现方式,对应java下service包下的dwr中的类信息。
在页面使用时,需要配置dwr下的dwr.xml信息,同时在web.xml中通过servlet配置即可
mail.xml—邮件系统配置,对应java下service包下的mail中的类信息
service.xml—业务信息,有用户、商品类别、商品信息、批处理的业务逻辑。对应java下service包下类信息
base.xml—hibernate的配置
propertyConfigurer:属性配置,包含了hibernate.properties和mail.properties
dataSource:数据源
mySessionFactory:hibernate的SessionFactory
myTransactionManager:hibernate的事务管理
transactionAttributeSource:事务属性源
transactionInterceptor:事务拦截器
以及transactionAdvisor和BeanNameAutoProxyCreator,关于事务这块是用AOP技术实现的
beans.xml—集中处理所有相关的配置文件
在web.xml中配置contextConfigLocation为/WEB-INF/spring/beans.xml,在系统启动过程中即可加载所有spring的配置信息
其它相关配置信息的说明
htmlTemplate下的NodifyFindPwd.ftl:是邮件的模板内容,由freemarker技术来实现
log4j.properties:日志信息,分别写到了控制台和日志文件中去。
写到日志文件分析如下:
log4j.appender.fileout.File=${haose.root}/log/haose_log.txt
其中的${haose.root}是web.xml中的
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>haose.root</param-value>
</context-param>
是应用的上下文物理路径
还有一个技术点,就是在编辑商品信息的时候,点击图片会展示一个放大的图片内容,是使
用了图片特效,用js来实现,在scripts下的AJS_fx.js、AJS.js、gb_scripts.js、loader_frame.html
和css下的gb_styles.cs。这里你的应用名称还是用haose,如果修改了别的名字,
loader_frame.html里有一也是要同时修正的,在<img src=”/haose/images/GreyBox/indicator.gif”>
这句。
jsp的说明
从index.jsp转到jsp下的login.jsp(用到两个特效,和上面提到的图片特效是一起的。一个是新用户注册,还一个是忘记密码)
登录后进入default.jsp,它是一个frame结构
在jsp下的template中就是frame结构对应的jsp内容了,有header、footer、menu和body,而body部分是被其它内容经常替换的。
其它的如category下、product下、excel下,都是在body部分来一一体现的。
WebRoot下的excel,是批处理下载的excel文件存放的位置
WebRoot下的upload,是登记商品时,图片上传的位置
以上是所有相关的技术内容
关于流程内容,就按照主要功能模块进行,先新用户注册,然后通过邮件收取随机的密码,登录后,可以去修正密码。这个一个过程,同样,如果忘记密码,可以取回密码,也是通过邮件发送的,然后登录,可以去修正密码。
接下来,第一步商品类别的管理,首先得设置类别,然后才可以登记商品。这里建议,商品类别登记好后,不要随意去编辑维护它,其实它属于基础数据的一部分。重新设置商品的归类功能需要在登记商品后使用。
下一步是商品的管理,可以登记、然后维护
批处理其实是批量处理商品登记,和商品登记的效果是一样的,附件中已经给你样本了。
批处理的下载是把数据库中商品导到excel中去,和样本是一样的
然后就是系统功能了,修正密码,这在上面的用户注册、取回密码中都可以同时使用。
运行该系统时,前提的任务是以下几件:
1、 建立一个数据库,这里是以haose为例的,可以看hibernate.properties中的配置信息,匹配即可。(另:表不需要建,运行时自动创建)
2、 设置邮件,在mail.properties中配置,同时在Constants.java中常量SYSTEM_MAILBOX也需要和mail.properties中的mail.username对应

更多详情请参见:我的博客 我的生活
分享到:
评论

相关推荐

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...

    传智博客Struts,spring,hibernate,SSH综合案例

    SSH是 struts+spring+hibernate的一个集成框架,是目前比较流行的一种Web应用程序开源框架。 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握...

    Java语言要注意的问题及其实用案例分析,直接拿走吧

    10个Java案例,涵盖了Java的不同知识点: 简单计算器:编写一个程序,接收用户的两个数字输入,...Web应用开发:使用Java的Web框架(如Spring、Struts、Hibernate等),开发一个简单的Web应用,实现用户注册、登录。

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax+》讲解了JSP/S rvlet技术的基础知识,并提供了一个综合案例展示其具体应用,它们是Java Web服务端技术的基石,也是学习Java Web开发所要必须掌握...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    JAVA程序开发大全---上半部分

    以及基于这些技术的商业化应用程序的开发技巧,在讲解过程中以目前最为流行的开发工具MyEclipse为载体,全面系统地介绍了如何在MyEclipse中开发基于Struts、Hibernate、Spring等主流框架的各种Java应用程序。...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...

    iBATIS实战

    书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的大部分知识点,可以作为iBATIS学习和Web开发的经典案例,非常值得深入研究。 本书既可为广大的开发人员(不仅仅是Web应用程序开发人员)...

Global site tag (gtag.js) - Google Analytics