- 浏览: 640357 次
- 性别:
- 来自: 北京
最新评论
-
2047699523:
java hibernate demo使用实例教程源代码下载: ...
hibernate延迟加载的原理与实现 -
在世界的中心呼喚愛:
hantsy 写道这种lazy的解释只对了一半,按java p ...
hibernate延迟加载的原理与实现 -
moguicy:
看了下时间,不是楼主是否还在开发
【翻译】Wicket启示录——理论与实践(一) -
xfan0828:
"最后但并不是最不重要的一点就是" BZ, ...
【翻译】深入浅出 EJB3.1(上) -
doudou87323:
十分感谢,正在学习中,受益匪浅
【翻译】深入浅出 EJB3.1(上)
第二部分:
1.DWR的配置:
DWR是Java一个比较常用的Ajax框架,与Spring集成更是得心应手,可以非常方便的操作注册在Spring配置文件中的Bean。这我们导入DWR包后,就可以在web.xml里面配置它了。
web.xml关于DWR配置。
xml 代码
- <servlet>
- <servlet-name>dwr-invokerservlet-name>
- <servlet-class>
- org.directwebremoting.servlet.DwrServlet
- servlet-class>
- <init-param>
- <param-name>debugparam-name>
- <param-value>infoparam-value>
- init-param>
- <init-param>
- <param-name>maxWaitAfterWriteparam-name>
- <param-value>500param-value>
- init-param>
- <load-on-startup>1load-on-startup>
- servlet>
- <servlet-mapping>
- <servlet-name>dwr-invokerservlet-name>
- <url-pattern>/dwr/*url-pattern>
- servlet-mapping>
DWR还有一个叫dwr.xml文件,放在WEB-INF下,里面都是配置DWR与JS交互使用的Bean或Entity。 当然DWR也支持Anotation,可以在web.xml配置。但我们这个例子使用的是xml配置。
以下是dwr.xml代码:
xml 代码
- <!---->xml version="1.0" encoding="UTF-8"?>
- <!---->
- "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
- "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
- <dwr>
- <allow>
- <create creator="spring" javascript="ArticleService">
- <param name="beanName" value="articleService" />
- create>
- allow>
- dwr>
这个ArticleService就是我们要通过JS调用Spring注册的Bean。
现在可以看看这个源文件:
java 代码
- /**
- * 用户Service
- */
- package com.leo.service.impl;
- import java.util.Date;
- import java.util.List;
- import org.apache.log4j.Logger;
- import com.leo.po.Article;
- import com.leo.po.Log;
- import com.leo.po.Mail;
- import com.leo.service.IArticleService;
- import com.leo.service.ILogService;
- import com.leo.service.IMailService;
- import com.leo.util.JavaMailSenderUtil;
- import com.leo.util.RegEx;
- /**
- * @author superleo
- *
- */
- public class ArticleServiceImpl extends GenericServiceImpl
- implements IArticleService {
- private static Logger logger = Logger.getLogger(ArticleServiceImpl.class);
- private IMailService mailService;
- private ILogService logService;
- private JavaMailSenderUtil javaMailSenderUtil;
- public JavaMailSenderUtil getJavaMailSenderUtil() {
- return javaMailSenderUtil;
- }
- public void setJavaMailSenderUtil(JavaMailSenderUtil javaMailSenderUtil) {
- this.javaMailSenderUtil = javaMailSenderUtil;
- }
- public ILogService getLogService() {
- return logService;
- }
- public void setLogService(ILogService logService) {
- this.logService = logService;
- }
- public IMailService getMailService() {
- return mailService;
- }
- public void setMailService(IMailService mailService) {
- this.mailService = mailService;
- }
- public ArticleServiceImpl(Class<article></article> type) {
- super(type);
- }
- public int storeByURL() throws Exception {
- int count = RegEx.doRegEx();
- // 保存每5分钟,抓取的记录数量
- Article article = new Article();
- article.setCount(count);
- article.setCreateDate(new Date());
- this.store(article);
- // 群发邮件
- List<mail></mail> mails = mailService.findByAll();
- logger.info("开始群发邮件........");
- for (Mail mail : mails) {
- Log log = new Log();
- log.setCreateDate(new Date());
- log.setLog("正在向 [" + mail.getName() + "] 发送邮件......");
- log.setMail(mail);
- javaMailSenderUtil.sendMail(mail, count);
- this.logService.store(log);
- }
- logger.info("群发结束邮件........");
- return count;
- }
- }
其实主要就一个很简单的方法:收集信息 -> 发邮件 -> 记录日志 -> 结束。 大家会问我为什么不用Action来实现?因为需要里要每5分钟重新采集一次信息后发送邮件,通过使用Quartz 也能实现,但本人对DWR更熟悉点,所以这里使用的是DWR版本了。
这个时候,相应的页面为:
xml 代码
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@ include file="include/includes.jsp" %>
- <html>
- <head>
- <s:head/>
- <title>欢迎进入后台系统title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <style type="text/css">
- body,td,th {
- font-size: 12px;
- }
- a {
- font-size: 12px;
- }
- a:link {
- text-decoration: none;
- }
- a:visited {
- text-decoration: none;
- }
- a:hover {
- text-decoration: underline;
- }
- a:active {
- text-decoration: none;
- }
- style>
- <script type='text/javascript' src='dwr/engine.js'>script>
- <script type='text/javascript' src='dwr/util.js'>script>
- <script type='text/javascript' src='dwr/interface/ArticleService.js'>script>
- <script>
- /** 初始化*/
- function init(){
- dwr.util.useLoadingMessage("正在加载....");
- }
- /** 发信函数*/
- function doWork(){
- ArticleService.storeByURL(showResult);
- }
- /** 每5分钟回调发信函数*/
- function showResult(count){
- alert("这一次取得的结果为:" + count + " " + new Date());
- $("result").innerHTML = "这一次取得的结果为:" + count + " " + new Date();
- setTimeout("doWork()",1000 * 60 * 5);
- }
- script>
- head>
- <body onLoad="init();">
- <div style="float: left; width: 1000px; height: 600px; margin: 0px">
- <div style="float: left; width: 300px; height: 600px">
- <ul>
- <li>
- 欢迎进入后台系统.
- li>
- <li>
- <a href="#" onClick="doWork();">运行程序.a>
- li>
- ul>
- div>
- <div style="float: left; width: 700px; height: 600px">
- 说明:每5分钟遍历一下页面<br />
- (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 />
- 请统计页面中"《"和"》"之间有多少个"异人"这两个字,<br />
- 将这数值弹出一个alert并且发信给指定的邮件地址 获取页面内所有地方的以"<< >>"为标示的这个符号代表书名号,
- 获取之中的内容 <<使用正则表达式>> 功能点: <br />
- 1)URL抓取页面 <br />
- 2)正则表达式匹配 <br />
- 3)邮件系统调用 请注意设计思路和代码规范 <br />
- <p>p>
- <div id="result">这里显示每次抓取的结果......div>
- div>
- div>
- body>
- html>
非常简单的页面。 通过JS函数的setTimeout("doWork()",1000 * 60 * 5) 很容易每5分钟来重发一次请求。
2.JavaMail的配置:
一旦使用了Spring似乎感觉不到JavaMail需要做更多事了。确实,Spring已经简化了很多JavaMail的配置。
xml 代码
- <bean id="mailSender"
- class="org.springframework.mail.javamail.JavaMailSenderImpl">
- <property name="host" value="${mail.smtp}" />
- <property name="username" value="${mail.username}" />
- <property name="password" value="${mail.password}" />
- <property name="javaMailProperties">
- <props>
- <prop key="mail.smtp.auth">trueprop>
- props>
- property>
- bean>
使用的话,只需要简单注入一下,就OK了。我把这个写在util包下了。
java 代码
- package com.leo.util;
- import org.apache.log4j.Logger;
- import org.springframework.mail.MailException;
- import org.springframework.mail.MailSender;
- import org.springframework.mail.SimpleMailMessage;
- import com.leo.po.Mail;
- public class JavaMailSenderUtil {
- private static Logger logger = Logger.getLogger(JavaMailSenderUtil.class);
- private static final String MAIL_FROM = "kyo100900@163.com";
- private MailSender mailSender;
- /**
- * 发送邮件
- *
- * @param mail
- * 要发送的邮件实体
- * @param count
- * 告诉接收人所感要的记录总数
- */
- public void sendMail(Mail mail, int count) {
- logger.info("-----------发送邮件!---------");
- SimpleMailMessage msg = new SimpleMailMessage();
- String subject = "亲爱的:" + mail.getName() + " ,我将告诉你《异人傲世录》的情况。";
- String text = "帖子中,包括《*异人*》的共有:" + count + " 个";
- String email = mail.getEmail();
- logger.info(subject);
- logger.info(text);
- logger.info("发送给:" + email);
- msg.setSubject(subject);
- msg.setText(text);
- msg.setTo(email);
- msg.setFrom(MAIL_FROM);
- try {
- logger.info("mailSender为空:" + mailSender == null);
- mailSender.send(msg);
- } catch (MailException e) {
- e.printStackTrace();
- }
- logger.info("-----------发送成功!---------");
- }
- public MailSender getMailSender() {
- return mailSender;
- }
- public void setMailSender(MailSender mailSender) {
- this.mailSender = mailSender;
- }
- }
这个例子远远不够,还有很多可以完善与改进的地方,这个例子只是想让那些初学者如何比较全面的了解SSH之间的相互工作。零散的学习后,还需要系统的整合在一起。
发表评论
-
自己动手写一个Struts2
2008-08-14 00:10 15365使用Struts2或webwork2有一段时间了,想把Stru ... -
Struts2(Webwork2)一些实战开发技巧
2008-06-02 21:18 5872一. 使用反射动态取出 Pojo 的属性 这一招在 ... -
Struts2的第一个入门实例(三)--Struts2与Guice整合
2008-02-15 14:29 9102Guice可真轻啊,所需的3个Jar包才不到600k。但缺点就 ... -
Struts2,Webwork2关于使用FCKeditor,richtexteditor 的解决方法
2008-01-31 00:18 4443一 Webwork2 + FCkeditor 这个问题由来 ... -
Struts2所有插件简介--目前到达40余种
2008-01-26 17:06 10866今天无意查看了Struts2的插件时,发现已经林林总总有40个 ... -
Struts2的第一个入门实例(二)--什么是code-behind
2008-01-13 19:26 8829Struts2的Code-behind究竟是什么?ROR那样的 ... -
Struts2.0.11在Tomcat5.5, Jetty 以及 Weblogic10等运行的不同
2008-01-06 22:53 5884终于有时间玩玩最新版本的Struts2.0.11了, 与上一个 ... -
struts2 奇怪的Action警告
2008-01-06 21:20 13110不知道大家有没有遇到在使用表单的时候,有时候会出一个莫名其妙的 ... -
经验不足,差一点重构整个系统
2007-12-30 19:36 4043呵呵,很久没有来JavaEye写文章了,公司工作也 ... -
Struts2+Spring+Hibernate In Action(三)
2007-11-01 00:43 60383. Controller配置: Struts2的 ... -
Struts2+Spring+Hibernate In Action(二)
2007-11-01 00:30 6152当所有的Service配置好了,可以当他们统统配置在Sprin ... -
原来是Struts2.0的一个Bug
2007-10-27 23:00 5616开始使用的是Struts2.06版本。在配置Struts.xm ... -
Struts2需要注意的一个小地方
2007-10-22 17:49 16005今天在运行Struts2时,无意间发现程序在写Struts.x ... -
Struts2的第一个入门实例(一)
2007-09-29 14:12 21087Struts2有自己的圈子了,我也写一个Struts2的 ... -
Struts2+Spring+Hibernate In Action(一)
2007-11-01 00:26 18198前言: 关于Struts2系列的文章网上基本上都有了,但鲜有 ... -
Struts2在路上2。。。。。。
2007-09-14 16:16 44362.关于关闭Struts2自动验证的烦人英文问题。 应该有不少 ... -
Struts2在路上。。。。。。
2007-09-12 14:25 55011.Struts2强大,但也有很多需要解决的问题。就拿我现在这 ...
相关推荐
2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...
Struts2、Spring4和Hibernate4是Java Web开发中的三大主流框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个最新的项目系统整合了这三个框架,旨在提供一个高效、灵活且易于维护的开发环境。下面将详细...
Struts2、Spring4和Hibernate5是Java Web开发中的三个重要框架,它们分别负责MVC模式中的动作控制、依赖注入和持久化管理。这三者的整合可以构建出高效、稳定且易于维护的企业级应用。 **Struts2** 是一个基于MVC...
Struts2、Spring4和Hibernate是Java开发中的三大框架,它们在构建企业级Web应用程序时起着核心作用。本教程将深入探讨这三个框架如何协同工作,以实现高效、灵活和可扩展的电子商务平台。 首先,Struts2是一个基于...
《轻量级Java EE企业应用实战(第4版)》这本书深入探讨了Struts 2、Spring 4和Hibernate这三大框架的整合开发,旨在帮助读者掌握如何在实际项目中高效构建Java EE应用。SSH(Struts 2、Spring、Hibernate)是Java ...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
同时,通过插件(如Spring插件)将Struts2与Spring集成,实现Action的自动注入。 5. 整合Spring和Hibernate:在Action类中,可以声明由Spring管理的Service层对象,这些对象再调用由Hibernate管理的数据访问层对象...
6. **文件结构**:尽管没有提供具体的文件列表,但一个标准的Struts2+Spring2+Hibernate3项目通常包含以下部分:源代码(src目录),配置文件(如struts.xml、spring配置文件、hibernate配置文件),Web资源(Web-...
Struts2、Spring3和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC(Model-View-Controller)架构中的控制层、业务层和服务层。本示例结合这三个框架,提供了一种完整的三层架构实现,以提高开发效率和...
【jbpm4整合struts2+spring2.5+hibernate3.3】的集成是企业级应用开发中常见的技术栈组合,旨在利用各框架的优势实现高效、灵活的业务流程管理。jbpm4是一个开源的工作流管理系统,用于定义、执行和管理业务流程。...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用极大地提升了开发效率和项目的可维护性。在本示例中,我们将探讨如何将这三个框架集成在一起,实现一个完整的MVC(模型-视图-控制器)架构。 ...
Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...
Struts2、Spring3和Hibernate4是Java Web开发中的三大框架,它们的组合使用能够构建出功能强大且灵活的企业级应用程序。在这个“Struts2+Spring3+Hibernate4零配置所需全部jar包”中,包含了这三个框架运行所必需的...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...
Struts2、Spring3和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC模式中的动作控制、依赖注入和服务层管理以及持久化层的数据操作。这篇博客文章结合这三个框架,探讨了如何构建一个完整的Java Web...
其中,Struts2、Spring与Hibernate作为经典的“SSH”组合(Struts-Spring-Hibernate),在Java Web开发领域占据着重要的地位。本文旨在通过一个简单的登录示例项目,详细介绍如何在Netbeans IDE环境下构建基于Struts...
此外,Struts2和Hibernate可以通过Spring的事件监听机制进行交互,如在Action执行前后进行数据的持久化操作。 通过阅读这本教程,开发者将学习如何配置Struts2、Spring3和Hibernate的整合环境,理解它们之间的协作...
Struts2+Spring3+Hibernate4+Maven+EasyUI 是一个常见的Java Web开发组合,它们各自扮演着关键的角色,构建了一个高效、模块化的应用程序架构。这个组合在企业级应用中广泛使用,尤其是在数据管理、业务逻辑处理和...