<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>jelver</title>
    <description>因为自己在blogjava那里已经有了blog，所以就不打算在这里写了
地址为：http://www.blogjava.net/jelver/
欢迎光顾！</description>
    <link>http://jelver.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>利用struts,spring,hibernate编写的一个案例分析---相关技术、业务流程内容</title>
        <author>jelver</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jelver.javaeye.com">jelver</a>&nbsp;
          链接：<a href="http://jelver.javaeye.com/blog/183309" style="color:red;">http://jelver.javaeye.com/blog/183309</a>&nbsp;
          发表时间: 2008年04月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          原文：<a href="http://www.hao-se.cn/blog/article.asp?id=4" target="_blank">http://www.hao-se.cn/blog/article.asp?id=4</a><br />项目概要：商品登记后台管理的模拟系统<br /> <br />主要功能模块：新用户注册、忘记密码取回新密码、商品类别的管理（包括类别登记、维护、重新设置商品的归类）、商品的管理（包括商品的登记、维护）、批处理（商品信息的批量上载、下载）、修正密码功能<br /> <br />技术：采用轻量级的web开发框架（SSH组合-- struts、spring、hibernate）来实现，应用经典的MVC架构<br /> <br />按照包的划分分别描述一下系统中所起的作用（java部分）：<br />Action—控制层（由struts来体现），与struts-config.xml结合，控制页面的流转<br />Dao—数据访问对象层，负责和数据库打交道，应用结合了hibernate技术，以及jdk1.5的泛型技术，形成一个通用的DAO层<br />Model—模型层，对应数据库中的表结构，由hibernate技术实现<br />Serlvet—用于初始化基础数据<br />Service—服务层（业务层），体现整个系统的业务逻辑，也是整个系统最为复杂关键的部分<br />Activemq—异步消息发送装置（JMS的一种开源实现），由消息接收装置（consumer包下）、消息转换装置（converter包下）和消息发送装置（producer包下）组成。这里主要是用于邮件的异步发送，在新用户注册、取回密码时都是通过发送邮件来实现的。异步的优点是在不影响当前系统的进程下完成任务。<br />Dwr—Ajax的实现，这里采用了开源的dwr技术实现。主要利用在整体页面不刷新的情况下，动态的改变部分页面内容，提高用户的体验度。比如动态判断用户、类别、商品code等是否已经存在，获取商品类别的显示菜单等等。<br />Mail—邮件发送功能，其中邮件内容的生成策略采用freemarker技术来实现<br />Util—工具类，有image下的图片制作类；upload下的图片上传功能；Digest加密技术；Guid用于hibernate的id的生成器<br /> <br />META-INF—下的说明：因为采用activemq4.1版本的原因，它的xsd文件有一定的出入，所以采用修正过的文件，由spring.schemas加载<br /> <br />Resources—资源文件<br />hibernate.properties：用于配置hibernate参数 <br />mail.properties：配置邮件系统的参数<br />displaytag：在前台页面显示中，会采用displaytag技术来显示表格，这里配置相应的参数<br />       ApplicationResources：国际化资源信息<br /> <br />WEB-INF下配置信息的几点重要说明：<br />首先要说明的是—所有的业务逻辑、action、数据访问层、异步装置、邮件系统…都是交由spring来管理的。所以在spring的包下可以看到action.xml、activemq.xml、dao.xml、dwr.xml、mail.xml、service.xml以及hibernate的核心配置base.xml和组装所以信息的beans.xml。<br />这是配置文件的核心所在，下面一一介绍：<br /> <br />action.xml—需要和struts包下的struts-config.xml配合使用，这里把action的生命周期也交由spring来管理了。可以看个例子<br />struts-config.xml下的loginAction<br />&lt;action path="/loginAction"name="loginForm" parameter="method"<br />       type="org.springframework.web.struts.DelegatingActionProxy"<br />       scope="request" validate="false" input="/jsp/login.jsp"><br />       &lt;forward name="success" path="/jsp/default.jsp" /><br />&lt;/action><br />action.xml下的loginAction<br />&lt;bean name="/loginAction"class="com.iplan.portal.action.LoginAction"><br />       &lt;property name="userService"><br />           &lt;ref bean="userService" /><br />       &lt;/property><br />&lt;/bean><br />注意粗体红色的部分，它们是一一对应的，粗体蓝色的部分说明action由spring来接管<br />注意：这里的action.xml没有在beans.xml中接管，而是在web.xml中体现的。因为struts-config.xml和action.xml是联动的关系，在web.xml中通过servlet中配置struts-config.xml即可。<br /> <br />activemq.xml—配置异步装置，对应java下service包下的activemq中的类信息<br /> <br />dao.xml—数据访问对象配置，baseGenericDAO：泛型dao。下面的userDAO、categoryDAO、productDAO都继承于泛型dao，分别是三个实体的数据访问对象。<br /> <br />dwr.xml—ajax的实现方式，对应java下service包下的dwr中的类信息。<br />在页面使用时，需要配置dwr下的dwr.xml信息，同时在web.xml中通过servlet配置即可<br /> <br />mail.xml—邮件系统配置，对应java下service包下的mail中的类信息<br /> <br />service.xml—业务信息，有用户、商品类别、商品信息、批处理的业务逻辑。对应java下service包下类信息<br /> <br />base.xml—hibernate的配置<br />                   propertyConfigurer：属性配置，包含了hibernate.properties和mail.properties<br />                   dataSource：数据源<br />                   mySessionFactory：hibernate的SessionFactory<br />                   myTransactionManager：hibernate的事务管理<br />                   transactionAttributeSource：事务属性源<br />                   transactionInterceptor：事务拦截器<br />                   以及transactionAdvisor和BeanNameAutoProxyCreator，关于事务这块是用AOP技术实现的<br /> <br />beans.xml—集中处理所有相关的配置文件<br />                   在web.xml中配置contextConfigLocation为/WEB-INF/spring/beans.xml，在系统启动过程中即可加载所有spring的配置信息<br />其它相关配置信息的说明<br />htmlTemplate下的NodifyFindPwd.ftl：是邮件的模板内容，由freemarker技术来实现<br /> <br />log4j.properties：日志信息，分别写到了控制台和日志文件中去。<br />写到日志文件分析如下：<br />log4j.appender.fileout.File=${haose.root}/log/haose_log.txt<br />其中的${haose.root}是web.xml中的<br />&lt;context-param><br />&lt;param-name>webAppRootKey&lt;/param-name><br />&lt;param-value>haose.root&lt;/param-value><br />&lt;/context-param><br />是应用的上下文物理路径<br /> <br />还有一个技术点，就是在编辑商品信息的时候，点击图片会展示一个放大的图片内容，是使<br />用了图片特效，用js来实现，在scripts下的AJS_fx.js、AJS.js、gb_scripts.js、loader_frame.html<br />和css下的gb_styles.cs。这里你的应用名称还是用haose，如果修改了别的名字，<br />loader_frame.html里有一也是要同时修正的，在&lt;img src="/haose/images/GreyBox/indicator.gif"><br />这句。<br /> <br />jsp的说明<br />从index.jsp转到jsp下的login.jsp（用到两个特效，和上面提到的图片特效是一起的。一个是新用户注册，还一个是忘记密码）<br />登录后进入default.jsp，它是一个frame结构<br />在jsp下的template中就是frame结构对应的jsp内容了，有header、footer、menu和body，而body部分是被其它内容经常替换的。<br />其它的如category下、product下、excel下，都是在body部分来一一体现的。<br /> <br />WebRoot下的excel，是批处理下载的excel文件存放的位置<br />WebRoot下的upload，是登记商品时，图片上传的位置<br /> <br /> <br />以上是所有相关的技术内容<br /> <br />关于流程内容，就按照主要功能模块进行，先新用户注册，然后通过邮件收取随机的密码，登录后，可以去修正密码。这个一个过程，同样，如果忘记密码，可以取回密码，也是通过邮件发送的，然后登录，可以去修正密码。<br />接下来，第一步商品类别的管理，首先得设置类别，然后才可以登记商品。这里建议，商品类别登记好后，不要随意去编辑维护它，其实它属于基础数据的一部分。重新设置商品的归类功能需要在登记商品后使用。<br />下一步是商品的管理，可以登记、然后维护<br />批处理其实是批量处理商品登记，和商品登记的效果是一样的，附件中已经给你样本了。<br />批处理的下载是把数据库中商品导到excel中去，和样本是一样的<br /> <br />然后就是系统功能了，修正密码，这在上面的用户注册、取回密码中都可以同时使用。<br /> <br />运行该系统时，前提的任务是以下几件：<br />1、  建立一个数据库，这里是以haose为例的，可以看hibernate.properties中的配置信息，匹配即可。（另：表不需要建，运行时自动创建）<br />2、  设置邮件，在mail.properties中配置，同时在Constants.java中常量SYSTEM_MAILBOX也需要和mail.properties中的mail.username对应
          <br/>
          <span style="color:red;">
            <a href="http://jelver.javaeye.com/blog/183309#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 16 Apr 2008 11:37:01 +0800</pubDate>
        <link>http://jelver.javaeye.com/blog/183309</link>
        <guid>http://jelver.javaeye.com/blog/183309</guid>
      </item>
      <item>
        <title>极力推荐的英语面试资料的好网站</title>
        <author>jelver</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jelver.javaeye.com">jelver</a>&nbsp;
          链接：<a href="http://jelver.javaeye.com/blog/175801" style="color:red;">http://jelver.javaeye.com/blog/175801</a>&nbsp;
          发表时间: 2008年03月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          极力推荐的英语面试资料的好网站,如何对付HR的英语提问，以及相关工作上的英语，该网站资料比较齐全，如果你要拍砖请希望进入网站看看再拍，因为很可能你要的东西就在里面<img src="/images/smiles/icon_wink.gif"/>当然别忘了我推荐的；）<br /><a href="http://bbs.17hr.com/?fromuser=jelver" target="_blank">http://bbs.17hr.com/?fromuser=jelver</a>
          <br/>
          <span style="color:red;">
            <a href="http://jelver.javaeye.com/blog/175801#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 25 Mar 2008 13:37:09 +0800</pubDate>
        <link>http://jelver.javaeye.com/blog/175801</link>
        <guid>http://jelver.javaeye.com/blog/175801</guid>
      </item>
      <item>
        <title>广州短讯神州网络技术有限公司 招聘java开发工程师</title>
        <author>jelver</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jelver.javaeye.com">jelver</a>&nbsp;
          链接：<a href="http://jelver.javaeye.com/blog/165727" style="color:red;">http://jelver.javaeye.com/blog/165727</a>&nbsp;
          发表时间: 2008年02月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. 精通Java编程；<br />2. 熟练使用Struts、Eclipse、hibernate进行编程开发，有JAVA WEB开发经验；<br />3. 熟悉主流数据库的应用， 有Oracle使用经验者优先考虑；<br />4. 扎实的计算机基础，要求计算机相关专业毕业；<br />5. 具有团队、协作精神，好学、主观能动性强，有精益求精的追求；<br />6. 有移动增值业务开发经验者优先；<br />7. 本招聘只对有正式工作经验者有效；<br /><br />以上招聘联系方式如下：<br />  <br /> 电子邮件：cqm@wichina.cn<br /> 公司地址：广州越秀区
          <br/>
          <span style="color:red;">
            <a href="http://jelver.javaeye.com/blog/165727#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 28 Feb 2008 13:48:00 +0800</pubDate>
        <link>http://jelver.javaeye.com/blog/165727</link>
        <guid>http://jelver.javaeye.com/blog/165727</guid>
      </item>
  </channel>
</rss>