Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計(jì)

          留言簿(23)

          積分與排名

          優(yōu)秀學(xué)習(xí)網(wǎng)站

          友情連接

          閱讀排行榜

          評(píng)論排行榜

          使用Spring 的MVC+Hibernate的數(shù)據(jù)庫操作例子(轉(zhuǎn))

          網(wǎng)上講Spring的資料很多,大部分實(shí)例都是針對(duì)Spring的某一部分做出的例子,如IoC,Aop,MVC,數(shù)據(jù)持久層等等,沒有一個(gè)完整的例子。

          這兩天根據(jù)夏昕的Spring開發(fā)指南,在加上自己參考其他資料,做出了一個(gè)利用Spring的MVC,加上Hibernate的網(wǎng)站的實(shí)例,包括Jsp界面表單的提交,Spring的 MVC控制,使用Spring提供的HibernateTemplate進(jìn)行數(shù)據(jù)持久的完整例子.

          下面把程序的詳細(xì)代碼貼出來,由于自己也是初學(xué),有不對(duì)的地方,還請(qǐng)過路的大俠指點(diǎn)一二。

          一、需求:表單填寫用戶ID,用戶名和地址,寫入數(shù)據(jù)庫

          二、具體實(shí)現(xiàn)。。。。  代碼見詳細(xì)內(nèi)容


          網(wǎng)上講Spring的資料很多,大部分實(shí)例都是針對(duì)Spring的某一部分做出的例子,如Ioc,Aop,MVC,數(shù)據(jù)持久層等等,沒有一個(gè)完整的例子。

          這兩天根據(jù)夏昕的Spring開發(fā)指南,在加上自己參考其他資料,做出了一個(gè)利用Spring的MVC,加上Hibernate的網(wǎng)站的實(shí)例,包括Jsp界面表單的提交,Spring的 MVC控制,使用Spring提供的HibernateTemplate進(jìn)行數(shù)據(jù)持久的完整例子.

          下面把程序的詳細(xì)代碼貼出來,自己也是初學(xué),有不對(duì)的地方,還請(qǐng)過路的大俠指點(diǎn)一二。

          一、需求:表單填寫用戶ID,用戶名和地址,寫入數(shù)據(jù)庫

          二、具體實(shí)現(xiàn)

          1.UserInfoAdd.jsp

          填寫表單界面,輸入ID,Name,Address后提交到UserInfoAddAction.do



          UserID:Name:


          Address:
            


          2.UserInfoVO 

          表單的映射。 Value Object類,用來獲取表單提交的數(shù)據(jù)

           package com.kacakong.spring.vo;

          public class UserInfoVO {
           public String nid;
           public String name;
           public String address;
           public String getAddress() {
            return address;
           }

           public void setAddress(String address) {
            this.address = address;
           }

           public String getName() {
            return name;
           }

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

           public String getNid() {
            return nid;
           }
           

           public void setNid(String nid) {
            this.nid = nid;
           }
           

          }

           

          3.UserInfoAddAction

          Control類,根據(jù)Spring的配置文件,調(diào)用合適的接口,執(zhí)行業(yè)務(wù)操作,控制頁面轉(zhuǎn)向。如果添加數(shù)據(jù)成功,就重定向到成功頁面,如果失敗,就裝到操作失敗頁面。具體調(diào)用的操作類,是根據(jù)Spring的配置文件來找的。使用的是接口操作,而不是實(shí)現(xiàn)類的操作。

          package com.kacakong.spring.action;

          import org.springframework.validation.BindException;
          import org.springframework.web.context.WebApplicationContext;
          import org.springframework.web.servlet.ModelAndView;
          import org.springframework.web.servlet.mvc.SimpleFormController;

          import com.kacakong.hibernate.dao.UserInfoDAO;
          import com.kacakong.hibernate.pojos.UserInfo;
          import com.kacakong.spring.vo.UserInfoVO;

          public class UserInfoAddAction extends SimpleFormController {
           
           private String fail_view;

           private String success_view;
           
           protected ModelAndView onSubmit(Object cmd, BindException ex)
             throws Exception {
            UserInfoVO vo = (UserInfoVO) cmd;
            
            UserInfo userinfo=new UserInfo();
            userinfo.setNid(Integer.valueOf(vo.getNid()));
            userinfo.setName(vo.getName());
            userinfo.setAddress(vo.getAddress());
            
            if (this.doAdd(userinfo)==1){
               return new ModelAndView(this.getSuccess_view());
            }else{
               return new ModelAndView(this.getFail_view());
            }
                
           }

           private int doAdd(UserInfo userinfo) { 
            WebApplicationContext  ctx=this.getWebApplicationContext();
            UserInfoDAO dao=(UserInfoDAO)ctx.getBean("UserInfoDAO");
            try{
             dao.save(userinfo);
             return 1;
            }catch(Exception e){   
             e.printStackTrace();
             return 0;
            }
           }
           
           public String getFail_view() {
            return fail_view;
           }

           public String getSuccess_view() {
            return success_view;
           }

           public void setFail_view(String string) {
            fail_view = string;
           }

           public void setSuccess_view(String string) {
            success_view = string;
           }

          }
           

          4.UserInfo

          PO類,數(shù)據(jù)model層的反映,與數(shù)據(jù)庫建立O/R mapping的映射

           package com.kacakong.hibernate.pojos;

          public class UserInfo {
           public Integer nid;
           public String name;
           public String address;
           public String getAddress() {
            return address;
           }
           
           public void setAddress(String address) {
            this.address = address;
           }
           
           public String getName() {
            return name;
           }
           
           public void setName(String name) {
            this.name = name;
           }

           public Integer getNid() {
            return nid;
           }
           

           public void setNid(Integer nid) {
            this.nid = nid;
           }
           


           

          5.UserInfo.hbm.xml

          PO的hibernate O/R mapping定義文件,這里的ID我設(shè)置成了assigned程序獲取

              "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
              "


             dynamic-update="false" dynamic-insert="false"
            select-before-update="false" optimistic-lock="version" >
            
                     
                 
               insert="true" access="property" column="name" length="50"
             not-null="true" />
               insert="true" access="property" column="address" length="50"
             not-null="true" />
           


           

          6.UserInfoDAO

          接口類,只定義了實(shí)現(xiàn)方法名稱

           package com.kacakong.hibernate.dao;

          import com.kacakong.hibernate.pojos.UserInfo;

          public interface UserInfoDAO {
            public abstract UserInfo get(Integer integer);
            public abstract void save(UserInfo userinfo);
          }

           

          7.UserInfoDAOImp

          UserInfoDAO接口的實(shí)現(xiàn),繼承了HibernateDaoSupport

           package com.kacakong.hibernate.dao;

           

          import org.springframework.orm.hibernate.support.HibernateDaoSupport;

          import com.kacakong.hibernate.pojos.UserInfo;

          public class UserInfoDAOImp  extends HibernateDaoSupport implements UserInfoDAO {

           public UserInfo get(Integer id) {
            UserInfo userinfo=(UserInfo)this.getHibernateTemplate().get(UserInfo.class,id);
            return userinfo;
           }

           public void save(UserInfo userinfo) {
               this.getHibernateTemplate().save(userinfo);
           }

          }

           

          8.Web.xml的配置



             
            Dispatcher
            org.springframework.web.servlet.DispatcherServlet
            
             contextConfigLocation
             /WEB-INF/Config.xml /WEB-INF/Hibernate-Context.xml
            

           

           
            Dispatcher
            *.do
           

           
            index.jsp
           

           
            404
            /error.jsp
           


           

          9.Config.xml的定義


           "
           
             class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            
             org.springframework.web.servlet.view.JstlView
            

            
             
            

            
             .jsp
            

           

           
             class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            
             
              UserInfoAddAction
             

            

           

           
             class="com.kacakong.spring.action.UserInfoAddAction">
            
             com.kacakong.spring.vo.UserInfoVO
            

            
             fail
            

            
             UserInfo
            

           


          10.Hibernate-Context.xml的定義


          "
           
            
             oracle.jdbc.driver.OracleDriver
            

            
             jdbc:oracle:thin:@192.168.100.8:1521:EASTPLUS
            

            
             spring
            

            
             spring
            

           


              com/kacakong/hibernate/pojos/UserInfo.hbm.xml

            

            
             
              net.sf.hibernate.dialect.SQLServerDialect 
              true
             

             
              PROPAGATION_REQUIRED
              PROPAGATION_REQUIRED,readOnly
             

          posted on 2006-02-23 19:27 都市淘沙者 閱讀(7032) 評(píng)論(3)  編輯  收藏 所屬分類: Spring+Struts+Hibernate

          評(píng)論

          # re: 使用Spring 的MVC+Hibernate的數(shù)據(jù)庫操作例子(轉(zhuǎn)) 2013-01-23 10:30 t

          ewr  回復(fù)  更多評(píng)論   

          # re: 使用Spring 的MVC+Hibernate的數(shù)據(jù)庫操作例子(轉(zhuǎn))[未登錄] 2014-08-21 00:46 aa

          vvv  回復(fù)  更多評(píng)論   

          # re: 使用Spring 的MVC+Hibernate的數(shù)據(jù)庫操作例子(轉(zhuǎn)) 2014-12-05 13:52 企鵝王

          企鵝  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 娄烦县| 贵德县| 鄂伦春自治旗| 喀喇| 华蓥市| 顺昌县| 杭锦后旗| 平遥县| 松滋市| 西藏| 盱眙县| 城市| 兴国县| 龙门县| 阿克陶县| 胶南市| 宜黄县| 铜鼓县| 张家界市| 武山县| 玉树县| 溧阳市| 闽侯县| 瓦房店市| 农安县| 保亭| 清远市| 望城县| 沂南县| 珲春市| 旺苍县| 龙海市| 那曲县| 崇仁县| 紫阳县| 长寿区| 岳普湖县| 岳阳市| 新竹县| 泗洪县| 白朗县|