duansky'weblog

          統計

          留言簿(3)

          友情鏈接

          閱讀排行榜

          評論排行榜

          Spring+hibernate+DWR整合

          首先,建一個web project,然后添加對hibernate和spring的支持,我們使用的是hibernate3.1和spring2.0,然后導入dwr.jar和commons-pool-1.3.jar(不知道myeclipse怎么搞的,添加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數據庫,在里面建一個表BOOK:
          ID bigint primary key,autoincrement
          NAME varchar(20)
          ISBM varchar(20)
          AUTHOR varchar(15)
          然后利用myeclipse的hibernate反向工程生成領域模型: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和事務:

          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的創建方式,類型轉換,以及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 閱讀(429) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 巴南区| 远安县| 莱芜市| 浦北县| 揭东县| 留坝县| 玉山县| 米易县| 于田县| 桃园县| 西宁市| 雅江县| 闽清县| 枣庄市| 武乡县| 新平| 南华县| 合江县| 莎车县| 禹城市| 图木舒克市| 巢湖市| 普安县| 屏南县| 长顺县| 广宗县| 桓台县| 高密市| 普兰县| 淳化县| 白银市| 元朗区| 孟连| 宁陕县| 八宿县| 武陟县| 洞口县| 四川省| 阿拉善右旗| 孟津县| 凌海市|