posts - 23, comments - 0, trackbacks - 0, articles - 3
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理


作者: beauty9235  链接:http://beauty9235.javaeye.com/blog/229619  发表时间: 2008年08月08日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

dwr开发总结 dwr+spring
参考资料
http://wiki.javascud.org/display/dwrcn/Spring+Integration
http://wiki.javascud.org/display/dwrcn/Getting+Started
测试http://{your app}//dwr/
第一步 web.xml
   <!--***********************dwr setting***********************-->
    <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
 <!--*********************** spring setting ***********************-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/classes/applicationContext.xml
        </param-value>
    </context-param>
第二步  dwr.xml
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="JDate">
      <param name="class" value="java.util.Date"/>
    </create>
    <create creator="new" javascript="TestBean">
      <param name="class" value="com.photo.test.TestBean"/>
    </create>
      <create creator="spring" javascript="userAction">          这里交给spring进行创建
          <param name="beanName" value="userAction"/>
      </create>
    <convert converter="bean" match="com.photo.dao.domain.User"/>返回类型需要反换的bean
  </allow>
</dwr>
第三步 applicationContext.xml
<beans>   
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close" singleton="true">
       ....
    </bean>
  
    <bean id="userService" class="com.photo.service.UserService">
  ...
 </bean>
     <bean id="userAction" class="com.photo.action.UserAction">  这里是spring创建bean的定义
  <property name="userService" ref="userService"/>         将业务层注入
 </bean>

第四步 类、网页
 User.java 返回的实体
 public class User {
     Integer id;
     String username;
     String password;

     public Integer getId() {
         return id;
     }

     public void setId(Integer id) {
         this.id = id;
     }

     public String getUsername() {
         return username;
     }

     public void setUsername(String username) {
         this.username = username;
     }

     public String getPassword() {
         return password;
     }

     public void setPassword(String password) {
         this.password = password;
     }
 }
 UserAction.java dwr框架调用
 public class UserAction {
  private UserService userService; //spring依赖注入,实现与持久层通信
  public void setUserService(UserService userService) {
   this.userService = userService;
  }
  public Map getUserList(String id){
   Map map=new HashMap();
   map.put("userList",userService.queryUser(new User())) ;//查询实体bean User
   map.put("id",id);//用于显示的div id
   return map ;
  }
 }
 测试页面testajax.html
  <html>
  <head>
      <META http-equiv=Content-Type content="text/html; charset=UTF-8">
      <title>First Example</title>
      <script type='text/javascript' src='/dwr/interface/userAction.js'></script>
      <script type='text/javascript' src='/dwr/engine.js'></script>
      <script type='text/javascript' src='/dwr/util.js'></script>
      <script type="text/javascript">
          var showUser = function(data) {
              var id = data["id"];//取出页面显示的id
              var userList = data["userList"];//取出页面显示的Userlist
              if ($(id).style.display == "none") {
                  $(id).style.display = "block";
                  var htmlStr = ""; //alert(id);
                  for (var property in userList) {
                      var user = userList[property];
                      htmlStr += user.id + " " + user.username + "  " + user.password + "<br>";
                  }
                  $(id).innerHTML = htmlStr;
                  return;
              }
              $(id).style.display = "none";
          }
      </script>
  </head>
  <body>
  这是触发函数
  <a style="cursor:hand" id="" onclick="userAction.getUserList('div_show',showUser);">show Users</a> <br>
        这块区域用于显示
  <div id="div_show" style="display:none"></div>
  </body>
  </html>


本文的讨论也很精彩,浏览讨论>>


JavaEye推荐



posted @ 2008-08-18 17:04 beauty9235 阅读(342) | 评论 (0)编辑 收藏


作者: beauty9235  链接:http://beauty9235.javaeye.com/blog/229617  发表时间: 2008年08月08日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

spring 任务调度总结
参考资料
http://www.ibm.com/developerworks/cn/java/j-quartz/
http://www.opensymphony.com/quartz/download.action

Java的Timer类和OpenSymphony的Quartz调度器是两个流行的调度API。Spring为这两个调度器提供了一个抽象层,可以更容易的使用他们


spring+timer

1 .使用java Timer调度任务
第一步 web.xml
 <!--*********************** spring setting ***********************-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/classes/applicationContextTimeTask.xml
        </param-value>
    </context-param>
第二步  配置applicationContextTimeTask.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
     <!--
     ****************使用java Timer调度任务*********************
     使用java Timer调度第一步是从java.util.TimerTask派生一个任务
     声明本身只是将EmailReportTask放到应用上下文,
    并在testBean属性装配TestBean
    在调度之前不会做任何事。
    -->
    <bean id="testBean" class="com.photo.test.TestBean"/>
    <bean id="reportTimerTask" class="com.photo.task.EmailReportTask">
        <property name="testBean">
            <ref bean="testBean"/>
        </property>
    </bean>
    <!--
    Spring的ScheduledTimerTimerTask定义了一个定时器任务的运行周期。应该如下装配一个ScheduledTimerTask
    timerTask告诉ScheduledTimerTask运行哪个TimerTask,
    这里该装配属性指向reportTimerTask的一个引用。
    属性period告诉ScheduledTimerTask以怎样的频率调用TimerTask的run()方法。
    这个属性以毫秒作为单位,
    86400000指定该任务每24小时运行一次
    10X1000
     属性scheduledTimerTasks  要求一个需要启动的定时器任务列表。
     ScheduledTimerTask有一个delay属性, 允许你指定当任务第一次运行之前应该等多久。
     如,EmailReportTask的第一次运行延迟5毫秒
    -->


    <bean id="scheduledReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
        <property name="timerTask">
            <ref bean="reportTimerTask"/>
        </property>
        <property name="period">
            <value>10000</value>
        </property>
        <property name="delay">
            <value>5000</value>
        </property>
    </bean>
    <!--Spring 的TimerFactoryBean负责启动定时任务。按以下方式在Spring配置文件里声明它-->
    <bean class="org.springframework.scheduling.timer.TimerFactoryBean">
        <property name="scheduledTimerTasks">
            <list>
                <ref bean="scheduledReportTask"/>
            </list>
        </property>
    </bean>
</beans>  
第三步 相关类的编写
 EmailReportTask.java
 public class EmailReportTask extends TimerTask {//必需继承TimerTask
     Log log= LogFactory.getLog(EmailReportTask.class);
     public EmailReportTask() {
     }

     public void run() {//这个函数是调度任务执行的入口
        log.debug("task begin :"+testBean.greeting);
     }

     private TestBean testBean;//这里实现spring的依赖注入

     public void setTestBean(TestBean testBean) {
         this.testBean = testBean;
     }
 }
 testBean.java
 public class TestBean {
     public String greeting="hello,world";
 }
 
 
spring+Quartz
Quartz 作业调度框架所提供的 API 在两方面都表现极佳:既全面强大,又易于使用。Quartz 可以用于简单的作业触发,也可以用于复杂的 JDBC 持久的作业存储和执行。
第一步  同上
第二步  配置applicationContextTimeTask.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
  <property name="jobClass">
   <value>com.photo.task.EmailReportTask2</value>
  </property>
  <property name="jobDataAsMap">
   <map>
    <entry key="testBean">
     <ref bean="testBean"/>
    </entry>
   </map>
  </property>
 </bean>
 <!--用它来指定一个工作应以怎样的频率运行,及第一次运行工作前应等多久-->
 <bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
  <property name="jobDetail">
   <ref bean="reportJob"/>
  </property>
  <property name="startDelay">
   <value>3600000</value>
  </property>
  <property name="repeatInterval">
   <value>86400000</value>
  </property>
 </bean>
<!--
CronTriggerBean允许更精确的控制任务的运行时间。如果要在每天的6:00运行任务可以按照以下方式声明一个CronTriggerBean
0 0 6 * * ?
jobDetail属性告诉触发器调度哪一个工作,属性cronExpression告诉触发器何时触发。一个cron表达式至少有6个由空格分隔的时间元素(最多7个)从左到右元素定义如下
   1。秒(0-59)
   2。分(0-59)
   3。小时(0-23)
   4。月份中的日期(1-31)
   5。月份(1-12 或 JAN-DEC)
   6。星期(1-7 或 SUN-SAT)
   7。年份(1970-2099)
  每一个元素都可以显示规定的一个值,一个区间(9-14),一个列表(9,12,14)或一个通配符(*)月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号(?)来表明不想设置那个字段
对于cronReportTrigger我们设置的cronExpression为 0 0 6 * * ?可以读作任意月份任何日期的6时0分0秒执行触发器
-->
 <bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail">
   <ref bean="reportJob"/>
  </property>
  <property name="cronExpression">
   <value>0/5 * * * * ?</value>
  </property>
 </bean>
 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
   <list>
    <ref bean="cronReportTrigger"/>
   </list>
  </property>
 </bean>
</beans>  
第三步 相关类的编写  
 EmailReportTask2.java
 public class EmailReportTask2 extends QuartzJobBean {
     Log log = LogFactory.getLog(EmailReportTask.class);

     public EmailReportTask2() {
     }
 //这个函数是调度任务执行的入口
     protected void executeInternal(JobExecutionContext jobExecutionContext) throws org.quartz.JobExecutionException {

         log.debug("task 2 begin :" + testBean.greeting);
     }


     private TestBean testBean;//这里实现spring的依赖注入

     public void setTestBean(TestBean testBean) {
         this.testBean = testBean;
     }
 }
 TestBean.java 同上


本文的讨论也很精彩,浏览讨论>>


JavaEye推荐



posted @ 2008-08-18 17:04 beauty9235 阅读(4221) | 评论 (0)编辑 收藏

				

引用地址:http://blog.csdn.net/joohnnie/archive/2004/09/15/105911.aspx

最近看了一本关于Hibernate开发的书.自己尝试了一下.

1.首先准备环境,以下Hibernate及其插件的下载地址 http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

2.Hibernate基础代码包括

  • POJO
    POJO在Hibernate里应该理解成数据库表所对应的Domain Object.POJO就是“Plain Ordinary Java Object“ 无格式的普通Java对象.可以理解为不包含逻辑代码的值对象(Value Object)

    public class TUser implements Serializable
    {
            private String name;

            public User(String name)
           {
                   this.name = name;
            }

            /** default constructor */
            public User()
           {
           }

            public String getName()
           {
                   return this.name;
           }

            public void setName(String name)
           {
                  this.name = name;
           }
    }


  • Hibernate映射文件
    Hibernate 从本质上来讲是一种“对象-关系型数据映射”(Object Relational
    Mapping 简称ORM)。前面的POJO在这里体现的就是ORM中Object层的语义,
    而映射(Mapping)文件则是将对象(Object)与关系型数据(Relational)相关联的纽带,在Hibernate中,映射文件通常以“.hbm.xml”作为后缀。

3.由数据库来产生基础代码
    Hibernate官方提供的MiddleGen for Hibernate 和Hibernate_Extension工具包,我
    以很方便的根据现有数据库,导出数据库表结构,生成ORM和POJO。下面就来做个示例.

4.接压缩MiddleGen-Hibernate到 C:workMiddleGen.

5.接压缩Hibernate 到 C:workHibernate.

6.接压缩Extentions到 c:workExtentions

7.进入MiddleGen目录的configdatabase子目录.我们这里用的是Sqlserver2000,所以选择mssql.xml

   打开 mssql.xml

   <property name="database.script.file"           value=""/>
   <property name="database.driver.file"           value="${lib.dir}/Sprinta2000.jar"/>
   <property name="database.driver"                value="com.inet.tds.TdsDriver"/>
   <property name="database.url"                   value="jdbc:inetdae7:localhost?database=airline"/>
   <property name="database.userid"                value="sa"/>
   <property name="database.password"              value="sa"/>
   <property name="database.schema"                value=""/>
   <property name="database.catalog"               value=""/>

   <property name="jboss.datasource.mapping"       value="MS SQLSERVER"/>

这里修改一下

我们把下载好的jdbc for sqlserver2000安装了后,把安装目录的lib目录下面的3个jar文件放到Middlegen的lib目录里面.

         <property name="database.driver.file"           value="${lib.dir}/mssqlserver.jar"/>  //驱动jar文件
         <property name="database.driver"                value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>//用winrar打开上面的jar文件就可以看到SQLServerDriver.class在jar文件中的路径了
         <property name="database.url"                   value="jdbc:microsoft:sqlserver://localhost:1433;database=Northwind"/>//数据库的路径.前面的“jdbc.microsoft.sqlserver“
         <property name="database.userid"                value="sa"/>//用户名
        <property name="database.password"              value=""/>//密码
        <property name="database.schema"                value="dbo"/>//一定要写,很重要
        <property name="database.catalog"               value="Northwind"/>//一定要写很重要

8.配置build.xml文件(下面只是个人做一些测试,可以根据自己的需要来进行修改)

  • 查找关键字 ”!ENTITY”,得到:
            <!DOCTYPE project [
                     <!ENTITY database SYSTEM   "file:./config/database/hsqldb.xml">
            ]>

                  因为默认MiddleGen是采用hsql.xml,所以修改成我们的mssql.xml

                  <!DOCTYPE project [
                            <!ENTITY database SYSTEM   "file:./config/database/hsqldb.xml">
                  ]>

  • 修改程序的name

              <property name="name" value="airline"/>

               修改成

               <property name="name" value="sample"/>

  • 修改输出目录
        查找“name="build.gen-src.dir"“
       <property name="build.gen-src.dir" value="${build.dir}/gen-src"/>

             修改成
             <property name="build.gen-src.dir" value="c:sample"/>

  • 修改Package 名称

    查找“<hibernate“

           <hibernate
                     destination="${build.gen-src.dir}"
                      package="${name}.hibernate"
                      genXDocletTags="false"
                     genIntergratedCompositeKeys="false"
                     javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
          />

          把pachage属性修改为

          <hibernate
                     destination="${build.gen-src.dir}"
                      package="org.hibernate.sample"
                      genXDocletTags="true"
                     genIntergratedCompositeKeys="false"
                     javaTypeMapper="middlegen.plugins.hibernate.HibernateJavaTypeMapper"
          />          

          这里的genXDocletTags是设置在生成代码的时候是否生成XDoclettags,这个很重要,我们设置成true.

9.配置ant的路径,解压缩下载的ant后,比如c:ant

  我们右击我的电脑->熟悉->高级->编辑path的熟悉

  在后面加入c:antin

10.点击开始-->运行-->cmd

        cd到我们的MiddleGen目录 ,运行ant

        如果提示连接数据库失败的话那就是mssql.xml没有配置好

        如果显示连接数据库成功,没有找到table的话就是schemas和catalogs没有配置对了.

11.如果没有出错的话会启动一个界面,然后点击最上面的generae就可以生成POJO文件了.

posted @ 2006-08-09 16:24 beauty9235 阅读(230) | 评论 (0)编辑 收藏

仅列出标题
共3页: 上一页 1 2 3