版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
現(xiàn)代軟件開(kāi)發(fā)技術(shù)實(shí)驗(yàn)報(bào)告(10/11學(xué)年上學(xué)期)指導(dǎo)老師:班級(jí):學(xué)號(hào):姓名:實(shí)驗(yàn)一簡(jiǎn)單JavaWeb編程一、實(shí)驗(yàn)?zāi)康?、掌握MVC設(shè)計(jì)模式的概念和思想2、掌握J(rèn)avaWeb常用組件,并掌握其編輯、編譯、運(yùn)行方法3、能夠開(kāi)發(fā)簡(jiǎn)單的基于MVC模式的應(yīng)用程序二、預(yù)備知識(shí)1.JDK的安裝設(shè)置:JDK/JRE/JVM2.服務(wù)器Tomcat的使用3.Servlet技術(shù)基礎(chǔ)知識(shí):Servlet生命周期、JavaServletAPI、Servlet開(kāi)發(fā)配置實(shí)例(web.xml)4.JSP技術(shù)基礎(chǔ)知識(shí)5.JavaBean技術(shù)基礎(chǔ)知識(shí)6.數(shù)據(jù)庫(kù)(JDBC/JDBCAPI)技術(shù)基礎(chǔ)知識(shí)7.XML技術(shù)基礎(chǔ)知識(shí)8.簡(jiǎn)單的錯(cuò)誤調(diào)試三、實(shí)驗(yàn)內(nèi)容
(1)檢查所用的計(jì)算機(jī)系統(tǒng),可以按以下步驟進(jìn)行操作:1.確認(rèn)系統(tǒng)的環(huán)境變量,是否已安裝JDK2.確認(rèn)目錄C:\ProgramFiles\ApacheSoftwareFoundation,是否已安裝Tomcat服務(wù)器3.確認(rèn)目錄D:\eclipse3.3,是否已綠色安裝Eclipse集成開(kāi)發(fā)環(huán)境以及Eclipse插件
(2)Eclipse集成開(kāi)發(fā)環(huán)境的基本使用方法1.創(chuàng)建一個(gè)新的Web項(xiàng)目從EclipseIDE,選擇File>New>Project查看項(xiàng)目向?qū)АT赪izards框,輸入Web,從列表中選擇DynamicWebProject。2.以運(yùn)行庫(kù)為目標(biāo)在TargetRuntime下,可以看到<None>,由于尚未為ApacheTomcat創(chuàng)建運(yùn)行庫(kù),所以需要單擊New打開(kāi)NewTargetRuntimeWizard。從Apache文件夾中選擇ApacheTomcatV6.0。單擊Browse來(lái)定位用于ApacheTomcat配置的基本文件夾(C:\programfiles\ApacheSoftwareFoundation\Tomcat6.0)。保留IBM?JavaRuntimeEnvironment(JRE)版本作為工作臺(tái)的默認(rèn)JRE。輸入有效目錄之后,單擊Finish創(chuàng)建運(yùn)行庫(kù)配置。3.運(yùn)行庫(kù)配置可以通過(guò)選擇Window>Preferences更改自己的運(yùn)行庫(kù)配置。在filter框,鍵入Runtime,列表就會(huì)在Server類別下顯示已安裝的運(yùn)行庫(kù)配置設(shè)置。選擇您的ApacheTomcat運(yùn)行庫(kù),然后單擊Edit來(lái)更改名稱、目錄位置或JRE版本。4.選擇是否想要轉(zhuǎn)換到JavaEEPerspective。應(yīng)該選擇是,因?yàn)檫@個(gè)透視圖包含了一些很有用的視圖,比如Servers視圖,可以幫助啟動(dòng)和停止Tomcat。通過(guò)選擇Window>ShowView可以打開(kāi)Servers視圖。5.添加服務(wù)器Servers視圖目前沒(méi)有包含任何內(nèi)容。此視圖針對(duì)的是應(yīng)用程序和Web服務(wù)器;此視圖可以控制它們并監(jiān)視其狀態(tài)。要從IDE直接控制Tomcat,可通過(guò)從上下文敏感菜單選擇New>Server來(lái)向Tomcat添加引用。單擊Next。系統(tǒng)提問(wèn)您是否想要向服務(wù)器添加項(xiàng)目。選擇在之前的步驟中創(chuàng)建的那個(gè)項(xiàng)目,然后單擊Add。單擊Finish關(guān)閉向?qū)А,F(xiàn)在,Servers視圖包含了TomcatV6.0Server,且其下還包含項(xiàng)目。
(3)向工程
已建立的工程添加基于MVC模式的JavaWeb應(yīng)用1.數(shù)據(jù)庫(kù)設(shè)計(jì):構(gòu)建數(shù)據(jù)庫(kù)表T_UserInfo;2.構(gòu)建視圖組件:登錄頁(yè)面login.jsp、主頁(yè)面main.jsp及注冊(cè)頁(yè)面register.jsp;3.構(gòu)建控制層組件:一個(gè)Servlet,取名LoginServlet.java;4.構(gòu)建業(yè)務(wù)邏輯層組件(Model組件):一個(gè)JavaBean,取名為L(zhǎng)oginHandler.java;5.構(gòu)建數(shù)據(jù)訪問(wèn)層組件:一個(gè)DAO,取名為DBPool.java;6.部署該程序到Web服務(wù)器Tomcat中,然后運(yùn)行。四、實(shí)驗(yàn)程序代碼1、login.jsp<%@pagelanguage="java"contentType="text/html;charset=gb2312"%><html><head><title>登錄頁(yè)面</title></head><body><formmethod="post"action="loginservlet">用戶名:<inputtype="text"name="username"size="15"><br><br>密  碼:<inputtype="password"name="password"size="15"><br><br><inputtype="submit"name="submit"value="登錄"><br></form></body></html>2、main.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>主頁(yè)面</title></head><body><h1><%=session.getAttribute("username")%>,你成功登錄,現(xiàn)已進(jìn)入主頁(yè)面!</h1></body></html>3、register.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>注冊(cè)頁(yè)面</title></head><body><h1><%=session.getAttribute("username")%>,你未能成功登錄。<br>現(xiàn)進(jìn)入注冊(cè)頁(yè)面,請(qǐng)注冊(cè)您的信息!</h1></body></html>4、LoginServlet.javapackagelogin;//*控制組件*/importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;importjava.util.*;publicclassLoginServletextendsHttpServlet{privatestaticfinalStringCONTENT_TYPE="text/html;charset=GB2312";//初始化Servletpublicvoidinit()throwsServletException{}//處理HTTPPOST請(qǐng)求publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//從請(qǐng)求中取出用戶名和密碼的值Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");//生成一個(gè)ArrayList對(duì)象,并把用戶名和密碼的值存入該對(duì)象中ArrayListarr=newArrayList();arr.add(username);arr.add(password);//生成一個(gè)Session對(duì)象HttpSessionsession=request.getSession(true);session.removeAttribute("username");session.setAttribute("username",username);//調(diào)用模型組件loginHandler,檢查該用戶是否已注冊(cè)LoginHandlerlogin=newLoginHandler();booleanmark=login.checkLogin(arr);//如果已注冊(cè),進(jìn)入主頁(yè)面if(mark)response.sendRedirect("main.jsp");//如果未注冊(cè),進(jìn)入注冊(cè)頁(yè)面elseresponse.sendRedirect("register.jsp");}//處理HTTPGET請(qǐng)求publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doPost(request,response);}//銷毀Servletpublicvoiddestroy(){}}5、web.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN""/dtd/web-app_2_3.dtd"><web-app><servlet><servlet-name>LoginServlet</servlet-name><display-name>ThisisthedisplaynameofmyJ2EEcomponent</display-name><description>ThisisthedescriptionofmyJ2EEcomponent</description><servlet-class>login.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/loginservlet</url-pattern></servlet-mapping></web-app>6、LoginHandler.javapackagelogin;/*模型組件*/importjava.sql.*;importjava.util.*;classLoginHandler{publicLoginHandler(){}Connectionconn;PreparedStatementps;ResultSetrs;//檢查是否已注冊(cè)publicbooleancheckLogin(ArrayListarr){//從數(shù)據(jù)訪問(wèn)組件DBPool中取得連接conn=DBPool.getConnection();Stringname=(String)arr.get(0);Stringpassword=(String)arr.get(1);try{Stringsql="select*fromT_UserInfowhereusername=?andpassword=?";ps=conn.prepareStatement(sql);ps.setString(1,name);ps.setString(2,password);rs=ps.executeQuery();if(rs.next()){DBPool.dbClose(conn,ps,rs);//釋放資源returntrue;}else{DBPool.dbClose(conn,ps,rs);returnfalse;}}catch(SQLExceptione){returnfalse;}}}7、DBPool.javapackagelogin;/*數(shù)據(jù)訪問(wèn)組件*/importjava.io.*;importjava.util.*;importjava.sql.*;publicclassDBPool{privatestaticDBPoolinstance=null;//取得連接publicstaticsynchronizedConnectiongetConnection(){if(instance==null){instance=newDBPool();}returninstance._getConnection();}privateDBPool(){super();}privateConnection_getConnection(){try{StringsDBDriver=null;StringsConnection=null;StringsUser=null;StringsPassword=null;Propertiesp=newProperties();InputStreamis=getClass().getResourceAsStream("/perties");p.load(is);sDBDriver=p.getProperty("DBDriver",sDBDriver);sConnection=p.getProperty("Connection",sConnection);sUser=p.getProperty("User","");sPassword=p.getProperty("Password","");Propertiespr=newProperties();pr.put("user",sUser);pr.put("password",sPassword);pr.put("characterEncoding","GB2312");pr.put("useUnicode","TRUE");Class.forName(sDBDriver).newInstance();returnDriverManager.getConnection(sConnection,pr);}catch(Exceptionse){System.out.println(se);returnnull;}}//釋放資源publicstaticvoiddbClose(Connectionconn,PreparedStatementps,ResultSetrs)throwsSQLException{rs.close();ps.close();conn.close();}}8、pertiesDBDriver=sun.jdbc.odbc.JdbcOdbcDriverConnection=jdbc:odbc:loginUser=Password=五、實(shí)驗(yàn)結(jié)果創(chuàng)建好的項(xiàng)目運(yùn)行項(xiàng)目添加服務(wù)器六、實(shí)驗(yàn)總結(jié)1、通過(guò)本次實(shí)驗(yàn)掌握了用eclipse構(gòu)建一個(gè)基于MVC模式的javaweb的應(yīng)用技術(shù),明白了MVC的模式以及概念。2、在實(shí)驗(yàn)中用jsp、Servlet和JavaBean構(gòu)建一個(gè)簡(jiǎn)單的登錄系統(tǒng),當(dāng)用戶登錄時(shí)檢測(cè)該用戶是否已注冊(cè),如果以注冊(cè)即進(jìn)入主頁(yè)面否則進(jìn)入注冊(cè)頁(yè)面進(jìn)行注冊(cè)。3、實(shí)驗(yàn)中注意代碼中的錯(cuò)誤;4、雖然在實(shí)驗(yàn)中遇到了一些eclipse的操作等問(wèn)題,但通過(guò)和同學(xué)成功解決了問(wèn)題,實(shí)驗(yàn)成功。5、實(shí)驗(yàn)中要學(xué)會(huì)總結(jié)錯(cuò)誤并及時(shí)改正錯(cuò)誤。實(shí)驗(yàn)二Struts框架應(yīng)用一、實(shí)驗(yàn)?zāi)康?、掌握MVC設(shè)計(jì)模式的概念和思想2、掌握Struts常用類和組件的使用方法3、能夠開(kāi)發(fā)一個(gè)簡(jiǎn)單的基于Struts架構(gòu)的學(xué)生信息登記系統(tǒng)二、預(yù)備知識(shí)1.JDK的安裝設(shè)置:JDK/JRE/JVM2.服務(wù)器Tomcat的使用3.集成開(kāi)發(fā)環(huán)境Eclipse的使用4.Struts常用類和組件的使用方法5.數(shù)據(jù)庫(kù)(JDBC/JDBCAPI)技術(shù)基礎(chǔ)知識(shí)6.XML技術(shù)基礎(chǔ)知識(shí)(web.xml/struts-config.xml)7.簡(jiǎn)單的錯(cuò)誤調(diào)試三、實(shí)驗(yàn)內(nèi)容
(1)檢查所使用的計(jì)算機(jī)系統(tǒng),可以按以下步驟進(jìn)行操作:1.確認(rèn)系統(tǒng)的環(huán)境變量,是否已安裝JDK2.確認(rèn)目錄C:\ProgramFiles\ApacheSoftwareFoundation,是否已安裝Tomcat服務(wù)器3.確認(rèn)目錄D:\eclipse3.3,是否已綠色安裝Eclipse集成開(kāi)發(fā)環(huán)境以及Eclipse插件
(2)Eclipse集成開(kāi)發(fā)環(huán)境的基本使用方法1.創(chuàng)建一個(gè)新的Web項(xiàng)目2.以運(yùn)行庫(kù)為目標(biāo)3.運(yùn)行庫(kù)配置4.選擇是否想要轉(zhuǎn)換到JavaEEPerspective。5.添加服務(wù)器
(3)向已建立的工程添加基于Struts架構(gòu)的學(xué)生信息登記系統(tǒng)由于已建立的工程沒(méi)有引入Struts相關(guān)包,因此需要首先引入Struts相關(guān)包,操作如下:右鍵選定工程,然后Properties>JavaBuildPath>Libraries>AddExternalJARs。然后,按照以下步驟構(gòu)建基于Struts架構(gòu)的學(xué)生信息登記系統(tǒng):1.數(shù)據(jù)庫(kù)設(shè)計(jì):構(gòu)建數(shù)據(jù)庫(kù)表T_student;在管理工具>數(shù)據(jù)源(ODBC)中建立相應(yīng)的數(shù)據(jù)源;2.構(gòu)建視圖組件:·登錄頁(yè)面register.jsp,用來(lái)輸入學(xué)生的信息,如學(xué)號(hào)、姓名、性別、年齡等。該頁(yè)面要求使用Struts的HTML標(biāo)記,并包含驗(yàn)證錯(cuò)誤標(biāo)志<html:errors>;·構(gòu)建ActionForm組件,主要是StudentActionForm。它包含了對(duì)學(xué)號(hào)studNo、姓名name及年齡name的驗(yàn)證規(guī)則;3.構(gòu)建控制層組件:即Action組件,這里是StudentAction。它先從StudentActionForm中讀取頁(yè)面輸入的數(shù)據(jù),并把這些數(shù)據(jù)裝入一個(gè)ArrayList對(duì)象中,以便于傳輸這些數(shù)據(jù),然后調(diào)用StudentDAO的saveData()方法把這些數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中;如果數(shù)據(jù)成功地保存到數(shù)據(jù)庫(kù)中,將轉(zhuǎn)發(fā)到success.jsp,否則轉(zhuǎn)發(fā)到fail.jsp;4.構(gòu)建配置文件:配置文件包括兩個(gè)web.xml和struts-config.xml。5.構(gòu)建資源包:資源包包括ApplicationResources_perties和ApplicationResources_zh_CN.properties,以定義驗(yàn)證錯(cuò)誤提示。ApplicationResources_perties中的中文需要用native2ascii工具轉(zhuǎn)化成Unicode字碼;6.構(gòu)建模型組件/數(shù)據(jù)訪問(wèn)組件:包括StudentDAO、DBPool及屬性文件perties。StudentDAO先從DBPool中取得數(shù)據(jù)庫(kù)連接,然后把數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。DBPool是一個(gè)數(shù)據(jù)庫(kù)連接池。perties是一個(gè)數(shù)據(jù)庫(kù)屬性文件,包含了連接數(shù)據(jù)庫(kù)所需的參數(shù)。7.部署該程序到Web服務(wù)器Tomcat中,啟動(dòng)Tomcat,在IE瀏覽器地址欄中輸入http://localhost:8080/studentInfo/register.jsp,往該頁(yè)面輸入相應(yīng)得數(shù)據(jù),如果寫入的數(shù)據(jù)不符合要求,就會(huì)顯示驗(yàn)證錯(cuò)誤提示,只有數(shù)據(jù)的數(shù)據(jù)項(xiàng)符合要求,單擊“保存”按鈕后,數(shù)據(jù)才保存到數(shù)據(jù)庫(kù)中。四、實(shí)驗(yàn)程序1、login.jsp<%@pagelanguage="java"pageEncoding="GB2312"%><%@tagliburi="/tags-bean"prefix="bean"%><%@tagliburi="/tags-html"prefix="html"%><%@tagliburi="/tags-logic"prefix="logic"%><%@tagliburi="/tags-tiles"prefix="tiles"%><%@tagliburi="/tags-nested"prefix="nested"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html:html><head><title>login.jsp</title></head><body><html:formaction="/login"method="post"><tableborder="0"><tr><td>用戶名:</td><td><html:textproperty="username"/></td></tr><tr><td>密碼:</td><td><html:passwordproperty="password"/></td></tr><tr><tdcolspan="2"align="center"><html:submitvalue="登錄"/></td></tr></table></html:form></body></html:html>2、register.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>注冊(cè)頁(yè)面</title></head><body><h1><%=session.getAttribute("username")%>,你未能成功登錄。<br>現(xiàn)進(jìn)入注冊(cè)頁(yè)面,請(qǐng)注冊(cè)你的信息!</h1></body></html>3、main.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>主頁(yè)面</title></head><body><h1><%=session.getAttribute("username")%>,你成功登錄,現(xiàn)已進(jìn)入主頁(yè)面!</h1></body></html>4、LoginForm.javapackagestruts;importjavax.servlet.http.HttpServletRequest;importorg.apache.struts.action.ActionErrors;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionMapping;publicclassLoginFormextendsActionForm{ privateStringpassword; privateStringusername; publicActionErrorsvalidate(ActionMappingmapping, HttpServletRequestrequest){ //TODOAuto-generatedmethodstub returnnull; } publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){ //TODOAuto-generatedmethodstub } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; }}5、LoginAction.javapackagestruts;importorg.apache.struts.action.*;importjavax.servlet.http.*;importjava.util.*;publicclassLoginActionextendsAction{publicActionForwardexecute(ActionMappingactionMapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){LoginFormloginForm=(LoginForm)form;//從formbean中取出表單數(shù)據(jù)Stringusername=loginForm.getUsername();Stringpassword=loginForm.getPassword();//生成一個(gè)Session對(duì)象HttpSessionsession=request.getSession(true);session.removeAttribute("username");session.setAttribute("username",username);//生成一個(gè)ArrayList對(duì)象,并把用戶名和密碼的值存入該對(duì)象中ArrayListarr=newArrayList();arr.add(username);arr.add(password);Stringprompt;//調(diào)用模型組件LoginHandler,檢查該用戶是否已注冊(cè)LoginHandlerlogin=newLoginHandler();booleanmark=login.checkLogin(arr);if(mark){ prompt="Success";}else{ prompt="Fail";}returnactionMapping.findForward(prompt);}}6、LoginHandler.javapackagestruts;/*模型組件*/importjava.sql.*;importjava.util.*;classLoginHandler{publicLoginHandler(){}Connectionconn;PreparedStatementps;ResultSetrs;//檢查是否已注冊(cè)publicbooleancheckLogin(ArrayListarr){//從數(shù)據(jù)訪問(wèn)組件DBPool中取得連接conn=DBPool.getConnection();Stringname=(String)arr.get(0);Stringpassword=(String)arr.get(1);try{Stringsql="select*fromT_UserInfowhereusername=?andpassword=?";ps=conn.prepareStatement(sql);ps.setString(1,name);ps.setString(2,password);rs=ps.executeQuery();if(rs.next()){DBPool.dbClose(conn,ps,rs);//釋放資源returntrue;}else{DBPool.dbClose(conn,ps,rs);returnfalse;}}catch(SQLExceptione){ returnfalse;}}}7、DBPool.javapackagestruts;/*數(shù)據(jù)訪問(wèn)組件*/importjava.io.*;importjava.util.*;importjava.sql.*;publicclassDBPool{privatestaticDBPoolinstance=null;//取得連接publicstaticsynchronizedConnectiongetConnection(){if(instance==null){instance=newDBPool();}returninstance._getConnection();}privateDBPool(){super();}privateConnection_getConnection(){try{StringsDBDriver=null;StringsConnection=null;StringsUser=null;StringsPassword=null;Propertiesp=newProperties();InputStreamis=getClass().getResourceAsStream("/perties");p.load(is);sDBDriver=p.getProperty("DBDriver",sDBDriver);sConnection=p.getProperty("Connection",sConnection);sUser=p.getProperty("User","");sPassword=p.getProperty("Password","");Propertiespr=newProperties();pr.put("user",sUser);pr.put("password",sPassword);pr.put("characterEncoding","GB2312");pr.put("useUnicode","TRUE");Class.forName(sDBDriver).newInstance();returnDriverManager.getConnection(sConnection,pr);}catch(Exceptionse){System.out.println(se);returnnull;}}//釋放資源publicstaticvoiddbClose(Connectionconn,PreparedStatementps,ResultSetrs)throwsSQLException{rs.close();ps.close();conn.close();}}8、pertiesDBDriver=sun.jdbc.odbc.JdbcOdbcDriverConnection=jdbc:odbc:loginUser=Password=9、struts-config.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN""/struts/dtds/struts-config_1_1.dtd"><struts-config><data-sources/><form-beans><form-beanname="loginForm"type="struts.LoginForm"/></form-beans><global-exceptions/><global-forwards/><action-mappings><actionattribute="loginForm"input="/login.jsp"name="loginForm"path="/login"scope="request"type="struts.LoginAction"validate="false"><forwardname="Success"path="/main.jsp"/><forwardname="Fail"path="/register.jsp"/></action></action-mappings><message-resourcesparameter="struts.ApplicationResources"/></struts-config>五、實(shí)驗(yàn)結(jié)果六、實(shí)驗(yàn)總結(jié)1.通過(guò)實(shí)驗(yàn)進(jìn)一步掌握MVC設(shè)計(jì)模式的概念和思想;2.通過(guò)本次實(shí)驗(yàn)掌握Struts常用類和組件的使用方法;3.實(shí)驗(yàn)要注意Struts的配置文struts-config.xml的主要元素;4.通過(guò)本次實(shí)驗(yàn)掌握了用Eclipse構(gòu)建一個(gè)基于Struts的登錄系統(tǒng);5.通過(guò)實(shí)驗(yàn)更加的了解eclipse的操作以及基于Struts的MVC登錄系統(tǒng)的原理和思想;6.在實(shí)驗(yàn)一的基礎(chǔ)上,通過(guò)同學(xué)交流與網(wǎng)上資料,本實(shí)驗(yàn)成功完成。實(shí)驗(yàn)三Hibernate框架應(yīng)用一、實(shí)驗(yàn)?zāi)康?、掌握采用Hibernate構(gòu)建JavaWeb應(yīng)用中持久化層的概念和思想2、掌握HibernateAPI的基本使用方法3、利用Hibernate實(shí)現(xiàn)用戶信息的數(shù)據(jù)庫(kù)基本操作(增、刪、改、查)二、預(yù)備知識(shí)1.JDK的安裝設(shè)置:JDK/JRE/JVM2.服務(wù)器Tomcat的使用3.集成開(kāi)發(fā)環(huán)境Eclipse的使用4.HibernateAPI的基本使用方法5.數(shù)據(jù)庫(kù)(MySQL/JDBC/JDBCAPI)技術(shù)基礎(chǔ)知識(shí)6.XML技術(shù)基礎(chǔ)知識(shí)(web.xml/hibernate.cfg.xml/xxx.hbm.xml)7.簡(jiǎn)單的錯(cuò)誤調(diào)試三、實(shí)驗(yàn)內(nèi)容
(1)按照以下步驟檢查所使用的計(jì)算機(jī)系統(tǒng):1.確認(rèn)系統(tǒng)的環(huán)境變量,是否已安裝JDK;2.確認(rèn)目錄C:\ProgramFiles\ApacheSoftwareFoundation,是否已安裝Tomcat服務(wù)器;3.確認(rèn)目錄D:\eclipse3.3,是否已綠色安裝Eclipse集成開(kāi)發(fā)環(huán)境;4.確認(rèn)Eclipse插件:HibernateSynchronizer是否已復(fù)制到Eclispe的plugins目錄中。(2)創(chuàng)建數(shù)據(jù)表:1.安裝MySQL2.在WindowsXP上啟動(dòng):·安裝MySQL服務(wù):C:\mysql\bin>mysqld–install·啟動(dòng)MySQL服務(wù):C:\mysql\bin>netstartmysql3.連接MySQLC:\mysql\bin>mysql–hlocalhost–uroot-p回車后,就會(huì)出現(xiàn)“mysql”提示符,表示連接成功。4.新建數(shù)據(jù)庫(kù)mysql>createdatabasemydb;5.查看數(shù)據(jù)庫(kù)mysql>showdatabases;6.打開(kāi)數(shù)據(jù)庫(kù)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集成開(kāi)發(fā)環(huán)境的基本使用方法(詳細(xì)步驟請(qǐng)參照實(shí)驗(yàn)一的實(shí)驗(yàn)指導(dǎo)書)1.創(chuàng)建一個(gè)新的DynamicWebProject:Hibernate_Proj2.以運(yùn)行庫(kù)為目標(biāo)3.運(yùn)行庫(kù)配置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頁(yè)):Databasedialect:MySQLDriverclass:com.mysql.jdbc.DriverConnectionURL:jdbc:mysql://localhost:3306/mydbUsername:root2.生成持久化對(duì)象(POJO):·新建一個(gè)包:選中Hibernate_Proj,然后右鍵選擇Properties>new>package,在包名中輸入user,然后單擊“完成”按鈕;·生成持久化對(duì)象(POJO):引入類User.java;3.生成映射文件(User.hbm.xml):在新建的包user上右鍵選擇new>others>Hibernate>HibernateMappingFile,創(chuàng)建User.hbm.xml,具體內(nèi)容請(qǐng)參照教材第156頁(yè);4.修改Hibernate配置文件(hibernate.cfg.xml):把映射文件(User.hbm.xml)添加到配置文件中;5.在包user下面添加類userServlet.java,該類通過(guò)HibernateAPI對(duì)User對(duì)象進(jìn)行持久化的操作;6.構(gòu)建視圖組件:user.jsp和reply.jsp:user.jsp:用戶信息輸入畫面;reply.jsp:持久化成功畫面;7.構(gòu)建配置文件:web.xml:配置userServlet信息;8.引入Hibernate相關(guān)jar文件:在WebContent\WEB-INF\lib目錄下放入相關(guān)jar包;9.部署該程序到Web服務(wù)器Tomcat中,啟動(dòng)Tomcat,在IE瀏覽器地址欄中輸入http://localhost:8080/Hibernate_Proj/user.jsp,往該頁(yè)面輸入相應(yīng)得數(shù)據(jù),單擊“save”按鈕后,數(shù)據(jù)會(huì)被持久化到數(shù)據(jù)庫(kù)中;單擊“update”按鈕后,數(shù)據(jù)會(huì)被更新到數(shù)據(jù)庫(kù)中;單擊“delete”按鈕后,數(shù)據(jù)會(huì)從數(shù)據(jù)庫(kù)中刪除。四、實(shí)驗(yàn)程序1、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="action"value="delete"/><br><br></form></body></html>2、reply.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>reply</title></head><bodybgcolor="#ffffff"><h1>數(shù)據(jù)已成功存入數(shù)據(jù)庫(kù)!</h1></body></html>3、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; }}4、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實(shí)例 Useruser=newUser(); user.setUsername(username); user.setPassword(password); user.setAge(age); if(action.equals("save")){ //生成Session實(shí)例 Sessionsession=sessionFactory.openSession(); Transactiontx=null; try{ tx=session.beginTransaction(); //保存持久類對(duì)象 session.save(user); //提交到數(shù)據(jù)庫(kù) mit(); //跳轉(zhuǎn)到回復(fù)頁(yè)面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{ session.close(); } } if(action.equals("update")){ //生成Session實(shí)例 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ù)庫(kù) mit(); //跳轉(zhuǎn)到回復(fù)頁(yè)面 response.sendRedirect("reply.jsp"); }catch(RuntimeExceptione){ if(tx!=null){ tx.rollback(); }throwe; }finally{ session.close(); } } if(action.equals("delete")){ //生成Session實(shí)例 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ù)庫(kù) mit();
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 南京工業(yè)大學(xué)浦江學(xué)院《應(yīng)用統(tǒng)計(jì)學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《社會(huì)統(tǒng)計(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 分?jǐn)?shù)的基本性質(zhì)說(shuō)課稿
- 蹲踞式跳遠(yuǎn)說(shuō)課教學(xué)反思
- 住宅樓長(zhǎng)螺旋鉆孔CFG灌注樁基礎(chǔ)工程施工方案
- 《月是故鄉(xiāng)明》說(shuō)課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《合同管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《服務(wù)設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 終止合作協(xié)議書(2篇)
- 提高4-5歲幼兒自我控制能力的教育策略
- 2 0 2 4 年 7 月 國(guó)開(kāi)??啤斗ɡ韺W(xué)》期末紙質(zhì)考試 試題及答案
- 大疆在線測(cè)評(píng)題答案
- 公共政策分析第一章
- 行業(yè)協(xié)會(huì)重大活動(dòng)備案報(bào)告制度
- 北京市海淀區(qū)2024學(xué)年七年級(jí)上學(xué)期語(yǔ)文期中試卷【含參考答案】
- 2024年新人教版七年級(jí)上冊(cè)數(shù)學(xué)教學(xué)課件 5.2 解一元一次方程 第4課時(shí) 利用去分母解一元一次方程
- Unit 4 My Favourite Subject教學(xué)設(shè)計(jì)2024-2025學(xué)年人教版(2024)英語(yǔ)七年級(jí)上冊(cè)
- 2024新信息科技三年級(jí)第四單元:創(chuàng)作數(shù)字作品大單元整體教學(xué)設(shè)計(jì)
- 第9課《這些是大家的》(課件)-部編版道德與法治二年級(jí)上冊(cè)
- 2024年四川省南充市從“五方面人員”中選拔鄉(xiāng)鎮(zhèn)領(lǐng)導(dǎo)班子成員201人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2024年母嬰護(hù)理考試競(jìng)賽試題
評(píng)論
0/150
提交評(píng)論