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

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

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

    【Hibernate總結系列】....hbm.xml配置

     Hibernate中,各表的映射文件….hbm.xml可以通過工具生成,例如在使用MyEclipse開發時,它提供了自動生成映射文件的工具。本節簡單的講述一下這些配置文件的配置。

           配置文件的基本結構如下:

    <?xml version="1.0" encoding='UTF-8'?>

    <!DOCTYPE hibernate-mapping PUBLIC

                                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

    <hibernate-mapping package="包名">

    <class name="類名" table="表名">

                      <id name="主鍵在java類中的字段名" column="對應表中字段" type="類型 ">

                        <generator class="主鍵生成策略"/>

    </id>

             ……

        </class>

    </hibernate-mapping>

    1. 主鍵(id

           Hibernate的主鍵生成策略有如下幾種:

    1)  assigned

    主鍵由外部程序負責生成,在 save() 之前指定。

    2)  hilo

    通過hi/lo 算法實現的主鍵生成機制,需要額外的數據庫表或字段提供高位值來源。

    3)  seqhilo

    hilo 類似,通過hi/lo 算法實現的主鍵生成機制,需要數據庫中的 Sequence,適用于支持 Sequence 的數據庫,如Oracle

    4)  increment

    主鍵按數值順序遞增。此方式的實現機制為在當前應用實例中維持一個變量,以保存著當前的最大值,之后每次需要生成主鍵的時候將此值加1作為主鍵。這種方式可能產生的問題是:不能在集群下使用。

    5)  identity

    采用數據庫提供的主鍵生成機制。如DB2、SQL Server、MySQL 中的主鍵生成機制。

    6)  sequence

    采用數據庫提供的 sequence 機制生成主鍵。如 Oralce 中的Sequence

    7)  native

    由 Hibernate 根據使用的數據庫自行判斷采用 identity、hilo、sequence 其中一種作為主鍵生成方式。

    8)  uuid.hex

    由 Hibernate 基于128 位 UUID 算法 生成16 進制數值(編碼后以長度32 的字符串表示)作為主鍵。

    9)  uuid.string

    uuid.hex 類似,只是生成的主鍵未進行編碼(長度16),不能應用在 PostgreSQL 數據庫中。

    10) foreign

    使用另外一個相關聯的對象的標識符作為主鍵。

    主鍵配置舉例如下:

    <id name="id" column="id" type="java.lang.Integer">

                 <generator class="native"/>

    </id>

    另外還可以擴展Hibernate的類來做自己的主鍵生成策略,具體例子見:http://www.javaeye.com/topic/93391

    2. 普通屬性(property

           開發人員可以打開網址:http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

    來查看hibernate3.0dtd信息,可看到property的定義如下:

    <!ELEMENT property (meta*,(column|formula)*,type?)>
                        <!ATTLIST property name CDATA #REQUIRED>
                        <!ATTLIST property node CDATA #IMPLIED>
                        <!ATTLIST property access CDATA #IMPLIED>
                        <!ATTLIST property type CDATA #IMPLIED>
                        <!ATTLIST property column CDATA #IMPLIED>
                        <!ATTLIST property length CDATA #IMPLIED>
                        <!ATTLIST property precision CDATA #IMPLIED>
                        <!ATTLIST property scale CDATA #IMPLIED>
                        <!ATTLIST property not-null (true|false) #IMPLIED>
                        <!ATTLIST property unique (true|false) "false">
                        <!ATTLIST property unique-key CDATA #IMPLIED>
                        <!ATTLIST property index CDATA #IMPLIED>                                                                                  <!-- include the columns spanned by this property in an index -->
                        <!ATTLIST property update (true|false) #IMPLIED>
                        <!ATTLIST property insert (true|false) #IMPLIED>
                        <!ATTLIST property optimistic-lock (true|false) "true">          <!-- only supported for properties of a class (not component) -->
                        <!ATTLIST property formula CDATA #IMPLIED>
                        <!ATTLIST property lazy (true|false) "false">
        <!ATTLIST property generated (never|insert|always) "never">

           它的各屬性中比較常用的有:name(對應的java類的屬性名稱)、column(對應的表中的字段)、tyope(屬性的類型,eg.java.lang.String)、not-null(設置該屬性是否為空,為true時表示非空,默認為false)和length(字段的長度限制)

             Eg1. <property name="accessname" column="accessName" type="java.lang.String" not-null="true" />

             Eg2. <property name="state" column="state" type="java.lang.Byte" not-null="true" />

    Eg3. <property name="description" column="description" type="java.lang.String" />

    3. 一對多關系(<many-to-one…/><set…></set>

           一對多關系一般是用在一個表與另一個表存在外鍵關聯的時候,例如用戶表的組織id與組織表存在外鍵關聯,則“一”方為組織表,“多”方為用戶表,因為一個組織可以包含多個用戶,而一個用戶只能隸屬于一個組織。

    對于存在一對多關系和多對一關系的雙方,需要在…hbm.xml中進行相應配置,這時在“一”方(例如:組織)需要在映射文件中添加<set…></set>元素,因為它包含多個“多”方的對象,一般的格式如下:

    <set name="java映射類中對應的屬性" inverse="true" lazy="true">

    <key column="表中對應字段"/>

                  <one-to-many class="多方的類"/>

    </set>

           Eg.

    <set name="userSet" inverse="true" lazy="true">

                      <key column="orgId"/>

    <one-to-many class="User"/>

    </set>

    “多”方(例如:用戶)隸屬于一個“一”方對象,一般的格式如下:

    <many-to-one name="java映射類中對應的屬性" column="表中對應字段" class="類名" not-null="true" />

    Eg.

    <many-to-one name="org" column="orgId" class="Organization" not-null="true" />

    4. 一對一關系(<one-to-one…/>

    一對一關系相對一對多關系來說比較少見,但也在某些情況下要用到,例如有一個用戶的基本信息表(USER)和一個用戶的密碼表(PASSWD)就存在一對一的關系。下面來看一下一對一關系在Hibernate的配置。

    其中主表(eg. 用戶的基本信息表)的配置如下:

    <one-to-one name="主表對象中子表對象的屬性名" class="子表對象的類名" cascade="save-update"/>

    Eg. <one-to-one name="password" class="com.amigo.dao.pojo.Passwd" cascade="save-update"/>

    子表(eg. 用戶的密碼表)的配置如下:

    <one-to-one name="子表對象中主表對象的屬性名" class="主表對象的類名" constrained="true" />

    Eg. <one-to-one name="user" class="com.amigo.dao.pojo.User " constrained="true" />

    5. 多對多關系(<many-to-many…/>

    在數據庫設計時,一般將多對多關系轉換為兩個一對多(或多對一)關系,例如在基于角色的權限系統中,用戶和角色存在的關系就是典型的多對多關系,即一個用戶可以具有多個角色,而一個角色又可以為多個用戶所有,一般在設計時,都會加一個用戶與角色的關聯表,該表與用戶表以及角色表都存在外鍵關聯。

    在本小節中講述的是沒有分解的多對多關系在Hibernate中如何配置。設置格式如下:

    <set name="java對象的屬性名" table="表名" cascade="all" outer-join="false">  

    <key column="表的對應字段"/>  

    <many-to-many class="另一個表的對象類" column="另一個表的字段"/>  

    </set>  

    Eg. 上述的多對多關系可以表示為:

    t_user方:

    <set name="roleSet" table="t_user" cascade="all" outer-join="false">  

    <key column="roleId"/>  

    <many-to-many class="com.amigo.dao.pojo.Role" column="roleId"/>  

    </set>  

    t_role方:

    <set name="userSet" table="t_role" cascade="all" outer-join="false">  

    <key column="roleId"/>  

    <many-to-many class="com.amigo.dao.pojo.User" column="roleId"/>  

    </set>

    6. 完整實例

    在本小節中舉一些.hbm.xml映射文件的例子,讓開發人員對其有一個感性的認識。接下來講述一個用戶表(tbl_user)、用戶與角色關聯表(tbl_user_role)、角色表(tbl_role)以及組織表(tbl_organization)的例子。

    1tbl_user

    <?xml version="1.0" encoding='UTF-8'?>

    <!DOCTYPE hibernate-mapping PUBLIC

                                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

    <hibernate-mapping package="com.amigo.dao.pojo">

        <class name="User" table="tbl_user">

            <id name="loginname" column="loginName" type="java.lang.String">

                <generator class="assigned"/>

            </id>

     

            <property name="name" column="name" type="java.lang.String" not-null="true" />

            <property name="password" column="password" type="java.lang.String" not-null="true" />

            <property name="mobile" column="mobile" type="java.lang.String" />

            <property name="telephone" column="telephone" type="java.lang.String" />

            <property name="email" column="email" type="java.lang.String" />

            <property name="createtime" column="createTime" type="java.util.Date" not-null="true" />

            <property name="lastlogintime" column="lastLoginTime" type="java.util.Date" />

            <property name="logintimes" column="loginTimes" type="java.lang.Long" not-null="true" />

            <property name="state" column="state" type="java.lang.Byte" not-null="true" />

            <property name="description" column="description" type="java.lang.String" />

     

            <many-to-one name="organization" column="orgId" class="Organization" not-null="true" />

            <set name="userRoleSet" inverse="true" cascade="all-delete-orphan" lazy="true">

                <key column="loginName"/>

                <one-to-many class="UserRole"/>

            </set>

    </hibernate-mapping>

    2tbl_organization

    <?xml version="1.0" encoding='UTF-8'?>

    <!DOCTYPE hibernate-mapping PUBLIC

                                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

    <hibernate-mapping package="com.amigo.dao.pojo">

        <class name="Organization" table="tbl_organization">

            <id name="orgid" column="orgId" type="java.lang.Long">

                <generator class="native"/>

            </id>

     

            <property name="parentorgid" column="parentOrgId" type="java.lang.Long" not-null="true" />

            <property name="orgname" column="orgName" type="java.lang.String" not-null="true" />

            <property name="orgfullname" column="orgFullName" type="java.lang.String" />

            <property name="orglevel" column="orgLevel" type="java.lang.Integer" not-null="true" />

            <property name="state" column="state" type="java.lang.Byte" not-null="true" />

            <property name="description" column="description" type="java.lang.String" />

            <property name="creator" column="creator" type="java.lang.String" />

            <property name="createtime" column="createTime" type="java.util.Date" />

            <set name="userSet" inverse="true" lazy="true">

                <key column="orgId"/>

                <one-to-many class="User"/>

            </set>

        </class>

    </hibernate-mapping>

    3tbl_user_role

    <?xml version="1.0" encoding='UTF-8'?>

    <!DOCTYPE hibernate-mapping PUBLIC

                                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

    <hibernate-mapping package="com.cotel.netvote.dao.model">

        <class name="UserRole" table="tbl_user_role">

            <id name="urid" column="urId" type="java.lang.Integer">

                <generator class="native"/>

            </id>

            <many-to-one name="role" column="roleId" class="Role" not-null="true" />

            <many-to-one name="user" column="loginName" class="User" not-null="true" />

        </class>

    </hibernate-mapping>

    4tbl_ role

    <?xml version="1.0" encoding='UTF-8'?>

    <!DOCTYPE hibernate-mapping PUBLIC

                                "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

                                "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

    <hibernate-mapping package="com.cotel.netvote.dao.model">

        <class name="Role" table="tbl_role">

            <id name="roleid" column="roleId" type="java.lang.Integer">

                <generator class="native"/>

            </id>

     

            <property name="rolename" column="roleName" type="java.lang.String" not-null="true" />

            <property name="createdate" column="createDate" type="java.util.Date" not-null="true" />

            <property name="description" column="description" type="java.lang.String" />

     

            <set name="userRoleSet" inverse="true" lazy="true" cascade="all">

                <key column="roleId"/>

                <one-to-many class="UserRole"/>

            </set>

        </class>

    </hibernate-mapping>

    http://www.tkk7.com/amigoxie/archive/2007/12/31/171831.html

    posted @ 2008-11-15 21:17 smallfa 閱讀(412) | 評論 (0)編輯 收藏

    搞定struts+spring+hibernate 配置

    1:spring 跟hibernate版本沖突
    2:spring 配置問題
    3:找不到對應的類
    4:hibernate動態生成sprinDAO生成對應實體的XML映射表需要做一些修改

    spring+hibernate 一個奇怪的問題 (求助) SQL Error: 1146, SQLState: 42S02

    http://hi.baidu.com/fgfd0/blog/item/1d96232e79a20d524fc22680.html
    http://www.javaeye.com/topic/79071

    posted @ 2008-11-14 18:48 smallfa 閱讀(212) | 評論 (0)編輯 收藏

    spring+hibernate 一個奇怪的問題 (求助) SQL Error: 1146, SQLState: 42S02

    http://hi.baidu.com/fgfd0/blog/item/1d96232e79a20d524fc22680.html
    http://www.javaeye.com/topic/79071

    posted @ 2008-11-14 18:34 smallfa 閱讀(3704) | 評論 (0)編輯 收藏

    org.apache.catalina.core.AprLifecycleListener]-[INFO] The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

    ubuntu

    TOMCAT昨天突然自己宕掉服務了,怎么重起都不行,后來查看logs中catalina.out 日志發現如下錯誤
    INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/jdk1.6.0_01/jre/lib/i386/client:/usr/local/jdk1.6.0_01/jre/lib/i386:/usr/local/jdk1.6.0_01/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
    Aug 24, 2007 1:20:27 PM org.apache.coyote.http11.Http11Protocol init
    SEVERE: Error initializing endpoint
    java.net.BindException: Address already in use:8080
    ....................
    netstat -nlp 看到后臺java只有一個8015端口,而且有
    127.0.0.1:8080  127.0.0.1:8080 ESTABLISHED的鏈接
    很是奇怪,
    google一下提示是要使用apr
    由于是debian系統所以很容易安裝需要的軟件
    apt-get install libapr1-dev apache2-utils
    可是還是不行,錯誤照常出現。
    重起服務器后一切正常。


    win

    當我下載Tomcat6.0.16并安裝到eclise后,當任意建一個工程后,哪怕只有一個jsp頁面的工程,啟動Tomcat后都會有一個“警告”的提示(對工程與頁面顯示沒有任何影響)。于是刪除工程,只啟動Tomcat服務器時,提示信息:The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ......,是說在產品環境下可以優化工作性能的Tomcat的本地包沒有找到。于是我就把以前所學的有關classpath、path相關的知識全用上設置一大類鍵值對,根本無法解決這個問題。
    經過幾個小時的上網搜索終于找到了解決方法:原來Tomcat從5.5版本后增加了APR技術(Apache Portable Runtime),這是一個用C語言寫成文件包,目的在于提高Tomcat的服務性能,從而使得Tomcat將不僅僅擔任一個容器的功能,而是要成為一個 一般的web服務器(general purpose webserver)。現在是什么都漲,Tomcat的野心也在漲啊!
    通過上述描述大家也就明白了,我們只要把那個本地文件下載過來,配置好之后,這些問題就會迎刃而解了,首先要到Tomcat網站上去下載:
    http://tomcat.apache.org/download-native.cgi 找到Native 1.1.13 Source Release zip 這是個源文件,如果你要自己編譯就下這個,如果想使用已編譯好的dll文件就點擊這個鏈接下面的“Here“ 鏈接,找一個版本號最新的,進去可以下載一個tcnative-1.dll文件。
    那么如何配置這個文件呢?簡單一點就是把這個文件扔到windows/system32下面,因為我們已經在path下配置好了這個路徑,系統啟動后就可以找到這個路徑下的文件,如果想放到自己指定的位置,比如話到Tomcat安裝路徑下,那么就要在path中指定好這個路徑,我是這樣做的,首先根據慣例在系統變量中設置CATALINA_HOME變量,然后再把%CATALINA_HOME%\bin加入到path中,然后再把下載的dll文件放到 bin路徑下就一切ok了。當然不做這些工作不會影Tomcat運行,蘿卜白菜各有所愛了。
    本文參考http://www.tkk7.com/beansoft/archive/2006/12/22/89577.html

    posted @ 2008-11-13 17:15 smallfa 閱讀(3271) | 評論 (0)編輯 收藏

    webwork相關配置

    https://webwork.dev.java.net/servlets/ProjectDocumentList下載WebWork壓縮包,并將其解壓開來,本文中使用的是webwork-2.1.7版本。
    其中必須要在lib文件夾中加入的jar文件分別為
    webwork-2.1.7.jar
    xwork.jar ———— 包含webwork構建所依賴的xwork類庫
    common-logging.jar ———— 通用日志類庫,webwork使用它來提供透明的日志記錄
    oscore.jar ———— 一個通用功能類庫
    velocity-dep.jar ———— 依賴的Velocity類庫
    ognl.jar ———— webwork中使用的表達式語言(ORGL)
    除webwork-2.1.7.jar以外的幾個jar文件都可以從WebWork壓縮包中的lib\core文件夾下找到
    而如果需要其他的功能(如:文件上傳),則要將lib\core下的相應的jar文件拷貝到WEB-INF\lib目錄

    配置web.xml文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <display-name>My WebWork Application</display-name>
    增加有關servlet定義的節點
    <servlet>
    <servlet-name>webwork</servlet-name>
    <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher
    </servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    將這個servlet映射至某個URL模式
    <servlet-mapping>
    <servlet-name>webwork</servlet-name>
    <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    增加webwork標簽庫的定義節點
    <taglib>
    <taglib-uri>webwork</taglib-uri>
    <taglib-location>/WEB-INF/webwork.tld</taglib-location>
    </taglib>
    </web-app>

    創建xwork.xml配置文件

    <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
    <xwork>
    <include file="webwork-default.xml" />
    <package name="example" extends="webwork-default">
    <action name="hello" class="org.liky.webwork.liky.HelloWorldAction">
    <result name="success" type="dispatcher">index.jsp</result>
    </action>
    </package>
    </xwork>

    posted @ 2008-11-09 00:22 smallfa 閱讀(275) | 評論 (0)編輯 收藏

    圖解MyEclipse配置struts+hibernate+spring+FreeMarker

    這幾天把hibernate和spring好好看了下,再想想struts的一些東西,決定把3個整合一下一起用,表現層用struts+freemarker,業務層用spring,hibernate處理持久層。在struts中,利用委托,將action的處理委托給spring進行,struts只負責頁面邏輯。
    前些日子下了Eclipse 3.2+MyEclipse5.0M2,感覺MyEclipse一些東西還是不錯的,就用它來做個整合。
    首先,建立一個web project:


    然后,給新建立的項目附加上struts的一些文件:


    完成后項目結構如下:

    接著加入hibernate需要的文件:






    完成后項目結構為:

    再加入spring的文件:

    注意下面的選擇:



    完成后可以看到:

    打開那個applicationContext.xml,將

    改為:

    現在還需要做一些修改,才能在運行的時候不報錯,我以前也寫過struts+hibernate的時候,會拋一個錯,之所以是由于hibernate包含的那個xerces.jar,所以現在直接把它給刪掉,沒什么問題。

    在spring和hibernate那,有2個log4j.jar,老版本不好用,所以刪除,換一個新版本。
    刪除,換上,然后,在src下加入一個log4j.properties:

    內容如下:

    這樣log4j就配好了。
    接下來是加入FreeMarker,jsp比不上,個人感覺。
    先下一個freemarker.jar,加到WEB-INF下的lib目錄,然后,打開web.xml,加入如下內容:



    下面來點實戰演習。
    切換到MyEclipse的hibernate視圖。

    打開數據庫連接:


    然后,執行

       
    自動生成幾個文件:

    并且,spring的applicationContext.xml自動加入

    然后,建立ftl頁面,根據前面web.xml配置的freemarker設置,需要建立如下目錄
      
    先把頁面邏輯處理下,打開struts-config.xml,然后進行如下操作



    繼續加




    完成后效果如下:

    下面是3個頁面:



    這里注意下前2行,在freemarker中用struts標簽。
    前面說過action委托給spring做,許要在struts那加入

    然后,action類需要修改下

    下面的setter是為spring準備的。
    struts配置那的action聲明需要修改一下,說明用代理:

    然后在spring的applicationContext.xml加上:

    注意是用name,不是id。
    發布,運行,結果拋了個錯

    還好,問題不大,找到加到WEB-INF/lib下就可以了。
    開始測試

    成功的話:

    否則:

    然后去數據庫一看,郁悶,數據沒進來,試了N久,最后發現spring里要定義個dataSource。原來sessionFactory的定義變為如下:

    ok,一切正常。到這里,就寫完了,只是為說明怎樣用MyEclipse進行快速開發,畢竟平時做項目要的是進度,還要監管質量,有了MyEclipse,確實方便不少。
    http://www.cnblogs.com/zxub/archive/2006/08/03/466682.html

    posted @ 2008-11-07 01:55 smallfa 閱讀(1890) | 評論 (0)編輯 收藏

    MyEclipse 5.5 開發 Spring 整合 Struts, Hibernate 的應用

    第一部分: Struts 開發 6.83MB 22分36秒 http://beansoft.java-cn.org/download/ssh_1_struts.exe

    第二部分: Hibernate + Spring 11.5MB 38分59秒 http://beansoft.java-cn.org/download/ssh_2_hibernate_spring.exe

    第三部分: 自己實現 SpringProxyAction 5.05MB 14分25秒 http://beansoft.java-cn.org/download/ssh_3_struts_proxy_asm.exe

    第四部分: ASM 錯誤解決及用 Spring 的代理實現整合 9.95MB 23分49秒 http://beansoft.java-cn.org/download/ssh_4_spring_struts.exe

    大綱 PDF 下載: http://beansoft.java-cn.org/download/spring_struts_hibernate.pdf 427KB

    代碼下載(不帶類庫): http://beansoft.java-cn.org/download/myssh.rar 45KB

     

    視頻大綱:
    http://www.tkk7.com/beansoft/archive/2008/11/04/150877.html#238712

    posted @ 2008-11-06 22:02 smallfa 閱讀(309) | 評論 (0)編輯 收藏

    dwr 配置

    1:下載dwr.jar放在 WebRoot\WEB-INF\lib

    2:頁面
    <%@ page language="java" pageEncoding="UTF-8"%>
          <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/checkuser.js'></script>
           <script type='text/javascript'>
                function  check(form)
              {
             
               var id=document.getElementById("id").value;
               if(id=="new")
               {
               regUserChked(form);
               }
               else
               {
              
               RegUserChked(form);
                 
               }
              }
            
            
            
            
            
            
            
            
            
            
              function regUserChked(form){ 
              
                 var username= document.getElementById("username").value;
               
                
                  if(username=="")
                  {
                
                  alert("用戶名不能為空!")
               
                  return false;
                  }
                 
                  checkuser.isExist(username,showData);//showData回調函數  
                  
                   
               } 
              
                function RegUserChked(form){ 
               
                  var id=document.getElementById("id").value;
                  var username= document.getElementById("username").value;
                  if(username=="")
                  {
                
                  alert("用戶名不能為空!")
               
                  return false;
                  }
                
                    checkuser.IsExistUpdate(username,id,ShowData);  //showData回調函數  
                }
              
              
              
              
              
              
              
              function showData(data){  
                if(data){  
                  alert('該用戶已被注冊了!');
                }else{  
                  alert('該用戶未被注冊了!');  
                 }  
              }  
             
               function ShowData(data){  
                if(data){  
                  alert('該用戶已被注冊了!');
                }else{  
                  alert('可以更新!');  
                 }  
              }  
            </script>
        </head>
        <body>
            <html:form action="/acctount" onsubmit="javascript:return Juge(this);">
                <input type="hidden" name="id"  value="<%=id%>">
                username : <html:text property="username" value="<%=Username %>" onblur="check(this)" />
    <html:errors property="username"/><br/>
                password : <html:text property="password" value="<%=password %>"/>
    <html:errors property="password"/><br/>

            <html:submit/><html:cancel/>
            </html:form>
        </body>
    </html>




    3:dwr.xml配置
          <dwr>

        <allow> 
     
        
     <!-- 直接取操作類  <create creator="new" javascript="checkuser" scope="application">
          <param name="class" value="com.henry.dao.daospring"/>
           <include method="isExist"/>
        </create>
       -->
      
       <!-- 間接取bean -->
           <create creator="spring" javascript="checkuser">
          <param name="beanName" value="accountDAO" />
             <include method="isExist"/>
             <include method="IsExistUpdate"/>
           </create>
     </allow> 
    </dwr>

    4:  applicationContext.xml

       <bean id="accountDAO" class="com.henry.dao.AccountDao">
       <property name="dataSource">
         <ref local="dataSource"/>
         </property>
        <property name="sqlMapClient">
        <ref bean="sqlMapClient"/>
        </property>
       
         </bean>
    5:web.xml
       <servlet>
      <servlet-name>dwr-invoker</servlet-name>
      <display-name>DWR Servlet</display-name>
      <servlet-class>org.directwebremoting.servlet.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>
     <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    6:1)以上dwr通過間接spring-> applicationContext.xml的bean
    <!-- 間接取bean -->
           <create creator="spring" javascript="checkuser">
          <param name="beanName" value="accountDAO" />
             <include method="isExist"/>
             <include method="IsExistUpdate"/>
           </create>


       2)如果直接取spring-> applicationContext.xml的bean
    <!-- 直接取操作類  <create creator="new" javascript="checkuser" scope="application">
          <param name="class" value="com.henry.dao.daospring"/>
           <include method="isExist"/>
        </create>
       -->
     
    com.henry.dao.daospring
    :如下
    package com.henry.dao;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import  com.henry.dto.accountDto;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    public class daospring {
        ApplicationContext context=new ClassPathXmlApplicationContext("com/henry/dbxml/applicationContext.xml");
        AccountDao testDAOImpl=(AccountDao)context.getBean("AccountDAO");
        public List getAccountsByName(String username)
        {
          
        
          return  testDAOImpl.getListByName(username);
        }
       
        /*
         * update check
         */
        public boolean IsExistUpdate(String username)
        {
            accountDto account=new accountDto();
            List list=this.getAccountsByName(username);
            if(list.size()==0)
            {
                return false;
            }
            else
            {
                //if(account.getId()==Integer.parseInt(id))
                //{
                //    return false;
                   
                //}
                //else
                //{
                    return true;
                //}
            }
        }
       
        public String getIdByName(String username,String id)
        {
            accountDto account=new accountDto();
            List list=this.getAccountsByName(username);
            if(list.size()==0)
            {
                return null;
            }
            else
            {
                return   Integer.toString(((accountDto)list.get(0)).getId()) ;
            }
           
        }
       
       
       
        public boolean IsExist(String username) { 
           
            if(testDAOImpl.isExist(username))
            {
            return true;
            }
            else
            {
                return false;
            }
          
       }
       
        //new or add   check
        public boolean isExist(String username) { 
              
            if(testDAOImpl.isExist(username))
            {
            return true;
            }
            else
            {
                return false;
            }
          
       }
       
       
        public accountDto getAccountById(String id)
        {
        return  testDAOImpl.getById(id);
        }
      
    }


    7:出現問題struts---->action--->findforward跳轉頁面------該頁面dwr取spring-->applicationContext.xml的bean變成無效

    posted @ 2008-02-28 18:12 smallfa 閱讀(563) | 評論 (0)編輯 收藏

    我javablog

    我javablog

    posted @ 2008-02-27 09:46 smallfa 閱讀(231) | 評論 (0)編輯 收藏

    僅列出標題
    共4頁: 上一頁 1 2 3 4 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    smallfa
    博客園
    C++博客
    博客生活
    Blogjava
    足球博客
    微博
    Redsaga

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    Ajax

    Blogs

    DB

    java

    Open source

    ORM

    Tools/Help

    vedio Tech

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 又硬又粗又长又爽免费看 | 美女内射无套日韩免费播放 | 免费观看理论片毛片| 亚洲综合av一区二区三区不卡| 最好看的中文字幕2019免费| 亚洲av日韩av高潮潮喷无码 | 亚洲成a人片在线观看天堂无码| 曰批全过程免费视频在线观看| 亚洲国产综合精品| 亚洲免费视频观看| ass亚洲**毛茸茸pics| 免费A级毛片无码免费视| 亚洲午夜精品久久久久久app | 亚洲综合熟女久久久30p| 国产色无码精品视频免费| 亚洲A∨无码无在线观看| 一色屋成人免费精品网站 | 亚洲人成片在线观看| 国产精品成人免费一区二区 | 2021免费日韩视频网| 亚洲AV永久无码精品放毛片| 亚洲AⅤ无码一区二区三区在线| 无码的免费不卡毛片视频| 亚洲人成伊人成综合网久久久 | 日本黄色动图免费在线观看| 亚洲精品视频久久| 麻豆国产VA免费精品高清在线| 免费观看四虎精品成人| 亚洲国产婷婷六月丁香| 91精品免费在线观看| 亚洲av乱码中文一区二区三区| 久久久久亚洲精品无码网址| 鲁大师在线影院免费观看| 亚洲中文字幕无码av永久| 国产成人精品日本亚洲专区61| 久草视频免费在线| 一级特级女人18毛片免费视频| 亚洲国语精品自产拍在线观看| 在线免费观看毛片网站| 日本道免费精品一区二区| 亚洲精品无码专区|