<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23, comments - 0, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理


    作者: beauty9235  鏈接:http://beauty9235.javaeye.com/blog/229619  發(fā)表時間: 2008年08月08日

    聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!

    dwr開發(fā)總結(jié) 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"
        "

    <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進(jìn)行創(chuàng)建
              <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創(chuàng)建bean的定義
      <property name="userService" ref="userService"/>         將業(yè)務(wù)層注入
     </bean>

    第四步 類、網(wǎng)頁
     User.java 返回的實(shí)體
     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框架調(diào)用
     public class UserAction {
      private UserService userService; //spring依賴注入,實(shí)現(xiàn)與持久層通信
      public void setUserService(UserService userService) {
       this.userService = userService;
      }
      public Map getUserList(String id){
       Map map=new HashMap();
       map.put("userList",userService.queryUser(new User())) ;//查詢實(shí)體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>
      這是觸發(fā)函數(shù)
      <a style="cursor:hand" id="" onclick="userAction.getUserList('div_show',showUser);">show Users</a> <br>
            這塊區(qū)域用于顯示
      <div id="div_show" style="display:none"></div>
      </body>
      </html>


    本文的討論也很精彩,瀏覽討論>>


    JavaEye推薦



    posted @ 2008-08-18 17:04 beauty9235 閱讀(351) | 評論 (0)編輯 收藏


    作者: beauty9235  鏈接:http://beauty9235.javaeye.com/blog/229617  發(fā)表時間: 2008年08月08日

    聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!

    spring 任務(wù)調(diào)度總結(jié)
    參考資料
    http://www.ibm.com/developerworks/cn/java/j-quartz/
    http://www.opensymphony.com/quartz/download.action

    Java的Timer類和OpenSymphony的Quartz調(diào)度器是兩個流行的調(diào)度API。Spring為這兩個調(diào)度器提供了一個抽象層,可以更容易的使用他們


    spring+timer

    1 .使用java Timer調(diào)度任務(wù)
    第一步 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" "<beans>
         <!--
         ****************使用java Timer調(diào)度任務(wù)*********************
         使用java Timer調(diào)度第一步是從java.util.TimerTask派生一個任務(wù)
         聲明本身只是將EmailReportTask放到應(yīng)用上下文,
        并在testBean屬性裝配TestBean
        在調(diào)度之前不會做任何事。
        -->
        <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定義了一個定時器任務(wù)的運(yùn)行周期。應(yīng)該如下裝配一個ScheduledTimerTask
        timerTask告訴ScheduledTimerTask運(yùn)行哪個TimerTask,
        這里該裝配屬性指向reportTimerTask的一個引用。
        屬性period告訴ScheduledTimerTask以怎樣的頻率調(diào)用TimerTask的run()方法。
        這個屬性以毫秒作為單位,
        86400000指定該任務(wù)每24小時運(yùn)行一次
        10X1000
         屬性scheduledTimerTasks  要求一個需要啟動的定時器任務(wù)列表。
         ScheduledTimerTask有一個delay屬性, 允許你指定當(dāng)任務(wù)第一次運(yùn)行之前應(yīng)該等多久。
         如,EmailReportTask的第一次運(yùn)行延遲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負(fù)責(zé)啟動定時任務(wù)。按以下方式在Spring配置文件里聲明它-->
        <bean class="org.springframework.scheduling.timer.TimerFactoryBean">
            <property name="scheduledTimerTasks">
                <list>
                    <ref bean="scheduledReportTask"/>
                </list>
            </property>
        </bean>
    </beans>  
    第三步 相關(guān)類的編寫
     EmailReportTask.java
     public class EmailReportTask extends TimerTask {//必需繼承TimerTask
         Log log= LogFactory.getLog(EmailReportTask.class);
         public EmailReportTask() {
         }

         public void run() {//這個函數(shù)是調(diào)度任務(wù)執(zhí)行的入口
            log.debug("task begin :"+testBean.greeting);
         }

         private TestBean testBean;//這里實(shí)現(xiàn)spring的依賴注入

         public void setTestBean(TestBean testBean) {
             this.testBean = testBean;
         }
     }
     testBean.java
     public class TestBean {
         public String greeting="hello,world";
     }
     
     
    spring+Quartz
    Quartz 作業(yè)調(diào)度框架所提供的 API 在兩方面都表現(xiàn)極佳:既全面強(qiáng)大,又易于使用。Quartz 可以用于簡單的作業(yè)觸發(fā),也可以用于復(fù)雜的 JDBC 持久的作業(yè)存儲和執(zhí)行。
    第一步  同上
    第二步  配置applicationContextTimeTask.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
    <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>
     <!--用它來指定一個工作應(yīng)以怎樣的頻率運(yùn)行,及第一次運(yùn)行工作前應(yīng)等多久-->
     <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允許更精確的控制任務(wù)的運(yùn)行時間。如果要在每天的6:00運(yùn)行任務(wù)可以按照以下方式聲明一個CronTriggerBean
    0 0 6 * * ?
    jobDetail屬性告訴觸發(fā)器調(diào)度哪一個工作,屬性cronExpression告訴觸發(fā)器何時觸發(fā)。一個cron表達(dá)式至少有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)
      每一個元素都可以顯示規(guī)定的一個值,一個區(qū)間(9-14),一個列表(9,12,14)或一個通配符(*)月份中的日期和星期中的日期這兩個元素時互斥的一起應(yīng)該通過設(shè)置一個問號(?)來表明不想設(shè)置那個字段
    對于cronReportTrigger我們設(shè)置的cronExpression為 0 0 6 * * ?可以讀作任意月份任何日期的6時0分0秒執(zhí)行觸發(fā)器
    -->
     <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>  
    第三步 相關(guān)類的編寫  
     EmailReportTask2.java
     public class EmailReportTask2 extends QuartzJobBean {
         Log log = LogFactory.getLog(EmailReportTask.class);

         public EmailReportTask2() {
         }
     //這個函數(shù)是調(diào)度任務(wù)執(zhí)行的入口
         protected void executeInternal(JobExecutionContext jobExecutionContext) throws org.quartz.JobExecutionException {

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


         private TestBean testBean;//這里實(shí)現(xiàn)spring的依賴注入

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


    本文的討論也很精彩,瀏覽討論>>


    JavaEye推薦



    posted @ 2008-08-18 17:04 beauty9235 閱讀(4230) | 評論 (0)編輯 收藏

    				

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

    最近看了一本關(guān)于Hibernate開發(fā)的書.自己嘗試了一下.

    1.首先準(zhǔn)備環(huán)境,以下Hibernate及其插件的下載地址 http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

    2.Hibernate基礎(chǔ)代碼包括

    • POJO
      POJO在Hibernate里應(yīng)該理解成數(shù)據(jù)庫表所對應(yīng)的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 從本質(zhì)上來講是一種“對象-關(guān)系型數(shù)據(jù)映射”(Object Relational
      Mapping 簡稱ORM)。前面的POJO在這里體現(xiàn)的就是ORM中Object層的語義,
      而映射(Mapping)文件則是將對象(Object)與關(guān)系型數(shù)據(jù)(Relational)相關(guān)聯(lián)的紐帶,在Hibernate中,映射文件通常以“.hbm.xml”作為后綴。

    3.由數(shù)據(jù)庫來產(chǎn)生基礎(chǔ)代碼
    ??? Hibernate官方提供的MiddleGen for Hibernate 和Hibernate_Extension工具包,我
    ??? 以很方便的根據(jù)現(xiàn)有數(shù)據(jù)庫,導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu),生成ORM和POJO。下面就來做個示例.

    4.接壓縮MiddleGen-Hibernate到 C:workMiddleGen.

    5.接壓縮Hibernate 到 C:workHibernate.

    6.接壓縮Extentions到 c:workExtentions

    7.進(jìn)入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"/>? //驅(qū)動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"/>//數(shù)據(jù)庫的路徑.前面的“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文件(下面只是個人做一些測試,可以根據(jù)自己的需要來進(jìn)行修改)

    • 查找關(guān)鍵字 ”!ENTITY”,得到:
      ??????? <!DOCTYPE project [
      ???????????????? <!ENTITY database SYSTEM? ?"file:./config/database/hsqldb.xml">
      ??????? ]>

    ????????????????? 因為默認(rèn)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是設(shè)置在生成代碼的時候是否生成XDoclettags,這個很重要,我們設(shè)置成true.

    9.配置ant的路徑,解壓縮下載的ant后,比如c:ant

    ? 我們右擊我的電腦->熟悉->高級->編輯path的熟悉

    ? 在后面加入c:antin

    10.點(diǎn)擊開始-->運(yùn)行-->cmd

    ??????? cd到我們的MiddleGen目錄 ,運(yùn)行ant

    ??????? 如果提示連接數(shù)據(jù)庫失敗的話那就是mssql.xml沒有配置好

    ??????? 如果顯示連接數(shù)據(jù)庫成功,沒有找到table的話就是schemas和catalogs沒有配置對了.

    11.如果沒有出錯的話會啟動一個界面,然后點(diǎn)擊最上面的generae就可以生成POJO文件了.

    posted @ 2006-08-09 16:24 beauty9235 閱讀(238) | 評論 (0)編輯 收藏

    僅列出標(biāo)題
    共3頁: 上一頁 1 2 3 
    主站蜘蛛池模板: 亚洲高清在线观看| 亚洲精品无码久久千人斩| 亚洲成人黄色网址| 精品无码国产污污污免费网站| 亚洲精品tv久久久久久久久 | 亚洲色成人网站WWW永久四虎| 久久99国产乱子伦精品免费| 91亚洲精品视频| 狼群影院在线观看免费观看直播| 久久青青草原亚洲av无码app| 亚洲精品免费在线观看| 亚洲欧洲国产综合| 成年女人视频网站免费m| 亚洲丁香婷婷综合久久| 亚洲人成电影网站国产精品| 久久国产免费直播| 亚洲视频一区网站| 韩国18福利视频免费观看| 老司机午夜免费视频| 伊人久久大香线蕉亚洲| 四虎国产精品永久免费网址| 亚洲综合色区中文字幕| 免费大学生国产在线观看p| 两个人日本WWW免费版| 噜噜噜亚洲色成人网站∨| 岛国片在线免费观看| sss日本免费完整版在线观看| 亚洲热妇无码AV在线播放| 五月婷婷在线免费观看| 亚洲国产精品嫩草影院| 亚洲精品乱码久久久久久自慰| 亚洲综合免费视频| 看Aⅴ免费毛片手机播放| 亚洲av中文无码乱人伦在线咪咕| 一色屋成人免费精品网站| 特级做a爰片毛片免费看| 亚洲五月六月丁香激情| 国产免费黄色大片| 免费无码VA一区二区三区| 亚洲变态另类一区二区三区| 久久精品亚洲综合一品|