現(xiàn)代軟件開發(fā)技術(shù)實驗指導書-3_第1頁
現(xiàn)代軟件開發(fā)技術(shù)實驗指導書-3_第2頁
現(xiàn)代軟件開發(fā)技術(shù)實驗指導書-3_第3頁
現(xiàn)代軟件開發(fā)技術(shù)實驗指導書-3_第4頁
現(xiàn)代軟件開發(fā)技術(shù)實驗指導書-3_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

實驗三Hibernate框架應(yīng)用一、實驗目的1、掌握采用Hibernate構(gòu)建JavaWeb應(yīng)用中持久化層的概念和思想2、掌握HibernateAPI的基本使用方法3、利用Hibernate實現(xiàn)用戶信息的數(shù)據(jù)庫基本操作(增、刪、改、查)二、預備知識1.JDK的安裝設(shè)置:JDK/JRE/JVM2.服務(wù)器Tomcat的使用3.集成開發(fā)環(huán)境Eclipse的使用4.HibernateAPI的基本使用方法5.數(shù)據(jù)庫(MySQL/JDBC/JDBCAPI)技術(shù)基礎(chǔ)知識6.XML技術(shù)基礎(chǔ)知識(web.xml/hibernate.cfg.xml/xxx.hbm.xml)7.簡單的錯誤調(diào)試三、實驗內(nèi)容

(1)按照以下步驟檢查所使用的計算機系統(tǒng):1.確認系統(tǒng)的環(huán)境變量,是否已安裝JDK;2.確認目錄C:\ProgramFiles\ApacheSoftwareFoundation,是否已安裝Tomcat服務(wù)器;3.確認目錄D:\eclipse3.3,是否已綠色安裝Eclipse集成開發(fā)環(huán)境;4.確認Eclipse插件:HibernateSynchronizer是否已復制到Eclispe的plugins目錄中。(2)創(chuàng)建數(shù)據(jù)表:1.安裝MySQL2.在WindowsXP上啟動:·安裝MySQL服務(wù):C:\ProgramFiles\MySQL\MySQLServer5.0\bin3.連接MySQLC:\mysql\bin>mysql–uroot-p會提示輸入密碼!此時輸入安裝MySQL時設(shè)置的密碼即可?;剀嚭?,就會出現(xiàn)“mysql”提示符,表示連接成功。4.新建數(shù)據(jù)庫mysql>createdatabasemydb;5.查看數(shù)據(jù)庫mysql>showdatabases;6.打開數(shù)據(jù)庫mysql>usemydbDatabasechanged7.創(chuàng)建數(shù)據(jù)表createtablet_user(idintprimarykey, usernamevarchar(20), passwordvarchar(20), ageint);8.退出實驗截圖mysql>quit;9.關(guān)閉MySQL服務(wù)C:\mysql\bin>netstopmysql(3)Eclipse集成開發(fā)環(huán)境的基本使用方法(詳細步驟請參照實驗一的實驗指導書)1.創(chuàng)建一個新的DynamicWebProject:Hibernate_Proj2.以運行庫為目標3.運行庫配置4.選擇是否想要轉(zhuǎn)換到JavaEEPerspective。5.添加服務(wù)器

(4)向已建立的工程添加Hibernate應(yīng)用1.設(shè)置Hibernate配置文件(hibernate.cfg.xml):選中Hibernate_Proj,然后右鍵選擇Properties>new>others>Hibernate>HibernateConfigurationFile,創(chuàng)建hibernate.cfg.xml,具體內(nèi)容如下(可參照教材第154頁):Databasedialect:MySQLDriverclass:com.mysql.jdbc.DriverConnectionURL:jdbc:mysql://localhost:3306/mydbUsername:root2.生成持久化對象(POJO):·新建一個包:選中Hibernate_Proj,然后右鍵選擇Properties>new>package,在包名中輸入user,然后單擊“完成”按鈕;·生成持久化對象(POJO):引入類User.java;User.javapackageuser;publicclassUser{ privateintid; privateStringusername; privateStringpassword; privateintage; publicUser(){ } publicintgetId(){ returnid; } publicStringgetPassword(){ returnpassword; } publicStringgetUsername(){ returnusername; } publicintgetAge(){ returnage; } publicvoidsetId(intid){ this.id=id; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicvoidsetUsername(Stringusername){ this.username=username; } publicvoidsetAge(intage){ this.age=age; }}3.生成映射文件(User.hbm.xml):在新建的包user上右鍵選擇new>others>Hibernate>HibernateMappingFile,創(chuàng)建User.hbm.xml,具體內(nèi)容請參照教材第156頁;User.hbm.xml<?xmlversion="1.0"?><!DOCTYPEhibernate-mappingPUBLIC "-//Hibernate/HibernateMappingDTD//EN" "/hibernate-mapping-3.0.dtd"><hibernate-mappingpackage="user"> <class name="user.User" table="t_user" > <metaattribute="sync-DAO">false</meta> <id name="Id" type="int" column="id" > <generatorclass="increment"/> </id> <property name="username" column="username" type="string" not-null="false" length="20" /> <property name="password" column="password" type="string" not-null="false" length="20" /> <property name="age" column="age" type="integer" not-null="false" length="11" /> </class> </hibernate-mapping>4.修改Hibernate配置文件(hibernate.cfg.xml):把映射文件(User.hbm.xml)添加到配置文件中;5.在包user下面添加類userServlet.java,該類通過HibernateAPI對User對象進行持久化的操作;userServlet.javapackageuser;importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;importjava.util.*;importorg.hibernate.*;importorg.hibernate.cfg.Configuration;publicclassuserServletextendsHttpServlet{ privatestaticfinallongserialVersionUID=1L; privatestaticfinalStringCONTENT_TYPE="text/html;charset=GB2312"; privatestaticfinalSessionFactorysessionFactory; static{ try{ //CreatetheSessionFactory Configurationconfig=newConfiguration(); sessionFactory=config.configure().buildSessionFactory(); }catch(RuntimeExceptionex){ ex.printStackTrace(); throwex; } } //Initializeglobalvariables publicvoidinit()throwsServletException{ } //ProcesstheHTTPGetrequest publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringusername=request.getParameter("username"); if(username==null){ username=""; } Stringpassword=request.getParameter("password"); if(password==null){ password=""; } Stringage1=request.getParameter("age"); if(age1==null){ age1="0"; } Stringaction=request.getParameter("action"); System.out.println("action="+action); if(action==null){ action=""; } System.out.println(action); intage=Integer.parseInt(age1); response.setContentType(CONTENT_TYPE); PrintWriterout=response.getWriter(); //生成User實例 Useruser=newUser(); user.setUsername(username); user.setPassword(password); user.setAge(age); if(action.equals("save")){ //生成Session實例 Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); //保存持久類對象 session.save(user); //提交到數(shù)據(jù)庫 mit(); //跳轉(zhuǎn)到回復頁面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{ session.close(); } } if(action.equals("update")){ //生成Session實例 Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); Queryquery=session.createQuery("fromUseruwhereu.username=?"); query.setString(0,username); Listlist=query.list(); for(inti=0;i<list.size();i++){ Useru=(User)list.get(i); Useru1=(User)session.get(User.class,newInteger(u.getId())); u1.setPassword(password); u1.setAge(age); session.update(u1); } //提交到數(shù)據(jù)庫 mit(); //跳轉(zhuǎn)到回復頁面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{session.close(); } } if(action.equals("delete")){ //生成Session實例 Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); Queryquery=session.createQuery("fromUseruwhereu.username=?"); query.setString(0,username); Listlist=query.list(); for(inti=0;i<list.size();i++){ Useru=(User)list.get(i); Useru1=(User)session.get(User.class,newInteger(u.getId())); session.delete(u1); } //提交到數(shù)據(jù)庫 mit(); //跳轉(zhuǎn)到回復頁面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{ session.close(); } } } //ProcesstheHTTPPostrequest publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doGet(request,response); } //Cleanupresources publicvoiddestroy(){ }6.構(gòu)建視圖組件:user.jsp和reply.jsp:user.jsp:用戶信息輸入畫面;User.jsp<%@pagelanguage="java"contentType="text/html;charset=GB18030"pageEncoding="GB18030"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GB18030"><title>user</title></head><bodybgcolor="#ffffff"><formaction="userservlet"method="post">用戶名:<inputtype="text"name="username"/><br><br>密碼:<inputtype="password"name="password"/><br><br>年齡:<inputtype="text"name="age"/><br><br><inputtype="Submit"name="action"value="save"/><inputtype="Submit"name="action"value="update"/><inputtype="Submit"name="a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論