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

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

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

    duansky'weblog

    統(tǒng)計

    留言簿(3)

    友情鏈接

    閱讀排行榜

    評論排行榜

    Spring+hibernate+DWR整合

    首先,建一個web project,然后添加對hibernate和spring的支持,我們使用的是hibernate3.1和spring2.0,然后導(dǎo)入dwr.jar和commons-pool-1.3.jar(不知道m(xù)yeclipse怎么搞的,添加Spring功能支持的時候就有了commons-dbcp.jar,居然沒有其依賴的commons-pool-x.jar,只好單獨添加了,另外,需要將Spring2.0 AOP Liberaries里的asm2.2.3.jar刪除,因為好像和Hiberate中的生成代理用的asm.jar沖突,我把Spring2.0 AOP Liberaries排到最后仍然有沖突,所以只好刪掉了,不知道大家遇到過這種情況么)。我們使用myeclise自帶的Derby數(shù)據(jù)庫,在里面建一個表BOOK:
    ID bigint primary key,autoincrement
    NAME varchar(20)
    ISBM varchar(20)
    AUTHOR varchar(15)
    然后利用myeclipse的hibernate反向工程生成領(lǐng)域模型:Book.java, DAO:BookDAO.jar, Book 的映射文件Book.hbm.xml:
    生成的代碼及配置文件如下:
    Book.java:
    package?edu.jlu.fuliang.domain;
    /**?*//**
    ?*?Book?generated?by?MyEclipse?Persistence?Tools
    ?
    */


    public?class?Book?implements?java.io.Serializable?{

    ????
    //?Fields

    ????
    private?Long?id;
    ????
    private?String?name;
    ????
    private?String?isbm;
    ????
    private?String?author;

    ????
    //?Constructors

    ????
    /**?*//**?default?constructor?*/
    ????
    public?Book()?{
    ????}


    ????
    /**?*//**?minimal?constructor?*/
    ????
    public?Book(Long?id,?String?name,?String?isbm)?{
    ????????
    this.id?=?id;
    ????????
    this.name?=?name;
    ????????
    this.isbm?=?isbm;
    ????}


    ????
    /**?*//**?full?constructor?*/
    ????
    public?Book(Long?id,?String?name,?String?isbm,?String?author)?{
    ????????
    this.id?=?id;
    ????????
    this.name?=?name;
    ????????
    this.isbm?=?isbm;
    ????????
    this.author?=?author;
    ????}


    ????
    //?Property?accessors

    ????
    public?Long?getId()?{
    ????????
    return?this.id;
    ????}


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


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


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


    ????
    public?String?getIsbm()?{
    ????????
    return?this.isbm;
    ????}


    ????
    public?void?setIsbm(String?isbm)?{
    ????????
    this.isbm?=?isbm;
    ????}


    ????
    public?String?getAuthor()?{
    ????????
    return?this.author;
    ????}


    ????
    public?void?setAuthor(String?author)?{
    ????????
    this.author?=?author;
    ????}

    ????
    public?String?toString(){
    ????????
    return?"[id="?+?id?+?",name="?+?name?+?",isbm="?+?isbm?+?",author="?+?author?+?"]";
    ????}

    }
    edu.jlu.fuliang.dao.BookDAO.java:
    package?edu.jlu.fuliang.dao;

    import?java.util.List;
    import?org.apache.commons.logging.Log;
    import?org.apache.commons.logging.LogFactory;
    import?org.hibernate.LockMode;
    import?org.springframework.context.ApplicationContext;
    import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    import?edu.jlu.fuliang.domain.Book;

    /**?*//**
    ?*?Data?access?object?(DAO)?for?domain?model?class?Book.
    ?*?
    ?*?
    @see?edu.jlu.fuliang.domain.Book
    ?*?
    @author?MyEclipse?Persistence?Tools
    ?
    */


    public?class?BookDAO?extends?HibernateDaoSupport?{
    ????
    private?static?final?Log?log?=?LogFactory.getLog(BookDAO.class);
    ????
    //?property?constants
    ????public?static?final?String?NAME?=?"name";
    ????
    public?static?final?String?ISBM?=?"isbm";
    ????
    public?static?final?String?AUTHOR?=?"author";

    ????
    protected?void?initDao()?{
    ????????
    //?do?nothing
    ????}


    ????
    public?void?save(Book?transientInstance)?{
    ????????log.debug(
    "saving?Book?instance");
    ????????
    try?{
    ????????????getHibernateTemplate().save(transientInstance);
    ????????????log.debug(
    "save?successful");
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "save?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?void?delete(Book?persistentInstance)?{
    ????????log.debug(
    "deleting?Book?instance");
    ????????
    try?{
    ????????????getHibernateTemplate().delete(persistentInstance);
    ????????????log.debug(
    "delete?successful");
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "delete?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?Book?findById(java.lang.Long?id)?{
    ????????log.debug(
    "getting?Book?instance?with?id:?"?+?id);
    ????????
    try?{
    ????????????Book?instance?
    =?(Book)?getHibernateTemplate().get(
    ????????????????????
    "edu.jlu.fuliang.domain.Book",?id);
    ????????????
    return?instance;
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "get?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?List?findByExample(Book?instance)?{
    ????????log.debug(
    "finding?Book?instance?by?example");
    ????????
    try?{
    ????????????List?results?
    =?getHibernateTemplate().findByExample(instance);
    ????????????log.debug(
    "find?by?example?successful,?result?size:?"
    ????????????????????
    +?results.size());
    ????????????
    return?results;
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "find?by?example?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?List?findByProperty(String?propertyName,?Object?value)?{
    ????????log.debug(
    "finding?Book?instance?with?property:?"?+?propertyName
    ????????????????
    +?",?value:?"?+?value);
    ????????
    try?{
    ????????????String?queryString?
    =?"from?Book?as?model?where?model."
    ????????????????????
    +?propertyName?+?"=??";
    ????????????
    return?getHibernateTemplate().find(queryString,?value);
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "find?by?property?name?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?List?findByName(Object?name)?{
    ????????
    return?findByProperty(NAME,?name);
    ????}


    ????
    public?List?findByIsbm(Object?isbm)?{
    ????????
    return?findByProperty(ISBM,?isbm);
    ????}


    ????
    public?List?findByAuthor(Object?author)?{
    ????????
    return?findByProperty(AUTHOR,?author);
    ????}


    ????
    public?List?findAll()?{
    ????????log.debug(
    "finding?all?Book?instances");
    ????????
    try?{
    ????????????String?queryString?
    =?"from?Book";
    ????????????
    return?getHibernateTemplate().find(queryString);
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "find?all?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?Book?merge(Book?detachedInstance)?{
    ????????log.debug(
    "merging?Book?instance");
    ????????
    try?{
    ????????????Book?result?
    =?(Book)?getHibernateTemplate().merge(detachedInstance);
    ????????????log.debug(
    "merge?successful");
    ????????????
    return?result;
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "merge?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?void?attachDirty(Book?instance)?{
    ????????log.debug(
    "attaching?dirty?Book?instance");
    ????????
    try?{
    ????????????getHibernateTemplate().saveOrUpdate(instance);
    ????????????log.debug(
    "attach?successful");
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "attach?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?void?attachClean(Book?instance)?{
    ????????log.debug(
    "attaching?clean?Book?instance");
    ????????
    try?{
    ????????????getHibernateTemplate().lock(instance,?LockMode.NONE);
    ????????????log.debug(
    "attach?successful");
    ????????}
    ?catch?(RuntimeException?re)?{
    ????????????log.error(
    "attach?failed",?re);
    ????????????
    throw?re;
    ????????}

    ????}


    ????
    public?static?BookDAO?getFromApplicationContext(ApplicationContext?ctx)?{
    ????????
    return?(BookDAO)?ctx.getBean("BookDAO");
    ????}

    }
    Book.hbm.xml:

    <?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"
    >
    <!--?
    ????Mapping?file?autogenerated?by?MyEclipse?Persistence?Tools
    -->
    <hibernate-mapping>
    ????
    <class?name="edu.jlu.fuliang.domain.Book"?table="BOOK"?schema="CLASSICCARS">
    ????????
    <id?name="id"?type="java.lang.Long">
    ????????????
    <column?name="ID"?/>
    ????????????
    <generator?class="identity"?/>
    ????????
    </id>
    ????????
    <property?name="name"?type="java.lang.String">
    ????????????
    <column?name="NAME"?length="20"?not-null="true"?/>
    ????????
    </property>
    ????????
    <property?name="isbm"?type="java.lang.String">
    ????????????
    <column?name="ISBM"?length="20"?not-null="true"?unique="true"?/>
    ????????
    </property>
    ????????
    <property?name="author"?type="java.lang.String">
    ????????????
    <column?name="AUTHOR"?length="15"?/>
    ????????
    </property>
    ????
    </class>
    </hibernate-mapping>

    下面我們配置一下Spring,我們把applicationContext.xml分成了三個,分別是applicationContext-db.xml,applicationContext-dao.xml,applicationContext-service.我們看看如何配置:

    applicationContext-db.xml:


    <?xml?version="1.0"?encoding="UTF-8"?>
    <beans
    ????
    xmlns="http://www.springframework.org/schema/beans"
    ????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ????xsi:schemaLocation
    ="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    ????
    <bean?id="dataSource"
    ????????class
    ="org.apache.commons.dbcp.BasicDataSource">
    ????????
    <property?name="driverClassName"
    ????????????value
    ="org.apache.derby.jdbc.ClientDriver">
    ????????
    </property>
    ????????
    <property?name="url"
    ????????????value
    ="jdbc:derby://localhost:1527/myeclipse;create=true">
    ????????
    </property>
    ????????
    <property?name="username"?value="classiccars"></property>
    ????????
    <property?name="password"?value="myeclipse"></property>
    ????
    </bean>
    ????
    <bean?id="sessionFactory"
    ????????class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    ????????
    <property?name="dataSource">
    ????????????
    <ref?bean="dataSource"?/>
    ????????
    </property>
    ????????
    <property?name="hibernateProperties">
    ????????????
    <props>
    ????????????????
    <prop?key="hibernate.dialect">
    ????????????????????org.hibernate.dialect.DerbyDialect
    ????????????????
    </prop>
    ????????????????
    <prop?key="hibernate.show_sql">
    ???????????????????true
    ????????????????
    </prop>
    ????????????
    </props>
    ????????
    </property>
    ????????
    <property?name="mappingResources">
    ????????????
    <list>
    ????????????????
    <value>edu/jlu/fuliang/domain/Book.hbm.xml</value>
    ????????????
    </list>
    ????????
    </property>
    ????
    </bean>
    </beans>

    applicationContext-dao.xml:

    <?xml?version="1.0"?encoding="UTF-8"?>
    <beans
    ????
    xmlns="http://www.springframework.org/schema/beans"
    ????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ????xsi:schemaLocation
    ="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    ????
    ????
    <bean?id="bookDAO"?class="edu.jlu.fuliang.dao.BookDAO">
    ????????
    <property?name="sessionFactory">
    ????????????
    <ref?bean="sessionFactory"?/>
    ????????
    </property>
    ????
    </bean>
    </beans>

    接下來我們來寫我們的Service層:

    edu.jlu.fuliang.service.BookManageService.java

    package?edu.jlu.fuliang.service;
    import?java.util.List;

    import?edu.jlu.fuliang.domain.Book;

    public?interface?BookManageService?{
    ????
    public?List<Book>?getAllBooks();
    ????
    public?List<Book>?getBookByName(String?name);
    ????
    public?void?updateBook(Book?book);
    ????
    public?void?addBook(Book?book);
    ????
    public?void?deleteBook(long?id);
    }

    edu.jlu.fuliang.service.impl.BookManageServiceImpl.java:

    package?edu.jlu.fuliang.serviceImpl;

    import?java.util.List;

    import?org.apache.commons.logging.Log;
    import?org.apache.commons.logging.LogFactory;

    import?edu.jlu.fuliang.dao.BookDAO;
    import?edu.jlu.fuliang.domain.Book;
    import?edu.jlu.fuliang.service.BookManageService;

    public?class?BookManageServiceImpl?implements?BookManageService{
    ????
    private?static?final?Log?log?=?LogFactory.getLog(BookManageServiceImpl.class);
    ????
    private?BookDAO?bookDAO;
    ????@Override
    ????
    public?void?addBook(Book?book)?{
    ????????bookDAO.save(book);
    ????}


    ????@Override
    ????
    public?void?deleteBook(long?id)?{
    ????????Book?book?
    =?bookDAO.findById(id);
    ????????bookDAO.delete(book);
    ????}


    ????@Override
    ????
    public?List<Book>?getAllBooks()?{
    ????????
    return?bookDAO.findAll();
    ????}


    ????@Override
    ????
    public?List<Book>?getBookByName(String?name)?{
    ????????
    return?bookDAO.findByName(name);
    ????}


    ????@Override
    ????
    public?void?updateBook(Book?book)?{
    ????????log.info(book);
    ????????bookDAO.attachDirty(book);
    ????}


    ????
    public?BookDAO?getBookDAO()?{
    ????????
    return?bookDAO;
    ????}


    ????
    public?void?setBookDAO(BookDAO?bookDAO)?{
    ????????
    this.bookDAO?=?bookDAO;
    ????}

    }

    然后我們來配置Service和事務(wù):

    applicationContext-service.xml:

    <?xml?version="1.0"?encoding="UTF-8"?>
    <beans
    ????
    xmlns="http://www.springframework.org/schema/beans"
    ????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ????xsi:schemaLocation
    ="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    ????
    <bean?id="bookManageServiceTarget"?class="edu.jlu.fuliang.serviceImpl.BookManageServiceImpl">
    ????????
    <property?name="bookDAO">
    ????????????
    <ref?bean="bookDAO"/>
    ????????
    </property>
    ????
    </bean>
    ????
    <bean?id="transactionManager"?class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    ????????
    <property?name="sessionFactory"?ref="sessionFactory"/>
    ????
    </bean>
    ????
    <bean?id="bookManageService"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    ????????
    <property?name="transactionManager"?ref="transactionManager"/>
    ????????
    <property?name="target"?ref="bookManageServiceTarget"/>
    ????????
    <property?name="transactionAttributes">
    ????????????
    <props>
    ????????????????
    <prop?key="add*">PROPAGATION_REQUIRED</prop>
    ????????????????
    <prop?key="delete*">PROPAGATION_REQUIRED</prop>
    ????????????????
    <prop?key="update*">PROPAGATION_REQUIRED</prop>
    ????????????????
    <prop?key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    ????????????
    </props>
    ????????
    </property>
    ????
    </bean>
    </beans>

    最后我們來把dwr整合進來:

    我們在web.xml添加ContextLoaderListener來加載applicationContext-db.xml,applicationContext-dao.xm,applicationContext-service.xml,以及配置DwrServlet:

    web.xml:


    <?xml?version="1.0"?encoding="UTF-8"?>
    <web-app?version="2.4"?
    ????xmlns
    ="http://java.sun.com/xml/ns/j2ee"?
    ????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"?
    ????xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee?
    ????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    >
    ?
    <context-param>
    ?????
    <param-name>contextConfigLocation</param-name>
    ?????
    <param-value>classpath:applicationContext-*.xml</param-value>
    ?
    </context-param>
    ?
    <listener>
    ?????
    <listener-class>
    ???????org.springframework.web.context.ContextLoaderListener?
    ?????
    </listener-class>
    ?
    </listener>
    ?
    <servlet>
    ?????
    <servlet-name>dwr-invoker</servlet-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>
    </web-app>

    在dwr.xml中配制bean的創(chuàng)建方式,類型轉(zhuǎn)換,以及Service要暴露的接口:

    <dwr>
    ????
    <allow>
    ????????
    <convert?converter="bean"?match="edu.jlu.fuliang.domain.Book"/>
    ????????
    <create?creator="spring"?javascript="BookManageService"?>
    ????????????
    <param?name="beanName"?value="bookManageService"/>
    ????????????
    <include?method="getAllBooks"/>
    ????????????
    <include?method="getBookByName"/>
    ????????????
    <include?method="updateBook"/>
    ????????????
    <include?method="addBook"/>
    ????????????
    <include?method="deleteBook"/>
    ????????
    </create>
    ???
    </allow>
    </dwr>

    最后,我們編寫jsp頁面index.jsp:

    <html>
    <head><title>DWR?test</title>
    ????
    <script?type='text/javascript'?src='/DWRTest/dwr/interface/BookManageService.js'></script>
    ????
    <script?type='text/javascript'?src='/DWRTest/dwr/engine.js'></script>
    ????
    <script?type='text/javascript'?src='/DWRTest/dwr/util.js'></script>

    ????
    <script?type="text/javascript">
    ????????
    var?bookCache?=?{};
    ????????
    var?currentBook?=?null;
    ????????
    ????????
    function?loadAllBooks(){
    ????????????BookManageService.getAllBooks(handleGetAllBooks,handleGetAllBooksError);
    ????????}

    ????????
    function?handleGetAllBooks(books){
    ????????????dwr.util.removeAllRows(
    "booksBody",{?filter:function(tr)?{
    ??????
    return?(tr.id?!=?"pattern");
    ??????}
    }
    );

    ????????????
    var?book,id;
    ????????????
    for(var?i?=?0;?i?<?books.length;?i++){
    ????????????????book?
    =?books[i];
    ????????????????id?
    =?book.id;
    ????????????
    ????????????????dwr.util.cloneNode(
    "pattern",?{?idSuffix:id?});
    ????????????????dwr.util.setValue(
    "t_name"?+?id,?book.name);
    ????????????????dwr.util.setValue(
    "t_isbm"?+?id,?book.isbm);
    ????????????????dwr.util.setValue(
    "t_author"?+?id,book.author);
    ???????????????$(
    "pattern"?+?id).style.display?=?"block";
    ???????????????bookCache[id]?
    =?book;
    ????????????}

    ????????}

    ????????
    function?handleGetAllBooksError(msg){
    ????????????alert(
    "Error:?"?+?msg);
    ????????}

    ????????
    ????????
    function?addBook(){
    ????????????
    var?book?=?{name:null,isbm:null,author:null};
    ????????????dwr.util.getValues(book);
    ????????????dwr.engine.beginBatch();
    ?????????????????BookManageService.addBook(book);
    ?????????????????loadAllBooks();
    ??????????????dwr.engine.endBatch();
    ????????}

    ????????
    ????????
    function?editBook(btId){
    ????????????currentBook?
    =?bookCache[btId.substring(4)];
    ????????????dwr.util.setValues(currentBook);
    ????????}

    ????????
    ????????
    function?updateBook(){
    ????????????
    var?book?=?{id:null,name:null,isbm:null,author:null};?
    ????????????dwr.util.getValues(book);
    ????????????book.id?
    =?currentBook.id;
    ????????????BookManageService.updateBook(book,handleUpdateBook,handleUpdateBookError);
    ????????}

    ????????
    ????????
    function?handleUpdateBook(){
    ????????????alert(
    "Update?book?successfully!");
    ????????????loadAllBooks();
    ????????}

    ????????
    ????????
    function?handleUpdateBookError(msg){
    ????????????alert(
    "Error:?"?+?msg);
    ????????}

    ????????
    ????????
    function?deleteBook(btId){
    ????????????
    var?i?=?confirm("Are?you?sure?to?delete?the?book?");
    ????????????
    if(i?==?true)
    ????????????????BookManageService.deleteBook(btId.substring(
    6),handleDeleteBook,handleDeleteBookError);
    ????????}

    ????????
    ????????
    function?handleDeleteBook(){
    ??????????alert(
    "The?book?has?been?delete?successfully!");
    ??????????loadAllBooks();
    ????????}

    ????????
    ????????
    function?handleDeleteBookError(msg){
    ??????????alert(
    "Error:?"?+?msg);
    ????????}

    ????
    </script>
    </head>

    <body?onload="loadAllBooks()">
    ????
    <div>
    ????????
    <h2>Add?book</h2>
    ????????
    <table>
    ????????????
    <tr>
    ??????????????
    <td>Name:</td><td><input?type="text"?id="name"></td>
    ????????????
    </tr>
    ????????????
    <tr>
    ??????????????
    <td>ISBN:</td>
    ??????????????
    <td><input?type="text"?id="isbm"></td>
    ?????????????
    </tr>
    ????????????
    ????????????
    <tr>
    ???????????????
    <td>Author:</td>
    ???????????????
    <td><input?type="text"?id="author"></td>
    ???????????
    </tr>
    ???????????
    <tr>
    ???????????????
    <td?colspan="2">
    ?????????????????
    <input?type="button"?id="add"?value="Add"?onclick="addBook()">
    ?????????????????
    <input?type="button"?id="update"?value="Update"?onclick="updateBook()">
    ???????????????
    </td>
    ???????????
    </tr>
    ???????
    </table>
    ????
    </div>
    ????
    <hr>
    ????
    <div?id="list">
    ????????
    <table?border="1">
    ??????????
    <thead>
    ??????????????
    <tr>
    ??????????????????
    <th>Name</th>
    ??????????????????
    <th>ISBN</th>
    ??????????????????
    <th>Author</th>
    ??????????????????
    <th>Action</th>
    ??????????????
    </tr>
    ??????????
    </thead>
    ??????????
    <tbody?id="booksBody">
    ??????????????
    <tr?id="pattern"?style="display:none;">
    ??????????????????
    <td>
    ????????????????????
    <span?id="t_name"></span>
    ??????????????????
    </td>
    ??????????????????
    <td>
    ????????????????????
    <span?id="t_isbm"></span>
    ??????????????????
    </td>
    ??????????????????
    <td>
    ????????????????????
    <span?id="t_author"></span>
    ??????????????????
    </td>
    ??????????????????
    <td>
    ????????????????????
    <span?id="action">
    ????????????????????????
    <input?id="edit"?type="button"?value="Edit"?onclick="editBook(this.id)"/>
    ??????????????????????
    <input?id="delete"?type="button"?value="Delete"?onclick="deleteBook(this.id)"/>
    ????????????????????
    </span>
    ??????????????????
    </td>
    ??????????????
    </tr>
    ??????????
    </tbody>
    ????????
    </table>
    ????
    </div>
    </body>

    這樣我們就完成了Spring+Hibernate+DWR的整合,我們可以在一個頁面完成CURD操作了.



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1798037

    posted on 2007-10-30 23:05 duansky 閱讀(427) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲成av人在线视| 亚洲乱码av中文一区二区| 水蜜桃视频在线观看免费| 性xxxx视频免费播放直播| 五月天婷亚洲天综合网精品偷| 亚洲精品不卡视频| 美女被免费网站91色| 日本牲交大片免费观看| 久久久久久亚洲Av无码精品专口 | 亚洲高清最新av网站| 色噜噜亚洲男人的天堂| 国产精品视频白浆免费视频| 亚洲国产成人影院播放| 国产亚洲精aa在线看| 在线日本高清免费不卡| 国产亚洲?V无码?V男人的天堂| 亚洲AV无码AV日韩AV网站| 57PAO成人国产永久免费视频| 亚洲AV无码专区亚洲AV伊甸园| 污污的视频在线免费观看| 日韩在线免费看网站| 亚洲天堂免费在线| 亚洲高清免费在线观看| 亚洲AV永久无码区成人网站| 一级大黄美女免费播放| 无码欧精品亚洲日韩一区夜夜嗨| 国产免费人视频在线观看免费| 亚洲精品天堂在线观看| 精品国产sm捆绑最大网免费站| 亚洲AV无码成人网站久久精品大 | 在线日本高清免费不卡| 亚洲爱情岛论坛永久| 亚洲AV色吊丝无码| 久视频精品免费观看99| 亚洲视频在线免费观看| 欧洲人免费视频网站在线| 久久九九亚洲精品| a毛片在线还看免费网站| 亚洲欧洲自拍拍偷午夜色无码| 精品国产污污免费网站入口 | 亚洲av无码av制服另类专区|