`
kyo100900
  • 浏览: 639767 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2+Spring+Hibernate In Action(四)

阅读更多

第二部分:

1.DWR的配置:

DWR是Java一个比较常用的Ajax框架,与Spring集成更是得心应手,可以非常方便的操作注册在Spring配置文件中的Bean。这我们导入DWR包后,就可以在web.xml里面配置它了。

 

web.xml关于DWR配置。

xml 代码
  1. <servlet>  
  2.         <servlet-name>dwr-invokerservlet-name>  
  3.         <servlet-class>  
  4.             org.directwebremoting.servlet.DwrServlet   
  5.         servlet-class>  
  6.         <init-param>  
  7.             <param-name>debugparam-name>  
  8.             <param-value>infoparam-value>  
  9.         init-param>  
  10.         <init-param>  
  11.             <param-name>maxWaitAfterWriteparam-name>  
  12.             <param-value>500param-value>  
  13.         init-param>  
  14.         <load-on-startup>1load-on-startup>  
  15.     servlet>  
  16.   
  17.     <servlet-mapping>  
  18.         <servlet-name>dwr-invokerservlet-name>  
  19.         <url-pattern>/dwr/*url-pattern>  
  20.     servlet-mapping>  

 

DWR还有一个叫dwr.xml文件,放在WEB-INF下,里面都是配置DWR与JS交互使用的Bean或Entity。 当然DWR也支持Anotation,可以在web.xml配置。但我们这个例子使用的是xml配置。

以下是dwr.xml代码:

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->
  3.     "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"   
  4.     "http://www.getahead.ltd.uk/dwr/dwr20.dtd">  
  5. <dwr>  
  6.     <allow>  
  7.         <create creator="spring" javascript="ArticleService">  
  8.             <param name="beanName" value="articleService" />  
  9.         create>  
  10.   
  11.   
  12.     allow>  
  13. dwr>  

这个ArticleService就是我们要通过JS调用Spring注册的Bean。

现在可以看看这个源文件:

java 代码
  1. /**  
  2.  * 用户Service  
  3.  */  
  4. package com.leo.service.impl;   
  5.   
  6. import java.util.Date;   
  7. import java.util.List;   
  8.   
  9. import org.apache.log4j.Logger;   
  10.   
  11. import com.leo.po.Article;   
  12. import com.leo.po.Log;   
  13. import com.leo.po.Mail;   
  14. import com.leo.service.IArticleService;   
  15. import com.leo.service.ILogService;   
  16. import com.leo.service.IMailService;   
  17. import com.leo.util.JavaMailSenderUtil;   
  18. import com.leo.util.RegEx;   
  19.   
  20. /**  
  21.  * @author superleo  
  22.  *   
  23.  */  
  24. public class ArticleServiceImpl extends GenericServiceImpl   
  25.         implements IArticleService {   
  26.   
  27.     private static Logger logger = Logger.getLogger(ArticleServiceImpl.class);   
  28.   
  29.     private IMailService mailService;   
  30.   
  31.     private ILogService logService;   
  32.   
  33.     private JavaMailSenderUtil javaMailSenderUtil;   
  34.   
  35.     public JavaMailSenderUtil getJavaMailSenderUtil() {   
  36.         return javaMailSenderUtil;   
  37.     }   
  38.   
  39.     public void setJavaMailSenderUtil(JavaMailSenderUtil javaMailSenderUtil) {   
  40.         this.javaMailSenderUtil = javaMailSenderUtil;   
  41.     }   
  42.   
  43.     public ILogService getLogService() {   
  44.         return logService;   
  45.     }   
  46.   
  47.     public void setLogService(ILogService logService) {   
  48.         this.logService = logService;   
  49.     }   
  50.   
  51.     public IMailService getMailService() {   
  52.         return mailService;   
  53.     }   
  54.   
  55.     public void setMailService(IMailService mailService) {   
  56.         this.mailService = mailService;   
  57.     }   
  58.   
  59.     public ArticleServiceImpl(Class<article></article> type) {   
  60.         super(type);   
  61.     }   
  62.   
  63.     public int storeByURL() throws Exception {   
  64.         int count = RegEx.doRegEx();   
  65.         // 保存每5分钟,抓取的记录数量   
  66.         Article article = new Article();   
  67.         article.setCount(count);   
  68.         article.setCreateDate(new Date());   
  69.         this.store(article);   
  70.   
  71.         // 群发邮件   
  72.         List<mail></mail> mails = mailService.findByAll();   
  73.         logger.info("开始群发邮件........");   
  74.         for (Mail mail : mails) {   
  75.             Log log = new Log();   
  76.             log.setCreateDate(new Date());   
  77.             log.setLog("正在向 [" + mail.getName() + "] 发送邮件......");   
  78.             log.setMail(mail);   
  79.             javaMailSenderUtil.sendMail(mail, count);   
  80.             this.logService.store(log);   
  81.         }   
  82.         logger.info("群发结束邮件........");   
  83.   
  84.         return count;   
  85.   
  86.     }   
  87.   
  88. }   

其实主要就一个很简单的方法:收集信息 -> 发邮件 -> 记录日志 -> 结束。 大家会问我为什么不用Action来实现?因为需要里要每5分钟重新采集一次信息后发送邮件,通过使用Quartz 也能实现,但本人对DWR更熟悉点,所以这里使用的是DWR版本了。

这个时候,相应的页面为:

xml 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ include file="include/includes.jsp" %>  
  3. <html>  
  4.     <head>  
  5.         <s:head/>  
  6.   
  7.   
  8.         <title>欢迎进入后台系统title>  
  9.   
  10.         <meta http-equiv="pragma" content="no-cache">  
  11.         <meta http-equiv="cache-control" content="no-cache">  
  12.         <meta http-equiv="expires" content="0">  
  13.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  14.   
  15.         <style type="text/css">  
  16.   
  17. body,td,th {   
  18.     font-size: 12px;   
  19. }   
  20.   
  21. a {   
  22.     font-size: 12px;   
  23. }   
  24.   
  25. a:link {   
  26.     text-decoration: none;   
  27. }   
  28.   
  29. a:visited {   
  30.     text-decoration: none;   
  31. }   
  32.   
  33. a:hover {   
  34.     text-decoration: underline;   
  35. }   
  36.   
  37. a:active {   
  38.     text-decoration: none;   
  39. }   
  40.   
  41. style>  
  42.   
  43.         <script type='text/javascript' src='dwr/engine.js'>script>  
  44.         <script type='text/javascript' src='dwr/util.js'>script>  
  45.         <script type='text/javascript' src='dwr/interface/ArticleService.js'>script>  
  46.         <script>  
  47.             /**  初始化*/   
  48.             function init(){   
  49.                 dwr.util.useLoadingMessage("正在加载....");   
  50.             }   
  51.                
  52.             /**  发信函数*/   
  53.             function doWork(){   
  54.                 ArticleService.storeByURL(showResult);   
  55.             }   
  56.                
  57.             /**  每5分钟回调发信函数*/   
  58.             function showResult(count){   
  59.                 alert("这一次取得的结果为:" + count + " " + new Date());   
  60.                 $("result").innerHTML = "这一次取得的结果为:" + count + " " + new Date();   
  61.                 setTimeout("doWork()",1000 * 60 * 5);   
  62.             }   
  63.            
  64.         script>  
  65.   
  66.     head>  
  67.   
  68.     <body onLoad="init();">  
  69.   
  70.   
  71.         <div style="float: left; width: 1000px; height: 600px; margin: 0px">  
  72.             <div style="float: left; width: 300px; height: 600px">  
  73.                 <ul>  
  74.                     <li>  
  75.                         欢迎进入后台系统.   
  76.                     li>  
  77.                     <li>  
  78.                         <a href="#" onClick="doWork();">运行程序.a>  
  79.                     li>  
  80.                 ul>  
  81.             div>  
  82.           <div style="float: left; width: 700px; height: 600px">  
  83.                 说明:每5分钟遍历一下页面<br />  
  84.                 (http://post.baidu.com/f?z=0&ct=318767104&lm=11&sc=0&rn=50&tn=baiduKeywordSearch&rs3=0&rs4=0&word=%D2%EC%C8%CB%B0%C1%CA%C0%C2%BC&pn=50), <br />  
  85. 请统计页面中"《"和"》"之间有多少个"异人"这两个字,<br />  
  86. 将这数值弹出一个alert并且发信给指定的邮件地址 获取页面内所有地方的以"<< >>"为标示的这个符号代表书名号,   
  87. 获取之中的内容 <<使用正则表达式>> 功能点: <br />  
  88. 1)URL抓取页面 <br />  
  89. 2)正则表达式匹配 <br />  
  90. 3)邮件系统调用 请注意设计思路和代码规范 <br />  
  91.   
  92. <p>p>  
  93. <div id="result">这里显示每次抓取的结果......div>  
  94.   
  95.             div>  
  96.         div>  
  97.     body>  
  98. html>  

非常简单的页面。 通过JS函数的setTimeout("doWork()",1000 * 60 * 5) 很容易每5分钟来重发一次请求。

 

2.JavaMail的配置:

一旦使用了Spring似乎感觉不到JavaMail需要做更多事了。确实,Spring已经简化了很多JavaMail的配置。

 

xml 代码
  1. <bean id="mailSender"  
  2.         class="org.springframework.mail.javamail.JavaMailSenderImpl">  
  3.         <property name="host" value="${mail.smtp}" />  
  4.         <property name="username" value="${mail.username}" />  
  5.         <property name="password" value="${mail.password}" />  
  6.         <property name="javaMailProperties">  
  7.             <props>  
  8.                 <prop key="mail.smtp.auth">trueprop>  
  9.             props>  
  10.         property>  
  11.     bean>  

 

使用的话,只需要简单注入一下,就OK了。我把这个写在util包下了。

java 代码
  1. package com.leo.util;   
  2.   
  3. import org.apache.log4j.Logger;   
  4. import org.springframework.mail.MailException;   
  5. import org.springframework.mail.MailSender;   
  6. import org.springframework.mail.SimpleMailMessage;   
  7.   
  8. import com.leo.po.Mail;   
  9.   
  10. public class JavaMailSenderUtil {   
  11.   
  12.     private static Logger logger = Logger.getLogger(JavaMailSenderUtil.class);   
  13.   
  14.     private static final String MAIL_FROM = "kyo100900@163.com";   
  15.   
  16.     private MailSender mailSender;   
  17.   
  18.     /**  
  19.      * 发送邮件  
  20.      *   
  21.      * @param mail  
  22.      *            要发送的邮件实体  
  23.      * @param count  
  24.      *            告诉接收人所感要的记录总数  
  25.      */  
  26.     public void sendMail(Mail mail, int count) {   
  27.   
  28.         logger.info("-----------发送邮件!---------");   
  29.         SimpleMailMessage msg = new SimpleMailMessage();   
  30.         String subject = "亲爱的:" + mail.getName() + " ,我将告诉你《异人傲世录》的情况。";   
  31.         String text = "帖子中,包括《*异人*》的共有:" + count + " 个";   
  32.   
  33.         String email = mail.getEmail();   
  34.         logger.info(subject);   
  35.         logger.info(text);   
  36.         logger.info("发送给:" + email);   
  37.   
  38.         msg.setSubject(subject);   
  39.         msg.setText(text);   
  40.         msg.setTo(email);   
  41.         msg.setFrom(MAIL_FROM);   
  42.   
  43.         try {   
  44.             logger.info("mailSender为空:" + mailSender == null);   
  45.             mailSender.send(msg);   
  46.         } catch (MailException e) {   
  47.             e.printStackTrace();   
  48.         }   
  49.         logger.info("-----------发送成功!---------");   
  50.     }   
  51.   
  52.     public MailSender getMailSender() {   
  53.         return mailSender;   
  54.     }   
  55.   
  56.     public void setMailSender(MailSender mailSender) {   
  57.         this.mailSender = mailSender;   
  58.     }   
  59.   
  60. }   

 

这个例子远远不够,还有很多可以完善与改进的地方,这个例子只是想让那些初学者如何比较全面的了解SSH之间的相互工作。零散的学习后,还需要系统的整合在一起。

 
分享到:
评论

相关推荐

    struts1.2 + spring2.5 + hibernate3.2框架demo

    2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...

    struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...

    最新项目系统:Struts2+Spring4+Hibernate4三大框架整合

    Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...

    Struts2+Spring4+Hibernate5整合

    Struts2、Spring4和Hibernate5是Java Web开发中的三个重要框架,它们分别负责MVC模式中的动作控制、依赖注入和持久化管理。这三者的整合可以构建出高效、稳定且易于维护的企业级应用。 **Struts2** 是一个基于MVC...

    struts2+spring4+hibernate

    Struts2、Spring4和Hibernate是Java开发中的三大框架,它们在构建企业级Web应用程序时起着核心作用。本教程将深入探讨这三个框架如何协同工作,以实现高效、灵活和可扩展的电子商务平台。 首先,Struts2是一个基于...

    轻量级Java EE企业应用实战(第4版) Struts 2+Spring 4+Hibernate整合开发 光盘 源码

    《轻量级Java EE企业应用实战(第4版)》这本书深入探讨了Struts 2、Spring 4和Hibernate这三大框架的整合开发,旨在帮助读者掌握如何在实际项目中高效构建Java EE应用。SSH(Struts 2、Spring、Hibernate)是Java ...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts2.1+spring2.5+hibernate3.3整合之第一步(spring2.5+hibernate3.3)

    同时,通过插件(如Spring插件)将Struts2与Spring集成,实现Action的自动注入。 5. 整合Spring和Hibernate:在Action类中,可以声明由Spring管理的Service层对象,这些对象再调用由Hibernate管理的数据访问层对象...

    基于struts2+spring2+hibernate3的注册登陆

    6. **文件结构**:尽管没有提供具体的文件列表,但一个标准的Struts2+Spring2+Hibernate3项目通常包含以下部分:源代码(src目录),配置文件(如struts.xml、spring配置文件、hibernate配置文件),Web资源(Web-...

    Struts2+Spring3+Hibernate4示例

    Struts2、Spring3和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC(Model-View-Controller)架构中的控制层、业务层和服务层。本示例结合这三个框架,提供了一种完整的三层架构实现,以提高开发效率和...

    jbpm4整合struts2+spring2.5+hibernate3.3

    【jbpm4整合struts2+spring2.5+hibernate3.3】的集成是企业级应用开发中常见的技术栈组合,旨在利用各框架的优势实现高效、灵活的业务流程管理。jbpm4是一个开源的工作流管理系统,用于定义、执行和管理业务流程。...

    struts2+spring2.5+Hibernate3.2整合示例

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用极大地提升了开发效率和项目的可维护性。在本示例中,我们将探讨如何将这三个框架集成在一起,实现一个完整的MVC(模型-视图-控制器)架构。 ...

    Struts1+Spring2+Hibernate2整合详细例子

    Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...

    Struts2+Spring3+Hibernate4零配置所需全部jar包

    Struts2、Spring3和Hibernate4是Java Web开发中的三大框架,它们的组合使用能够构建出功能强大且灵活的企业级应用程序。在这个“Struts2+Spring3+Hibernate4零配置所需全部jar包”中,包含了这三个框架运行所必需的...

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...

    struts2+spring3+hibernate4

    Struts2、Spring3和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC模式中的动作控制、依赖注入和服务层管理以及持久化层的数据操作。这篇博客文章结合这三个框架,探讨了如何构建一个完整的Java Web...

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    其中,Struts2、Spring与Hibernate作为经典的“SSH”组合(Struts-Spring-Hibernate),在Java Web开发领域占据着重要的地位。本文旨在通过一个简单的登录示例项目,详细介绍如何在Netbeans IDE环境下构建基于Struts...

    Struts2+Spring3+Hibernate框架技术精讲与整合案例 PDF 下载

    此外,Struts2和Hibernate可以通过Spring的事件监听机制进行交互,如在Action执行前后进行数据的持久化操作。 通过阅读这本教程,开发者将学习如何配置Struts2、Spring3和Hibernate的整合环境,理解它们之间的协作...

    Struts2+Spring3+Hibernate4+Maven+EasyUI

    Struts2+Spring3+Hibernate4+Maven+EasyUI 是一个常见的Java Web开发组合,它们各自扮演着关键的角色,构建了一个高效、模块化的应用程序架构。这个组合在企业级应用中广泛使用,尤其是在数据管理、业务逻辑处理和...

Global site tag (gtag.js) - Google Analytics