免費(fèi)預(yù)覽已結(jié)束,剩余16頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
河南理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí)訓(xùn)報(bào)告2010 20 學(xué)年第 學(xué)期課程名稱 JSP 設(shè)計(jì)題目 VV博客 學(xué)生姓名 學(xué) 號(hào) 專業(yè)班級(jí) 2011 年 月 日19目 錄目 錄目 錄I第1章基礎(chǔ)知識(shí)11.1MySql數(shù)據(jù)庫(kù)11.2JSP與Servlet11.3 Struts框架2第2章 總體設(shè)計(jì)42.1 需求分析42.2 數(shù)據(jù)庫(kù)設(shè)計(jì)42.3 功能模塊簡(jiǎn)介52.4 框架的應(yīng)用8第3章 詳細(xì)設(shè)計(jì)103.1 查看博文功能103.2 寫博文功能103.3 修改博文功能103.4 留言功能10第4章 功能實(shí)現(xiàn)114.1 查看博文功能114.2 編寫博文功能124.3 修改博文功能144.4 留言功能16第5章 總結(jié)19第1章 基礎(chǔ)知識(shí)第1章 基礎(chǔ)知識(shí)1.1 MySql數(shù)據(jù)庫(kù)簡(jiǎn)介:MySQL名字的來(lái)歷MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司,在2008年1月16號(hào)被Sun公司收購(gòu)。MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。特性:1.使用C和C+編寫,并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng) 3.為多種編程語(yǔ)言提供了API。這些編程語(yǔ)言包括C、C+、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 4.支持多線程,充分利用CPU資源 5.優(yōu)化的SQL查詢算法,有效地提高查詢速度 6.既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中提供多語(yǔ)言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名 7.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑 8.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具 9.可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)1.2 JSP與Servlet簡(jiǎn)介:利用JSP技術(shù),動(dòng)態(tài)信息由JSP頁(yè)面來(lái)表現(xiàn),JSP頁(yè)面由安裝在Web服務(wù)器或者使用JSP的應(yīng)用服務(wù)器上的JSP引擎執(zhí)行。JSP引擎接受客戶端對(duì)JSP頁(yè)面的請(qǐng)求,并且生成JSP頁(yè)面作為對(duì)客戶端的響應(yīng)。 JSP頁(yè)面通常被編譯成為Java Servlets,這是一個(gè)標(biāo)準(zhǔn)的Java擴(kuò)展。頁(yè)面開發(fā)人員能夠訪問(wèn)全部的Java應(yīng)用環(huán)境,以利用Java技術(shù)的擴(kuò)展性和可移植性。當(dāng)JSP頁(yè)面第一次被調(diào)用時(shí),如果它還不存在,就會(huì)被編譯成為一個(gè)Java Servlets類,并且存儲(chǔ)在服務(wù)器的內(nèi)存中。這就使得在接下來(lái)的對(duì)該頁(yè)面的調(diào)用中,服務(wù)器會(huì)有非??斓捻憫?yīng)(這避免了CGIBIN為每個(gè)HTTP請(qǐng)求生成一個(gè)新的進(jìn)程的問(wèn)題)。 JSP頁(yè)面可以包含在多種不同的應(yīng)用體系結(jié)構(gòu)或者模型中,可以用于由不同協(xié)議、組件和格式所組成的聯(lián)合體中。基于JSP的動(dòng)態(tài)信息發(fā)布技術(shù)是一個(gè)開放的、可擴(kuò)展的建立動(dòng)態(tài)Web頁(yè)面的標(biāo)準(zhǔn)。不論采用什么創(chuàng)建工具,開發(fā)人員都可以使用JSP頁(yè)面來(lái)創(chuàng)建可移植的Web應(yīng)用,在不同的Web應(yīng)用服務(wù)器上運(yùn)行MVC模式:為了把表現(xiàn)層presentation從請(qǐng)求處理request processing 和數(shù)據(jù)存儲(chǔ)data storage中分離開來(lái),SUN公司推薦在JSP文件中使用一種“模型-視圖-控制器”Model-view-controller 模式。規(guī)范的SERVLET或者分離的JSP文件用于處理請(qǐng)求。當(dāng)請(qǐng)求處理完后,控制權(quán)交給一個(gè)只作為創(chuàng)建輸出作用的JSP頁(yè)。有幾種平臺(tái)都基于服務(wù)于網(wǎng)絡(luò)層的模-視圖-控件 模式(比如Struts 和Spring framework)Servlet:Servlet是一種服務(wù)器端的Java應(yīng)用程序,具有獨(dú)立于平臺(tái)和協(xié)議的特性,可以生成動(dòng)態(tài)的Web頁(yè)面。 它擔(dān)當(dāng)客戶請(qǐng)求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序)的中間層。 Servlet是位于Web 服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī)。servlet的工作模式:客戶端發(fā)送請(qǐng)求至服務(wù)器 服務(wù)器啟動(dòng)并調(diào)用Servlet,Servlet根據(jù)客戶端請(qǐng)求生成響應(yīng)內(nèi)容并將其傳給服務(wù)器 服務(wù)器將響應(yīng)返回客戶端1.3 Struts框架概述:struts是開源軟件。使用Struts的目的是為了幫助我們減少在運(yùn)用MVC設(shè)計(jì)模型來(lái)開發(fā)Web應(yīng)用的時(shí)間。如果我們想混合使用Servlets和JSP的優(yōu)點(diǎn)來(lái)建立可擴(kuò)展的應(yīng)用,struts是一個(gè)不錯(cuò)的選擇。流程:服務(wù)器啟動(dòng)后,根據(jù)web.xml加載ActionServlet讀取struts-config.xml文件內(nèi)容到內(nèi)存。 以登錄為例:第一次進(jìn)login.jsp會(huì)先實(shí)例化Form、把默認(rèn)值(String默認(rèn)為空字符串,整形默認(rèn)為0)賦給表單元素。 輸入用戶名密碼提交表單、提交到action屬性的login.do,通過(guò)ActionServlet讀struts-config.xml文件找到 action下的path屬性找到.do,通過(guò)name屬性找form-beans中的form-bean的name屬性得到ActionForm的包名類名,先實(shí)例化form,把表單的值填充給form,調(diào)用form的validate方法驗(yàn)證、ActionErrors返回null表示驗(yàn)證通過(guò),否則失敗返回input指定的頁(yè)面.驗(yàn)證通過(guò)會(huì)實(shí)例化Action,執(zhí)行Action的excute方法。Struts 2 概述:Struts 2是Struts的下一代產(chǎn)品。是在 struts 和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并,全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)的差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來(lái)處理用戶的請(qǐng)求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與Servlet API完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。因?yàn)镾truts 2和Struts 1有著太大的變化,但是相對(duì)于WebWork,Struts 2只有很小的變化。Struts2框架的大概處理流程如下: 1、瀏覽器發(fā)送一個(gè)請(qǐng)求。 2、核心控制器FilterDispatcher根據(jù)請(qǐng)求決定調(diào)用合適Action。 3、WebWork的攔截器鏈自動(dòng)對(duì)請(qǐng)求應(yīng)用通用功能,如驗(yàn)證等。4、回調(diào)Action的execute方法,該execute方法根據(jù)請(qǐng)求的參數(shù)來(lái)執(zhí)行一定的操作。5、Action的execute方法處理結(jié)果信息將被輸出到瀏覽器中,支持多種形式的視圖。核心代碼: sitemesh /* struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* / 第2章 總體設(shè)計(jì)第2章 總體設(shè)計(jì)2.1 需求分析1. 能夠?qū)κ褂镁W(wǎng)站的人員進(jìn)行初步的用戶管理(注冊(cè),注銷,登錄,修訂信息)2. 能夠?qū)δ承╉?yè)面進(jìn)行訪問(wèn)控制(如只有相關(guān)用戶能夠進(jìn)行用戶的刪除功能)3. 能夠在網(wǎng)站中發(fā)布信息(信息內(nèi)容可以只為文字,可以嘗試發(fā)布含格式和圖片的信息)4. 對(duì)于網(wǎng)站中的列表(如信息列表,人員列表)應(yīng)該實(shí)現(xiàn)翻頁(yè)功能5. 網(wǎng)站的外觀應(yīng)該較為美觀6. 網(wǎng)站采用的數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)連接模式自己決定(可以采用Mysql或ms sql,連接方式可以采用JNDI或者Hibernate或者手動(dòng)寫連接皆可,但推薦使用mysql數(shù)據(jù)庫(kù)和Hibernate)7. 網(wǎng)站開發(fā)應(yīng)該采用模塊化程度較高的開發(fā)方式,但不限于此(可以使用存JSP編寫,或者使用servlet技術(shù)編寫,或者采用Struts框架編寫,推薦使用Struts框架編寫)2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)創(chuàng)建數(shù)據(jù)庫(kù)ccmusic創(chuàng)建2個(gè)表t_users、t_musics關(guān)鍵代碼trueorg.hibernate.dialect.MySQLDialectcom.mysql.jdbc.Driverjdbc:mysql:/localhost/ccmusicrootroot2.3 功能模塊簡(jiǎn)介注:有功能模塊圖1、 登錄2、 注冊(cè)3、 編寫博文4、 查看博文5、 修改博文6、 留言2.4 框架的應(yīng)用 /* 主頁(yè)面代碼:博客主頁(yè)博文目錄寫博文管理博文留言還用到了Struts 和Hibernate框架。第3章 詳細(xì)設(shè)計(jì)第3章 詳細(xì)設(shè)計(jì)3.1 查看博文功能注:實(shí)現(xiàn)原理和方法由Struts收集表單信息交給Action處理,Action調(diào)用UTIL業(yè)務(wù)邏輯層處理提交信息,UTIL通過(guò)Jdbo(是一個(gè)純屬get和set方法的類)向Hibernate.hbm.xml,查詢相應(yīng)數(shù)據(jù),通過(guò)hibernate.cfg.xml文件查詢數(shù)據(jù)庫(kù)3.2 寫博文功能由Struts收集表單信息交給Action處理,Action調(diào)用UTIL業(yè)務(wù)邏輯層處理提交信息,UTIL通過(guò)Jdbo(是一個(gè)純屬get和set方法的類)提交給Hibernate.hbm.xml,Hibernate.hbm.xml是建立對(duì)應(yīng)的表,然后通過(guò)hibernate.cfg.xml文件存儲(chǔ)數(shù)據(jù)庫(kù)3.3 修改博文功能由Struts收集表單信息交給Action處理,Action調(diào)用UTIL業(yè)務(wù)邏輯層處理提交信息,UTIL通過(guò)Jdbo(是一個(gè)純屬get和set方法的類)查詢數(shù)據(jù),返回給用戶并通過(guò)上述方法收集用戶提交數(shù)據(jù),然后通過(guò)相同的方法遞交給Hibernate.hbm.xml然后通過(guò)hibernate.cfg.xml文件存儲(chǔ)修改數(shù)據(jù)3.4 留言功能由Struts收集表單信息交給Action處理,Action調(diào)用UTIL業(yè)務(wù)邏輯層處理提交信息,UTIL通過(guò)Jdbo(是一個(gè)純屬get和set方法的類)提交給Hibernate.hbm.xml,Hibernate.hbm.xml是建立對(duì)應(yīng)的表,然后通過(guò)hibernate.cfg.xml文件存儲(chǔ)數(shù)據(jù)庫(kù)第4章 功能實(shí)現(xiàn)第4章 功能實(shí)現(xiàn)4.1 查看博文功能注:主要代碼總共有$npb.rowCount條記錄,總共有$npb.pageCount頁(yè),當(dāng)前是第$npb.pageNum頁(yè),每頁(yè)顯示$npb.pageSize條記錄。標(biāo)題發(fā)表時(shí)間$news.title 第一頁(yè)上一頁(yè)第一頁(yè)上一頁(yè)下一頁(yè)最后頁(yè)下一頁(yè)最后頁(yè)4.2 編寫博文功能Jsp頁(yè)面 寫博文標(biāo)題作者 內(nèi)容 Action功能public String execute() throws Exception News n = new News();BeanUtils.copyProperties(n, this);boolean ok = NewsUtil.insert(n);if(ok)return this.SUCCESS;elsereturn this.ERROR;UTIL功能public static boolean insert(News n)boolean ok = true;Session session = DbUtil.getCurrentSession();Transaction tx = session.beginTransaction();trysession.save(n);mit();catch(HibernateException exp)exp.printStackTrace();tx.rollback();ok = false;finallyDbUtil.closeSession();return ok;4.3 修改博文功能管理$news.title 修改刪除UTIL功能代碼public static List select(int firstResult, int maxResults)List list = new ArrayList();Session session = DbUtil.getCurrentSession();Transaction tx = session.beginTransaction();tryString hql = from News;Query query = session.createQuery(hql);query.setFirstResult(firstResult);query.setMaxResults(maxResults);list = query.list();mit();catch(HibernateException exp)exp.printStackTrace();tx.rollback();finallyDbUtil.closeSession();return list;public static long getRowCount()long count = 0;Session session = DbUtil.getCurrentSession();Transaction tx = session.beginTransaction();tryString hql = select count(*) from News;Query query = session.createQuery(hql);count = (Long)query.uniqueResult();mit();catch(HibernateException exp)exp.printStackTrace();tx.rollback();finallyDbUtil.closeSession();return count;public static News getNews(long id)News news = null;Session session = DbUtil.getCurrentSession();Transaction tx = session.beginTransaction();trynews = (News)session.get(News.class, id);mit();catch(HibernateException exp)exp.printStackTrace();tx.rollback();finallyDbUtil.closeSession();return news;public static boolean updateNews(News news)boolean ok = true;Session session = DbUtil.getCurrentSession();Transaction tx = session.beginTransaction();trysession.update(news);mit();catch(HibernateException exp)exp.printStackTrace();tx.rollback();ok = false;finallyDbUtil.closeSession();return ok;public static boolean deleteNews(long id)boolean ok = true;Session session = DbUtil.getCurrentSession();Transaction tx = session.beginTransaction();tryNews news = (News)session.get(News.class, id);session.delete(news);mit();catch(HibernateException exp)exp.printStackTrace();tx.rollback();ok = false;finallyDbUtil.closeSession();return ok;4.4 留言功能留言板昵稱:留言內(nèi)容 input type=hidden name=publishTime 請(qǐng)留言 Ajax實(shí)現(xiàn)功能代碼:var xmlHttp;function checkName()var name = document.regform.username.value; if(name = ) document.getElementById(nameText).innerHTML = 用戶名不能為空 return; if(window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = callback; xmlHttp.open(GET,check?name=+name,true); xmlHttp.send(null);function callback() if(xmlHttp.readyState = 4) if(xmlHttp.status = 200) var responseText = xmlHttp.responseText; if(responseText = 該用戶已存在,請(qǐng)重新輸入) document.getElementById(nameText).innerHTML = 該用戶已存在,請(qǐng)重新輸入 doument.regform.username.value = ; else if(responseText = 該用戶名可用) document.getElementById(nameText).innerHTML = ; function checkPass1() var pwd1 = document.regform.password.value; if(pwd1.length 10) document.getElementById(pass1Text).innerHTML = 密碼長(zhǎng)度不正確 else document.getElementById(pass1Text).innerHTML = ; function checkPass2() var pwd1 = document.regform.password.value; var pwd2 = document.regform.repassword.value; if(pwd1 != pwd2) document.getElementById(pass2Text).innerHTML = 密碼不一致 else document.getElementById(pass2Text).innerHTML = ; function checkEmail() var email = document.regform.email.value; var pattern = /(a-zA-Z0-9_-)+(a-zA-Z0-9_-)+(.a-zA-Z0-9_-)+/;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026四川成都市簡(jiǎn)陽(yáng)市禾豐鎮(zhèn)便民服務(wù)和智慧蓉城運(yùn)行中心招聘綜治巡防隊(duì)員5人備考題庫(kù)帶答案詳解(培優(yōu))
- 2026年甘肅省蘭州市城關(guān)區(qū)文璟學(xué)校春季學(xué)期教師招聘?jìng)淇碱}庫(kù)及1套參考答案詳解
- 2026四川內(nèi)江市威遠(yuǎn)隆創(chuàng)實(shí)業(yè)有限公司招聘高鐵輔助員1人備考題庫(kù)帶答案詳解(模擬題)
- 2026廣東廣州番禺區(qū)南村鎮(zhèn)紅郡幼兒園招聘4人備考題庫(kù)含答案詳解(b卷)
- 2026中國(guó)農(nóng)業(yè)大學(xué)人才招聘?jìng)淇碱}庫(kù)附答案詳解(a卷)
- 2026北京首都體育學(xué)院人才引進(jìn)10人備考題庫(kù)(第一批)附答案詳解(培優(yōu)b卷)
- 2026四川樂(lè)山市犍為縣第一批就業(yè)見習(xí)崗位及招募見習(xí)人員58人備考題庫(kù)帶答案詳解(精練)
- 2026上海市盲童學(xué)校招聘9人備考題庫(kù)含答案詳解(滿分必刷)
- 2026上半年貴州事業(yè)單位聯(lián)考貴州財(cái)經(jīng)大學(xué)招聘4人備考題庫(kù)附答案詳解(培優(yōu)a卷)
- 2025年廣東農(nóng)工商職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題含答案解析(奪冠)
- 物料編碼規(guī)則培訓(xùn)
- 2025-2030中國(guó)視頻壓縮編碼芯片行業(yè)運(yùn)營(yíng)格局及投資趨勢(shì)預(yù)測(cè)報(bào)告
- 2025年中國(guó)家用智能擴(kuò)香器行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 高中數(shù)學(xué)北師大版講義(必修二)第01講1.1周期變化7種常見考法歸類(學(xué)生版+解析)
- 審計(jì)人員述職報(bào)告
- 汽輪機(jī)ETS保護(hù)傳動(dòng)試驗(yàn)操作指導(dǎo)書
- 法社會(huì)學(xué)教程(第三版)教學(xué)
- (高清版)DZT 0208-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 金屬砂礦類
- 2024磷石膏道路基層材料應(yīng)用技術(shù)規(guī)范
- 問(wèn)卷設(shè)計(jì)-問(wèn)卷分析(社會(huì)調(diào)查課件)
- 刮痧法中醫(yī)操作考核評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論