浏览 1606 次
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-16
原文:http://www.hao-se.cn/blog/article.asp?id=4 项目概要:商品登记后台管理的模拟系统 主要功能模块:新用户注册、忘记密码取回新密码、商品类别的管理(包括类别登记、维护、重新设置商品的归类)、商品的管理(包括商品的登记、维护)、批处理(商品信息的批量上载、下载)、修正密码功能 技术:采用轻量级的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> 注意粗体红色的部分,它们是一一对应的,粗体蓝色的部分说明action由spring来接管 注意:这里的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对应 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |