版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第5章MVC框架開發(fā)基礎5.1MVC基本思想5.25.3MVC關鍵技術MVC綜合開發(fā)實戰(zhàn)5.1MVC基本思想MVC把應用程序分成3大基本模塊:模型(Model,簡稱M)、視圖(View,簡稱V)和控制器(Controller,簡稱C),它們(三者聯(lián)合即MVC)分別擔當不同的任務。這幾個模塊各自的職能及相互關系,如圖5.1所示。5.2MVC關鍵技術5.2.1DAO技術1.DAO原理DAO(DataAccessObject,數(shù)據(jù)訪問對象)是程序員定義的一種接口,它介于數(shù)據(jù)庫資源和業(yè)務邏輯之間,其意圖是將底層數(shù)據(jù)訪問操作與高層業(yè)務邏輯完全分開。在數(shù)據(jù)庫編程的時候,經(jīng)常遇到這樣的情況:一個用戶的數(shù)據(jù)訪問模塊,里面的操作方法有insert、delete、update、select等,對不同數(shù)據(jù)庫其實現(xiàn)的細節(jié)是不同的。因此,不太可能針對每種類型的數(shù)據(jù)庫做一個通用的對象來實現(xiàn)這些操作。這時候,就可以定義一個用戶數(shù)據(jù)訪問對象的接口IUserDAO,提供insert、delete、update、select等抽象方法。不同類型數(shù)據(jù)庫的用戶訪問對象只要實現(xiàn)這個接口就可以了,如圖5.2所示。5.2.1DAO技術2.舉例在【實例五】(4.1.2節(jié))中,利用Hibernate的ORM功能實現(xiàn)了對數(shù)據(jù)庫表的對象化操作,然而,validate.jsp(登錄驗證)的代碼中仍然存留有操作數(shù)據(jù)庫的語句,如:……//查詢userTable表中的記錄Stringhql="fromUserTableuwhereu.username=?andu.password=?";Queryquery=HibernateSessionFactory.getSession().createQuery(hql);query.setParameter(0,usr);query.setParameter(1,pwd);Listusers=query.list();……5.2.1DAO技術【實例六】采用JSP+DAO+Hibernate方式開發(fā)一個Web登錄程序。要求:用DAO接口來操作Hibernate生成的UserTable對象。(1)創(chuàng)建JavaEE項目新建JavaEE項目,項目命名jsp_dao_hibernate。在項目src下創(chuàng)建兩個包:org.easybooks.test.factory和org.easybooks.test.model.vo。(2)添加Hibernate及生成POJO類操作方法與【實例五】(4.1.2節(jié))的第(2)、(3)步完全相同,不再贅述。5.2.1DAO技術(3)定義并實現(xiàn)DAO在項目src下創(chuàng)建包org.easybooks.test.dao,右擊選擇菜單【New】→【Interface】,在如圖5.3所示的【NewJavaInterface】窗口的Name欄輸入IUserTableDAO,單擊【Finish】按鈕,創(chuàng)建一個DAO接口。5.2.1DAO技術在IUserTableDAO.java中定義DAO接口,代碼如下:packageorg.easybooks.test.dao;importorg.easybooks.test.model.vo.*;publicinterfaceIUserTableDAO{ publicUserTablevalidateUser(Stringusername,Stringpassword); //方法:驗證用戶名密碼}接口中定義了一個validateUser()方法,用于驗證用戶,這個方法的具體實現(xiàn)在org.easybooks.test.dao.impl包下的UserTableDAO類中。在src下創(chuàng)建org.easybooks.test.dao.impl包,在包中創(chuàng)建類UserTableDAO,此類實現(xiàn)了接口中的validateUser()方法。5.2.1DAO技術(4)創(chuàng)建JSP本例也有4個JSP文件,其中l(wèi)ogin.jsp、main.jsp和error.jsp這3個文件的源碼與【實例五】(4.1.2節(jié))程序的完全相同,但validate.jsp文件的代碼有了很大的改變。validate.jsp文件的代碼。5.2.2整合Hibernate與Struts21.MVC的實現(xiàn)①用Hibernate把數(shù)據(jù)庫表映射為POJO類,并用DAO技術將其封裝入接口,形成持久層數(shù)據(jù)模型(M)。②JSP文件單純地只作為網(wǎng)頁視圖(V),顯示應用程序界面和數(shù)據(jù)。③Struts2擔任控制器(C)的角色,負責按程序流程調(diào)用數(shù)據(jù)模型和控制網(wǎng)頁跳轉(zhuǎn)。顯然,這需要同時整合Struts2和Hibernate兩個框架,參考圖3.3,得到如圖5.4所示JavaEE系統(tǒng)的MVC解決方案。5.2.2整合Hibernate與Struts22.舉例【實例七】采用JSP+Struts2+DAO+Hibernate方式開發(fā)一個Web登錄程序。要求:將前面介紹過的Struts2和Hibernate兩大框架整合起來使用,參照圖5.4所示的系統(tǒng)結構,嚴格貫徹MVC的思想開發(fā)。其中,JSP作為視圖V顯示登錄、成功或失敗頁;Struts2作為控制器C處理頁面跳轉(zhuǎn);Hibernate用作數(shù)據(jù)模型M,它與前臺程序的接口以DAO形式提供。(1)創(chuàng)建JavaEE項目新建JavaEE項目,項目命名jsp_struts2_dao_hibernate。在項目src下創(chuàng)建兩個包:org.easybooks.test.factory和org.easybooks.test.model.vo。5.2.2整合Hibernate與Struts2(2)M層開發(fā)——添加Hibernate、生成POJO類及編寫DAO①添加Hibernate。操作方法同【實例五】(4.1.2節(jié))第(2)步,略。②生成POJO類。操作方法同【實例五】第(3)步,略。③在項目src下創(chuàng)建包org.easybooks.test.dao和org.easybooks.test.dao.impl,分別用于存放DAO接口IUserTableDAO及其實現(xiàn)類UserTableDAO。DAO接口和類的代碼與【實例六】的完全相同,在此省略。5.2.2整合Hibernate與Struts2(3)C層開發(fā)——加載Struts2包、實現(xiàn)Action及控制器配置①加載、配置Struts2。步驟與【實例四】(3.1.2節(jié))第(2)、(3)步相同,稍有差別的是,這里僅需加載Struts2的9個jar包即可,因在剛剛添加Hibernate時,數(shù)據(jù)庫的驅(qū)動包已被自動載入進來,無須重復加載。配置文件web.xml內(nèi)容與【實例四】完全相同,不再給出。②實現(xiàn)Action。在項目src文件夾下建立包org.easybooks.test.action,在包里創(chuàng)建MainAction類,代碼所示。將上段代碼與【實例四】第(6)步的MainAction類的代碼比較一下,就會發(fā)現(xiàn),其中已沒有操作數(shù)據(jù)庫的代碼了!由此可見使用DAO封裝所帶來的好處。③配置Action。在src下創(chuàng)建文件struts.xml,配置內(nèi)容與【實例四】完全一樣,在此省略。5.2.2整合Hibernate與Struts2(4)V層開發(fā)——編寫JSP文件有了M、C這兩層的功能,V層開發(fā)的任務就簡單多了,只剩下編寫3個JSP文件:login.jsp、main.jsp和error.jsp。它們的代碼與【實例四】的也完全一樣,略。部署運行程序,效果如圖2.13所示。5.3MVC綜合開發(fā)實戰(zhàn)5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)【綜合案例四】采用MVC(JSP+Struts2+DAO+Hibernate)方式開發(fā)一個學生選課系統(tǒng)。學生登錄系統(tǒng)后,可以查看、修改個人信息;查看個人選課情況;選定課程及退選課程。要求:在【實例七】(5.2.2節(jié))基礎上修改擴充而成,【實例七】已經(jīng)具備了一個完整的MVC項目的框架,但它只有最簡單的Web登錄功能,本例就以它為“藍本”進一步擴充成一個實現(xiàn)多種應用功能的“學生選課系統(tǒng)”。項目嚴格遵照MVC模式去開發(fā),后臺數(shù)據(jù)庫用SQLServer2008/2012。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)1.建立數(shù)據(jù)庫及表結構該系統(tǒng)需要建立登錄表(DLB)、學生表(XSB)、專業(yè)表(ZYB)、課程表(KCB)以及學生課程表(XS_KCB)即連接表。其中學生表和專業(yè)表是多對一關系,學生表和課程表是多對多關系。具體表結構見附錄A,完成后預先錄入樣本數(shù)據(jù)。2.創(chuàng)建JavaEE項目新建JavaEE項目,項目命名Struts_Hibernate。在項目src下創(chuàng)建兩個包:org.factory和org.model。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)3.登錄選課系統(tǒng)(1)M層開發(fā)①添加Hibernate。操作方法同【實例五】(4.1節(jié))第(2)步,生成的HibernateSessionFactory.java文件置于org.factory包中。②生成POJO類及映射文件。操作方法同【實例五】第(3)步,不過這里要生成登錄表、課程表、學生表和專業(yè)表一共4個表的POJO類及其映射文件,統(tǒng)一置于org.model包下。因各表間有對應的關系,除了登錄表、專業(yè)表的對應類及映射文件外,其它需要修改(加黑語句)。Xsb.java代碼改為。對應映射文件Xsb.hbm.xml代碼改為。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)Kcb.java代碼改為。對應映射文件Kcb.hbm.xml代碼改為:…<hibernate-mapping><classname="org.model.Kcb"table="KCB"schema="dbo"catalog="XSCJ"> …<!--與學生表是多對多關系--><setname="xss"table="XS_KCB"lazy="true"inverse="true"> <keycolumn="KCH"></key> <many-to-manyclass="org.model.Xsb"column="XH"></many-to-many></set></class></hibernate-mapping>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)為了使程序能正確處理多對多關系和操作連接表,對自動生成的hibernate.cfg.xml配置文件要進行微小的改動,指明所連接到的數(shù)據(jù)庫名稱,如下:…<hibernate-configuration> <session-factory> <propertyname="dialect"> org.hibernate.dialect.SQLServerDialect </property> <propertyname="connection.url"> jdbc:sqlserver://localhost:1433;databaseName=XSCJ </property> … </session-factory></hibernate-configuration>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)③DAO層組件實現(xiàn)。在項目src下創(chuàng)建包org.dao和org.dao.impl,分別用于存放DAO接口及其實現(xiàn)類。
登錄接口。登錄接口中封裝了validate方法,完成對用戶的驗證功能,系統(tǒng)根據(jù)輸入的學號和口令進行用戶合法性驗證,驗證通過才允許進入系統(tǒng)主頁面。DlDao.java接口,定義如下:packageorg.dao;importorg.model.Dlb;publicinterfaceDlDao{ //方法:根據(jù)學號和口令查詢 publicDlbvalidate(Stringxh,Stringkl);}其對應的實現(xiàn)類DlDaoImp.java,代碼為。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)
學生接口。學生接口中封裝了getOneXs和update兩個方法,分別用于獲取指定學號的學生個人信息和修改某個學生的信息。XsDao.java接口,定義如下:packageorg.dao;importorg.model.Xsb;publicinterfaceXsDao{ //方法:根據(jù)學號查詢學生信息 publicXsbgetOneXs(Stringxh); //方法:修改學生信息 publicvoidupdate(Xsbxs);}其對應的實現(xiàn)類XsDaoImp.java,代碼為。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)
專業(yè)接口。專業(yè)接口中封裝了getOneZy和getAll兩個方法,分別用于查詢某個專業(yè)的信息以及獲取所有專業(yè)信息。ZyDao.java接口,定義如下:packageorg.dao;importjava.util.*;importorg.model.Zyb;publicinterfaceZyDao{ //方法:根據(jù)專業(yè)
ID查詢專業(yè)信息 publicZybgetOneZy(IntegerzyId); //方法:查詢所有專業(yè)信息 publicListgetAll();}對應的實現(xiàn)類ZyDaoImp.java,代碼為。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)
課程接口。課程接口中封裝了getOneKc和getAll兩個方法,分別用于查詢某門課程的信息以及獲取所有課程的信息。KcDao.java接口,定義如下:packageorg.dao;importjava.util.*;importorg.model.Kcb;publicinterfaceKcDao{ //方法:根據(jù)課程號查詢課程信息 publicKcbgetOneKc(Stringkch); //方法:查詢所有課程的信息 publicListgetAll();}對應的實現(xiàn)類KcDaoImp.java,代碼為。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)(2)C層開發(fā)①加載、配置Struts2。步驟與【實例四】(3.1.2節(jié))第(2)、(3)步相同,稍有差別的是,這里僅需加載Struts2的9個jar包即可,因在添加Hibernate時,數(shù)據(jù)庫的驅(qū)動包已被自動載入,無須重復加載。配置文件web.xml內(nèi)容與【實例四】完全相同,不再給出。②實現(xiàn)Action。在項目src文件夾下建立包org.action,在包里創(chuàng)建LoginAction類,代碼所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)③配置Action。在src下創(chuàng)建文件struts.xml,配置如下:…<struts> <packagename="default"extends="struts-default"> <!--用戶登錄
--> <actionname="login"class="org.action.LoginAction"> <resultname="success">/main.jsp</result> <resultname="error">/login.jsp</result> </action> //這里以后添加Action配置,后面配置的Action都要添加在這里 </package></struts>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)(3)V層開發(fā)①登錄界面。登錄界面由login.jsp實現(xiàn),代碼為。②主頁面。選課系統(tǒng)的主頁面main.jsp由head.jsp、left.jsp及rigth.jsp組合而成。
主頁。主頁main.jsp,代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="/struts-tags"prefix="s"%><html><head> <title>學生選課系統(tǒng)</title></head><framesetrows="30%,*"border="0"> <framesrc="head.jsp"> <framesetcols="15%,*"border="1"> <framesrc="left.jsp"> <framesrc="right.jsp"name="right"> </frameset></frameset></html>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)
主頁頭。主頁頭部依然是前面的那個主題標頭圖片,head.jsp內(nèi)容為:<%@pagelanguage="java"pageEncoding="UTF-8"%><html><bodybgcolor="#D9DFAA"> <imgsrc="/Struts_Hibernate/image/head.jpg"></body></html>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)
功能導航。頁面左部是一系列功能導航的鏈接,單擊提交給不同功能的Action模塊去處理。left.jsp代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><html><bodybgcolor="#D9DFAA"> <ahref="xsInfo.action"target="right">查詢個人信息</a><p> <ahref="updateXsInfo.action"target="right">修改個人信息</a><p> <ahref="getXsKcs.action"target="right">個人選課情況</a><p> <ahref="getAllKc.action"target="right">所有課程信息</a><p></body></html>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)
內(nèi)容區(qū)。頁面右部是加載網(wǎng)頁顯示內(nèi)容的區(qū)域,初始為空白。right.jsp是一個僅顯示背景色的空頁,如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><html><bodybgcolor="#D9DFAA"></body></html>到目前為止,學生選課系統(tǒng)的MVC框架及最基本的登錄功能已經(jīng)做好了,部署運行一下查看效果。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)初始登錄頁如圖5.5所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)登錄成功后進入主界面,如圖5.6所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)4.查詢個人信息主界面左側(cè)第一個導航功能是“查詢個人信息”,從left.jsp中可以發(fā)現(xiàn),其提交給xsInfo.action,對應Action配置如下:<actionname="xsInfo"class="org.action.XsAction"> <resultname="success">/xsInfo.jsp</result></action><actionname="getImage"class="org.action.XsAction"method="getImage"></action> 由于學生的個人信息中有照片,這里的處理思路是把要處理照片的信息提交給Action類來讀取,所以要加入名為getImage的Action。編寫XsAction來實現(xiàn)學生信息的查詢。XsAction.java的代碼所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)成功后跳轉(zhuǎn)的頁面xsInfo.jsp,代碼為。這樣查詢學生個人信息的功能就完成了,部署運行程序,登錄,單擊“查詢個人信息”導航鏈接,可以查看當前用戶的個人信息,如圖5.7所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)5.修改個人信息(1)呈現(xiàn)修改學生信息頁下面再來開發(fā)修改學生信息的功能。單擊“修改個人信息”超鏈接,從left.jsp中可以看出提交給了updateXsInfo.action,該Action的配置為:<actionname="updateXsInfo"class="org.action.XsAction"method="updateXsInfo"> <resultname="success">/updateXsInfo.jsp</result></action>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)所以就要在XsAction類中加入下面的方法:
//進入修改學生信息頁面 publicStringupdateXsInfo()throwsException{ //獲取當前用戶對象 Mapsession=(Map)ActionContext.getContext().getSession(); Dlbuser=(Dlb)session.get("user");
xsDao=newXsDaoImp(); ZyDaozyDao=newZyDaoImp(); //取出所有專業(yè)信息,因為在修改學生信息時,專業(yè)欄是下拉列表選擇專業(yè),而不是學生自己隨便填寫
Listzys=zyDao.getAll(); Xsbxs=xsDao.getOneXs(user.getXh()); //得到當前學生的信息 Maprequest=(Map)ActionContext.getContext().get("request"); request.put("zys",zys); request.put("xs",xs); returnSUCCESS; }修改學生信息頁面updateXsInfo.jsp的代碼所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)(2)修改操作的實現(xiàn)當單擊【修改】按鈕后,就把學生自己填寫的內(nèi)容提交給了updateXs.action,對應Action的配置如下:<actionname="updateXs"class="org.action.XsAction"method="updateXs"> <resultname="success">/updateXs_success.jsp</result></action>XsAction類中要加入下面的代碼來處理請求。修改成功后跳轉(zhuǎn)到updateXs_success.jsp頁面,代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><html><bodybgcolor="#D9DFAA">
恭喜你,修改成功!</body></html>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)部署運行程序,登錄、單擊主頁上的“修改個人信息”導航鏈接,程序以控件表單的方式呈現(xiàn)出該用戶原來的舊信息以供修改,如圖5.8所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)把用戶信息修改為如圖5.9所示狀態(tài):姓名“王林”改為“周何駿”;專業(yè)下拉改選為“通信工程”;出生時間改為“1995-09-25”(必須嚴格按此格式填寫);增加備注信息“輔修計算機”;總學分改為100;單擊【瀏覽…】按鈕,彈出對話框,選擇某個路徑下預先保存的照片。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)完成后單擊【修改】按鈕提交,系統(tǒng)會提示用戶修改成功。然后再單擊“查詢個人信息”超鏈接就會出現(xiàn)新的個人信息頁,如圖5.10所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)6.選課與退選課程(1)查看個人選課情況left.jsp文件的第三個超鏈接是查詢學生的選課情況,這個功能很容易實現(xiàn)。只要查出該學生信息,由于級聯(lián)到第三張表的信息,所以只要取出該生信息的Set集合的內(nèi)容,遍歷出來就行了。下面是Action配置代碼:<actionname="getXsKcs"class="org.action.XsAction"method="getXsKcs"> <resultname="success">/xsKcs.jsp</result></action>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)對應的XsAction類中的處理方法,代碼如下:
//得到學生選修的課程 publicStringgetXsKcs()throwsException{ Mapsession=(Map)ActionContext.getContext().getSession(); Dlbuser=(Dlb)session.get("user"); Stringxh=user.getXh(); Xsbxsb=newXsDaoImp().getOneXs(xh); //得到當前學生的信息 Setlist=xsb.getKcs(); //取出選修的課程
Set Maprequest=(Map)ActionContext.getContext().get("request"); request.put("list",list); //保存 returnSUCCESS; }查詢成功后的xsKcs.jsp頁面,代碼所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)部署運行程序,登錄后單擊“個人選課情況”超鏈接,可以查看當前用戶的個人選課情況,如圖5.11所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)(2)查詢所有課程信息在left.jsp中還有一個鏈接就是查詢所有課程,其實查詢出所有課程就是為了方便讓學生選課,其Action配置如下:<actionname="getAllKc"class="org.action.KcAction"> <resultname="success">/allKc.jsp</result></action>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)對應Action實現(xiàn)類,可以發(fā)現(xiàn)一個新的Action類名為KcAction.java,代碼如下:packageorg.action;importjava.util.*;importorg.dao.*;importorg.dao.imp.*;importcom.opensymphony.xwork2.*;publicclassKcActionextendsActionSupport{ publicStringexecute()throwsException{ KcDaokcDao=newKcDaoImp(); Listlist=kcDao.getAll(); //獲取所有課程信息 Maprequest=(Map)ActionContext.getContext().get("request"); request.put("list",list); //保存到request returnSUCCESS; }}顯示所有課程信息列表的JSP頁allKc.jsp,代碼為。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)部署運行程序,登錄、在主頁上單擊“所有課程信息”超鏈接,可顯示所有課程的信息列表,如圖5.12所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)(3)選修課程在圖5.12中,每個課程的后面都有個“選修”超鏈接,提交給selectKc.action,該Action的配置如下:<actionname="selectKc"class="org.action.XsAction"method="selectKc"> <resultname="success">/selectKc_success.jsp</result> <resultname="error">/selectKc_fail.jsp</result></action>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)對應Action實現(xiàn)類的方法(由于是學生選課,所以該方法在XsAction中),代碼如下:
//選定課程 publicStringselectKc()throwsException{ Mapsession=(Map)ActionContext.getContext().getSession(); Stringxh=((Dlb)session.get("user")).getXh(); xsDao=newXsDaoImp(); Xsbxs3=xsDao.getOneXs(xh); Setlist=xs3.getKcs(); Iteratoriter=list.iterator(); //選修課程時先遍歷已經(jīng)選的課程,如果在已經(jīng)選修的課程中找到就返回
ERROR while(iter.hasNext()){ Kcbkc3=(Kcb)iter.next(); if(kc3.getKch().equals(kcb.getKch())){ returnERROR; } } list.add(newKcDaoImp().getOneKc(kcb.getKch()));//如果沒找到,就添加到集合中 xs3.setKcs(list); xsDao.update(xs3); returnSUCCESS; }5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)成功頁面selectKc_success.jsp,代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><html><bodybgcolor="#D9DFAA">
你已經(jīng)成功選擇該課程!</body></html>失敗頁面selectKc_fail.jsp,代碼如下:<%@pagelanguage="java"pageEncoding="UTF-8"%><html><bodybgcolor="#D9DFAA">
你已經(jīng)選擇該課程,請不要重復選?。?lt;/body></html>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)部署運行程序,登錄、單擊“所有課程信息”,單擊課程信息表格(如圖5.12所示)中某門課右邊的“選修”鏈接,如圖5.13所示(這里以選302號“軟件工程”課為例演示),后臺就會判斷該用戶是否已經(jīng)選修了該門課,如果已經(jīng)選修就會提示用戶已選,不要重復選?。蝗绻麤]有選修,就會提示用戶選修成功。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)然后再查看個人選課情況,會多出剛剛選修的課程信息,如圖5.14所示。5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)(4)退選課程退選操作很簡單,只要把該學生的這個課程從Set中remove就行了。對應的Action配置如下:<actionname="deleteKc"class="org.action.XsAction"method="deleteKc"> <resultname="success">/deleteKc_success.jsp</result></action>5.3.1MVC綜合開發(fā)實戰(zhàn):學生選課系統(tǒng)(基于SQLServer)對應XsAction類中的處理方法,代碼如下:
//退選課程 publ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《認識克》數(shù)學課件教案
- 2026江蘇泰州市興化市部分高中學校校園招聘教師18人參考筆試題庫附答案解析
- 2025江蘇連云港市消防救援支隊第四批政府專職消防員招聘40人備考考試題庫及答案解析
- 2025年日照五蓮縣教體系統(tǒng)公開招聘博士研究生備考考試試題及答案解析
- 2025四川內(nèi)江市東興區(qū)住房保障和房地產(chǎn)服務中心考核招聘編外人員1人備考考試試題及答案解析
- 2025河北廊坊大廠回族自治縣殯儀館招聘2人備考筆試題庫及答案解析
- 2025湖北神農(nóng)架林區(qū)實驗小學附屬幼兒園食堂員工及保育員招聘2人備考筆試題庫及答案解析
- 2025中國農(nóng)業(yè)科學院中原研究中心招聘2人備考筆試試題及答案解析
- 2025甘肅天水市秦州區(qū)眼科醫(yī)院招聘超聲影像工作人員1人參考筆試題庫附答案解析
- 2025福建龍巖市上杭縣廬豐衛(wèi)生院招聘一體化鄉(xiāng)村醫(yī)生1人參考考試試題及答案解析
- 特種設備檢驗檢測行業(yè)商業(yè)計劃書
- 改革開放簡史智慧樹知到課后章節(jié)答案2023年下北方工業(yè)大學
- 木薯變性淀粉生產(chǎn)應用課件
- 地下水污染與防治課件
- 校門安全管理“十條”
- 超全QC管理流程圖
- 臨時工勞動合同簡易版可打印
- 潔凈室施工及驗收規(guī)范標準
- -井巷工程課程設計
- pks r5xx裝機及配置手冊
- GB/T 17215.322-2008交流電測量設備特殊要求第22部分:靜止式有功電能表(0.2S級和0.5S級)
評論
0/150
提交評論