【正文】
成增刪改查任務(wù)。 //創(chuàng)建返回List對象 try{ sql = new String((),iso88591)。 //搜索得到結(jié)果 if(()!=0){ //結(jié)果不為空的情況 for(int i=0。i++){ //遍歷結(jié)果 Map map=(Map)(i)。 //創(chuàng)建一個(gè)TopicItem對象 ((tid).toString())。 (new String((title).toString()))。 //設(shè)置TopicItem對象的點(diǎn)擊數(shù) ((revert).toString())。 //設(shè)置發(fā)帖時(shí)間屬性值 (new String((htr).toString()))。 (new String((gname).toString()))。 } } } catch(Exception e){ ()。 //返回結(jié)果 }三、注冊用戶當(dāng)用戶打開注冊頁面將自己的信息填寫好,點(diǎn)擊“提交”按鈕之后,在客戶端瀏覽器首先對用戶填入的信息進(jìn)行校驗(yàn),校驗(yàn)主要包括:用戶在必填的選項(xiàng)下是否輸入空的內(nèi)容,是否符合該項(xiàng)所定義的格式要求。當(dāng)用戶填寫的信息正確之后,頁面由表單的Action屬性確定將用戶的請求發(fā)送到服務(wù)器下的Struts2 對應(yīng)Action這個(gè)類下進(jìn)行處理注冊業(yè)務(wù),進(jìn)一步調(diào)用服務(wù)器端DAO層的DBUtil類中注冊方法,利用Java的JDBC是向數(shù)據(jù)庫的表dy_user中插入一條數(shù)據(jù)。 //用戶性別 private String 。 //性別屬性的get方法 } public void setGender(String gender) { = gender。 //電子郵件的get方法 } public void setEmail(String ) { = 。 //得到存在Session中的驗(yàn)證碼 randNum = ()。 //給出提示信息 url = 。 } if(()){ //注冊名已經(jīng)存在 message = 您所注冊的用戶名已經(jīng)存在,請重新輸入。 return SUCCESS。+uname+39。+ pwd+39。++39。 //插入新用戶的SQL if((sql)){ message = 恭喜您,注冊成功。 //跳轉(zhuǎn)到主頁 } else{ message = 注冊失敗。 //返回注冊頁面 } return SUCCESS。使得代碼簡潔的同時(shí)降低了程序的耦合度。然后等待該課程的代課老師審核,審核通過后便能發(fā)表關(guān)于該課程的信息。 //申請課程的編號 private String reason。 } public String getTgid(){ return tgid。 } public String getReason(){ return reason。 if(!(sql)){ url = 。 return SUCCESS。 sql = select 1 from DY_Apply where TGID=+tgid+ and UID=39。 + and AFlag=0。 message = 你已經(jīng)申請過該課程,請耐心等待處理。 } sql = select 1 from DY_TU where TGID=+tgid+ and UID=39。 if((sql)){ url = 。 return SUCCESS。 if(!0.equals(role)){ //目前登陸的不是學(xué)生 url = 。 return SUCCESS。 +uid+39。+reason+39。 if((sql)){ url = 。 return SUCCESS。 message = 未知錯(cuò)誤,申請?zhí)峤皇。F(xiàn)在將要跳轉(zhuǎn)到申請頁面。 }五、發(fā)帖(回帖) 發(fā)帖進(jìn)入個(gè)人中心后,點(diǎn)擊“我要提問”,系統(tǒng)跳轉(zhuǎn)到GMCAction所指向的頁面,在GMCAction中系統(tǒng)根據(jù)Session獲得該用戶ID記錄發(fā)帖人與發(fā)帖時(shí)間。import .*。 SuppressWarnings(unchecked) public Map getCourse(){ String uid = (String)getSession().get(uid)。 //得到用戶選課列表的SQL語句 return (sql)。 }} 回帖該部分實(shí)現(xiàn)和主貼的實(shí)現(xiàn)基本相同,回帖主要是從回帖表中獲取的數(shù)據(jù)。 ! ************文件上傳*************** action name=srcUploadAction_* class=method={1} ! Struts2自帶的上傳攔截器 需要配置Constant interceptorref name=fileUpload ! 允許上傳pdf,txt,ppt,zip param name=allowedTypes text/plain,application/,application/msword,application/pdf,application/zip /param /interceptorref interceptorref name=defaultStack/ result name=uplaodSuccess//result result name=input//result /action按照Struts2上傳文件API的規(guī)則編寫用于上傳文件的Action :SrcUploadActionpackage 。import 。import 。import 。import 。public class SrcUploadAction extends ActionSupport { private static final long serialVersionUID = 1L。 /**接收上傳的文件 屬性名必須與Form表單中屬性名相同*/ private ListFile uploadFile。 private UploadDownloadUtil upDownDao。 } public void setUploadFile(ListFile uploadFile) { = uploadFile。 } public void setUploadFileFileName(ListString uploadFileFileName) { = uploadFileFileName。 } public String uploadFiles() throws Exception{ filePath=().getRealPath(/uploadDownload)。 upDownDao = new UploadDownloadUtil()。 if(uploadFile!=null){ savePath = new File(filePath)。 for (int i = 0。 i++) { //在保存路徑中創(chuàng)建新文件 File savefile = new File(savePath, (i))。 //文件信息保存到數(shù)據(jù)庫 if(!(new UploadDownlloadFile((i), ()))){ ().put(uploadInfo, 上傳出錯(cuò))。 } } } return uplaodSuccess。第五章 系統(tǒng)測試第一節(jié) 系統(tǒng)測試的目的跟原則在開發(fā)大型軟件系統(tǒng)的過程中,需要面對錯(cuò)綜復(fù)雜的問題,因此,在軟件生存周期的每個(gè)階段都不可避免地會產(chǎn)生錯(cuò)誤。測試的目的就是在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。盡管面向?qū)ο蠹夹g(shù)的基本思想保證了軟件應(yīng)該有更高的質(zhì)量,但無論采用什么樣的編程技術(shù),編程人員的錯(cuò)誤都是不可避免的,而且由于面向?qū)ο蠹夹g(shù)開發(fā)的軟件代碼重用率高,更需要嚴(yán)格測試,避免錯(cuò)誤的繁衍。與開發(fā)過程類似,測試過程也必須分步驟進(jìn)行,每個(gè)步驟在邏輯上是前一個(gè)步驟地繼續(xù)。 系統(tǒng)測試① 單元測試 單元測試的用例從單元詳細(xì)設(shè)計(jì)中導(dǎo)出。② 集成測試 在這個(gè)測試步驟中所發(fā)現(xiàn)的往往是概要設(shè)計(jì)的錯(cuò)誤。一般來說,系統(tǒng)測試是功能性測試,不是結(jié)構(gòu)性測試。在測試的過程中,主要問題:JSP的中文亂碼問題 問題描述及解決辦法:顯示信息時(shí)出現(xiàn)了中文文字顯示的問題。在向網(wǎng)頁輸出中文字符串的時(shí)候,(string)或者%=string%方式,那么必須轉(zhuǎn)換,方式是通過%page ContentType=”text/html。中文作為參數(shù)傳遞出現(xiàn)了亂碼的問題。而事實(shí)上瀏覽器缺省的編碼方式為ISO88591,所以我們在處理中文參數(shù)時(shí),把客戶提交的中文參數(shù)先轉(zhuǎn)換后再應(yīng)用。% page contentType=”text/html。在把數(shù)據(jù)輸入到數(shù)據(jù)庫中前,進(jìn)行下面的轉(zhuǎn)換:byte[] temp=(“iso88591”)。 處理中文亂碼第三節(jié) 本章小節(jié)軟件開發(fā)與軟件測試密不可分,本章即說明本系統(tǒng)開發(fā)過程中軟件測試部分,從程序的單元測試到整體系統(tǒng)部署在Tomcat后的整體測試。第六章 總結(jié)與展望第一節(jié) 總結(jié)本論文簡要地講述了學(xué)網(wǎng)絡(luò)教學(xué)系統(tǒng)的實(shí)現(xiàn)過程及SSH在系統(tǒng)中的應(yīng)用,重點(diǎn)是講述系統(tǒng)模塊結(jié)構(gòu)和業(yè)務(wù)邏輯進(jìn)行設(shè)計(jì)來實(shí)現(xiàn)系統(tǒng)的主要功能。采用MVC設(shè)計(jì)模式建立三層體系結(jié)構(gòu),并對系統(tǒng)的功能模塊和數(shù)據(jù)庫進(jìn)行了詳細(xì)的設(shè)計(jì),最后實(shí)現(xiàn)了系統(tǒng)的各模塊。② 利用Ajax進(jìn)行開發(fā),可以比較有效地實(shí)現(xiàn)與用戶的信息交互,提高系統(tǒng)的智能化程度。③ 使用Struts2和Spring面向流行框架進(jìn)行開發(fā),系統(tǒng)有規(guī)范的接口,提高程序的利用率和方便系統(tǒng)的維護(hù)。在系統(tǒng)的開發(fā)過程中,以前學(xué)習(xí)感到很抽象的課程,如軟件工程、數(shù)據(jù)庫原理、面向?qū)ο蟪绦蛟O(shè)等變得清晰起來。以前做一些應(yīng)用的系統(tǒng)開發(fā),隨意性大,想到那里做到那里,沒有統(tǒng)一的規(guī)劃,一旦系統(tǒng)成型,出現(xiàn)錯(cuò)誤返工修改工作量大,最終的系統(tǒng)可靠性不高。這次的畢業(yè)設(shè)計(jì)開發(fā),主要有以下幾點(diǎn)收獲:① 對原型化的系統(tǒng)開發(fā)方法有了一定的了解。對于后期的系統(tǒng)維護(hù)也提供了很大的幫助。為以后的工作、學(xué)習(xí)的進(jìn)一步提高打下了堅(jiān)實(shí)的基礎(chǔ)。你們的嚴(yán)格把關(guān),對我們來說有很大的壓力。由此積累的經(jīng)驗(yàn)將對我們以后的學(xué)習(xí)和生活產(chǎn)生幫助。其次我要衷心感謝各位任課老師,感謝各位老師盡心盡力教導(dǎo),使我獲得了各方面的知識以及不同的學(xué)習(xí)方法。最后我要感謝我的家人,是他們一直在默默無聞的支持著我,使我順利完成大學(xué)學(xué)業(yè)。Hibernate and Eelipse[M].[18] 程志艷 張亮 :清華大學(xué)出版社,[19] :冶金工業(yè)出版社,[20] :人民郵電出版社,附 錄附錄Ⅰ 外文參考文獻(xiàn)(原文)Features of Spring And MVCSpring39。s Web MVC package provides a ModelViewController implementation for webapplications. Spring39。s web MVC framework is designed around a DispatcherServlet that dispatches requests to handlers, with configurable handler mappings, view resolution, locale and theme resolution as well as support for upload files. The default handler is a very simple Controller interface, just offering a ModelAndView handleRequest(request,response) method. This can already be used for application controllers, but you will prefer the included implementation hierarchy, consisting of, for example AbstractController, AbstractCommandController and SimpleFormController. Application controllers will typically be subclasses of those. Note that you can choose an appropriate base class: If you don39。t need a FormController. This is a major difference to Struts.You can use any object as