《Java Web應(yīng)用軟件開(kāi)發(fā)》考試方案
《JavaWeb應(yīng)用軟件開(kāi)發(fā)》考試方案
題目要求:
一、基于JSP技術(shù),完成網(wǎng)絡(luò)留言板。主要功能包括:前臺(tái)(添加留言、查看留言、客戶端驗(yàn)證等),后臺(tái)(管理員登錄、權(quán)限控制、管理員管理留言等)。
二、完成項(xiàng)目開(kāi)發(fā)的總結(jié)報(bào)告。
三、項(xiàng)目答辯:就最終完成的項(xiàng)目,匯報(bào)演示,并回答教師、同學(xué)的提問(wèn)。匯報(bào)內(nèi)容:1.系統(tǒng)已實(shí)現(xiàn)的內(nèi)容
2.系統(tǒng)用到的技術(shù),并具體說(shuō)出1-2個(gè)自認(rèn)為應(yīng)用得比較巧妙或者技術(shù)含量較強(qiáng)的技術(shù),談?wù)劜捎迷摷夹g(shù)的原因及如何應(yīng)用該技術(shù)的。
3.系統(tǒng)中的原創(chuàng)內(nèi)容。
4.在整個(gè)過(guò)程中參考了哪些資料,最受益的參考資料的出處。5.在制作過(guò)程中遇到過(guò)的困難及解決辦法。
6.在整個(gè)過(guò)程中,從同一學(xué)習(xí)小組的其他成員身上學(xué)到了哪些優(yōu)秀的品質(zhì)與精神。7.項(xiàng)目的不足及今后的改進(jìn)想法。
評(píng)分標(biāo)準(zhǔn):
一、網(wǎng)絡(luò)留言板項(xiàng)目(40%)
1.系統(tǒng)運(yùn)行無(wú)明顯異常(40分);2.?dāng)?shù)據(jù)庫(kù)完備(10分);3.改進(jìn)完善已學(xué)功能(10分);
4.在基本要求基礎(chǔ)上增加了新的功能,并且運(yùn)行無(wú)明顯異常(10分);
5.編碼規(guī)范:代碼格式規(guī)范(5分)、變量等命名規(guī)范(5分)、有必要的注釋(10分);6.網(wǎng)頁(yè)界面結(jié)構(gòu)清晰,色彩搭配合理,干凈整潔、美觀大方,文字和圖片內(nèi)容統(tǒng)一(10分)。
二、總結(jié)報(bào)告(30%)
1.能夠正確總結(jié)網(wǎng)絡(luò)留言板項(xiàng)目所涉及的技術(shù)(10分),并能選擇出3~5項(xiàng)重點(diǎn)使用的技術(shù),具體介紹其在項(xiàng)目中的應(yīng)用過(guò)程(50分)。
2.能夠根據(jù)實(shí)際學(xué)習(xí)情況寫(xiě)出心得體會(huì)(20分)。3.條理清晰,語(yǔ)言流暢。(20分)
三、項(xiàng)目答辯(30%)
教師及各學(xué)習(xí)小組依據(jù)下表,給出答辯學(xué)生的答辯成績(jī)。教師與學(xué)習(xí)小組給出的成績(jī)各占50%。課程名稱項(xiàng)目名稱評(píng)價(jià)構(gòu)成布局技術(shù)答辯程序結(jié)構(gòu)創(chuàng)新儀態(tài)儀表現(xiàn)場(chǎng)表現(xiàn)姓名評(píng)審標(biāo)準(zhǔn)學(xué)號(hào)班級(jí)分值得分20201*1010101010100描述模塊的功能、描述函數(shù)的調(diào)用關(guān)系(15分),描述相關(guān)函數(shù)的功能及技術(shù)點(diǎn)設(shè)計(jì)的原理(5分)描述整個(gè)軟件的層次結(jié)構(gòu)(15分),描述其它業(yè)務(wù)模塊的功能及技術(shù)難點(diǎn)(5分)提出合理化建議(5分),有創(chuàng)新之處(5分)表達(dá)清晰使用普通話注意禮儀細(xì)節(jié)禮儀規(guī)范表述流暢自然自然,落落大方,自信總計(jì)
擴(kuò)展閱讀:《Java Web應(yīng)用軟件開(kāi)發(fā)》講義
《JavaWeb應(yīng)用軟件開(kāi)發(fā)》講義
任務(wù)一:JSP運(yùn)行、開(kāi)發(fā)環(huán)境的構(gòu)建(201*-2-24)
1、Web應(yīng)用程序體系結(jié)構(gòu)
三層架構(gòu)
數(shù)據(jù)顯示層相互調(diào)用邏輯計(jì)算層相互調(diào)用數(shù)據(jù)處理層客戶端
應(yīng)用服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器本地用戶使用的計(jì)算機(jī),通過(guò)客戶端軟件請(qǐng)求應(yīng)用服務(wù)器提供服務(wù)。
接受客戶請(qǐng)求進(jìn)行數(shù)據(jù)計(jì)算,并把計(jì)算結(jié)果返回給客戶。JSP頁(yè)面使用的服務(wù)器,該服務(wù)器通常由JSP引擎、Servlet引擎和Web服務(wù)器構(gòu)成。
提供數(shù)據(jù)處理和事務(wù)處理。例如,SQLServer201*、MYSQL、Oracle。
二層架構(gòu)
數(shù)據(jù)展示層相互調(diào)用邏輯計(jì)算與數(shù)據(jù)處理放在同一層客戶端應(yīng)用服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器
2、應(yīng)用服務(wù)器
Web服務(wù)器
①請(qǐng)求客戶端瀏覽器③響應(yīng)Web服務(wù)器②處理JSP引擎與Servlet引擎
3、Tomcat目錄結(jié)構(gòu)
4、MyEclipse配置
配置Tomcat+JDK字體設(shè)置
5、MyEclipse中Web項(xiàng)目的建立(程序參考教材13頁(yè))
6、JSP運(yùn)行原理
任務(wù)二:添加留言頁(yè)面設(shè)計(jì)(201*-3-2)
1、相關(guān)JSP語(yǔ)法
page指令標(biāo)簽
Java代碼塊:在“”之間插入Java代碼塊表達(dá)式:在“”之間插入表達(dá)式
out內(nèi)置對(duì)象:javax.servlet.jsp.JspWriter的實(shí)例
2、相關(guān)JavaScript語(yǔ)法
如何將JavaScript代碼嵌入頁(yè)面
在頁(yè)面文檔中,使用標(biāo)記嵌入腳本代碼
/*JavaScript代碼*/
//或者:type="text/javascript"
3、知識(shí)拓展頁(yè)面刷新方法
JavaScript方式
setTimeout("self.location.reload();",1000);HTML方式
刷新測(cè)試
JSP方式
4、Dreamweaver輔助頁(yè)面設(shè)計(jì)
版權(quán)符號(hào):©空格:任務(wù)三:添加留言客戶端驗(yàn)證(201*-3-9、201*-3-16)
1、JavaScript語(yǔ)法
如何將JavaScript代碼嵌入頁(yè)面
在頁(yè)面文檔中,使用標(biāo)記嵌入腳本代碼
/*JavaScript代碼*/
JavaScript腳本代碼的位置
標(biāo)簽對(duì)可以出現(xiàn)在網(wǎng)頁(yè)文檔的任何位置,而且可以有多對(duì)頁(yè)面主體(元素):01.html頁(yè)面頭部(元素):02.html
放置在單獨(dú)的文件中,該文件以“.js”為擴(kuò)展名03.htmlm3.js
將腳本程序代碼作為屬性值
javascript
//或者:type="text/javascript"
2、FckEditor的使用
通過(guò)下載等方式得到FCKeditor,例如:FCKeditor_2.6.3.zip。將FCKeditor_2.6.3.zip解壓。
可瘦身解壓后的FCKeditor文件夾里的內(nèi)容:
刪除_samples文件夾;
刪除editor文件夾下的_source、plugins文件夾;
editor文件夾下的lang文件夾里只需保留中英文的js文件:zh.js、zh-cn.js、en.js,其它可刪除;
editor文件夾下的skin文件夾里只需保留default即可。
將瘦身后的FCKeditor文件夾整個(gè)引入項(xiàng)目的WebRoot下。在相應(yīng)頁(yè)面里添加如下代碼:
如果用FckEditor添加一個(gè)新的文本輸入域,那么在Form表單標(biāo)記里,用以下代碼取代標(biāo)簽對(duì):
vareditor=newFCKeditor("content");
editor.BasePath="web應(yīng)用根地址/fckeditor/";//例如:mybook項(xiàng)目的網(wǎng)站根地址是mybookeditor.Height=300;
editor.ToolbarSet="Default";editor.Create();
以后要想取得FckEditor文本域里的內(nèi)容,可通過(guò)“content”這個(gè)名字。
如果用于修改已有的HTML方式的文本域,那么頁(yè)面代碼的Form表單標(biāo)記里,標(biāo)簽對(duì)的位置的代碼類似下面所示:window.onload=function(){
varoFCKeditor=newFCKeditor("content");
}oFCKeditor.BasePath="/fckeditor/";//context=request.getContextPath()oFCKeditor.Height=300;
oFCKeditor.ToolbarSet="Default";
oFCKeditor.ReplaceTextarea();//替換后面的TextArea
3、JSValidation的使用
在項(xiàng)目的WebRoot下事先創(chuàng)建一個(gè)文件夾(folder),命名為:jsvalidation(或其它合法的名字)。解壓jsvalidation-1_0b4.zip。先將JSValidation文件夾中的validation-config.dtd、validation-config.xml兩個(gè)文件引入項(xiàng)目剛剛建立的文件夾“jsvalidation”下。對(duì)于JSValidation文件夾中的validation-framework.js需要更改所使用的字符集,再引入項(xiàng)目中建立的文件夾“jsvalidation”下。方法:用文本編輯器(如:記事本)打開(kāi)validation-framework.js,然后另存,選擇另存對(duì)話框里的字符集,設(shè)置為utf-8或中文字符集(如:GBK、GB2312、GB18030)。在項(xiàng)目的JSValidation文件夾里引入修改字符集后的validation-framework.js(如果事先已引入,則先刪除再引入)。打開(kāi)validation-framework.js,更改第一個(gè)非注釋行:varValidationRoot="";類似:
varValidationRoot="/mybook/jsvalidation/";然后保存。
項(xiàng)目中頁(yè)面的表單,如果要使用JSValidation驗(yàn)證框架,只要表單里元素內(nèi)容不相同或者要求不同,表單的name屬性就應(yīng)該不一樣。打開(kāi)validation-config.xml,其中已有配置的例子,再參考JSValidation驗(yàn)證框架的用戶手冊(cè)第5、6部分,即可配置自己項(xiàng)目的前臺(tái)驗(yàn)證功能。例如,對(duì)添加留言的前臺(tái)驗(yàn)證的配置如下:
在需要進(jìn)行驗(yàn)證的頁(yè)面中,加入類似下面的內(nèi)容:
在要驗(yàn)證的Form表單標(biāo)記處,增加onsubmit屬性,設(shè)置為:onsubmit="returndoValidate(this)"
4、使用FireFox錯(cuò)誤控制臺(tái)輔助調(diào)試JavaScript代碼錯(cuò)誤
任務(wù)四:添加留言功能實(shí)現(xiàn)(201*-3-23、201*-3-30、201*-4-6、201*-4-13、
201*-4-20)
1、HTML元素
參考教材Page17-22的內(nèi)容
2、MyEclipse下JavaWeb項(xiàng)目的組織框架與Tomcat下已部署(/發(fā)布)項(xiàng)目的目錄結(jié)構(gòu)對(duì)照
3、include指令標(biāo)簽
參考教材Page42-43的內(nèi)容
4、初識(shí)EL表達(dá)式
參考教材Page139
5、添加留言服務(wù)器端驗(yàn)證標(biāo)簽的action屬性
設(shè)置處理表單數(shù)據(jù)程序的URL地址
服務(wù)器端驗(yàn)證的原因
request內(nèi)置對(duì)象參考JEEAPI
getContextPath()方法:獲取Web應(yīng)用在服務(wù)器上的根目錄getParameter()方法:獲取請(qǐng)求參數(shù)
setCharacterEncoding()方法:設(shè)置從request中取出的值的編碼方式,默認(rèn)編碼方式為iso-8859-1getRequestDispatcher()方法:請(qǐng)求轉(zhuǎn)發(fā),前后頁(yè)面共享一個(gè)request。利用該方法返回的RequestDispatcher對(duì)象的forward()方法,可繼續(xù)跳轉(zhuǎn)到后一個(gè)頁(yè)面。
StringTool工具類的編寫(xiě)
packagesjzpc.jsp.tools;importjava.util.regex.Matcher;importjava.util.regex.Pattern;
publicclassStringTool{
publicstaticfinalStringEMAIL_REGEXP="\\\\w+([-+.]\\\\w+)*@\\\\w+([-.]\\\\w+)*\\\\.\\\\w+([-.]\\\\w+)*";public
static
final
String
PHONE_REGEXP
="((\\\\d{11})|^((\\\\d{7,8})|(\\\\d{4}|\\\\d{3})-(\\\\d{7,8})|(\\\\d{4}|\\\\d{3})-(\\\\d{7,8})-(\\\\d{4}|\\\\d{3}|\\\\d{2}|\\\\d{1})|(\\\\d{7,8})-(\\\\d{4}|\\\\d{3}|\\\\d{2}|\\\\d{1}))$)";
//驗(yàn)證為空
publicstaticbooleanisNull(Stringstr){}
//過(guò)濾HTML符號(hào)
publicstaticStringfilterHtml(StringstrTemp){
if(strTemp==null){}
if(strTemp.length()==0){}
Stringtemp=null;
temp=strTemp.replaceAll("&","&");temp=temp.replaceAll("",">");temp=temp.replaceAll("","");temp=temp.replaceAll(""","'");temp=temp.replaceAll("\\"",""");
returnstrTemp;returnnull;
if(str==null||str.length()==0){}
returnfalse;
returntrue;}
}temp=temp.replaceAll("\\n","");returntemp;
//驗(yàn)證E-mail
publicstaticbooleanisEmail(Stringemail){}
//驗(yàn)證電話
publicstaticbooleanisPhone(Stringphone){}
Patternp=Pattern.compile(PHONE_REGEXP);Matcherm=p.matcher(phone);if(m.matches()){}
returnfalse;
returntrue;
Patternp=Pattern.compile(EMAIL_REGEXP);Matcherm=p.matcher(email);if(m.matches()){}
returnfalse;
returntrue;
MySQL數(shù)據(jù)庫(kù)使用
字符集設(shè)置
可以通過(guò)my.ini文件進(jìn)行配置
第57行:default-character-set=gb2312#[client]的字符集設(shè)置第81行:default-character-set=utf8#[mysqld]的字符集設(shè)置
進(jìn)入MySQL字符管理界面
(說(shuō)明:可以利用其它圖形界面管理工具對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理。)
windows開(kāi)始菜單→所有程序→MySQL→MySQLServer5.0→MySQLCommandLineClient在之后的命令行窗口輸入密碼:123456(注:微三機(jī)房MySQL的密碼)
查看數(shù)據(jù)庫(kù)服務(wù)器上的所有數(shù)據(jù)庫(kù):showdatabases;創(chuàng)建數(shù)據(jù)庫(kù)
createdatabaseifnotexistsmybookdefaultcharacterset=utf8;使用某個(gè)數(shù)據(jù)庫(kù)(如mybook):usemybook;創(chuàng)建數(shù)據(jù)表
createtableifnotexistsmybook(
idintnotnullauto_incrementprimarykey,nicknamevarchar(20)notnull,emailvarchar(20),telvarchar(20),
titlevarchar(40)notnull,contenttext,timedatetimenotnull
)ENGINE=InnoDBdefaultcharacterset=utf8;查看某個(gè)數(shù)據(jù)庫(kù)中的所有表:showtables;
查看表結(jié)構(gòu):describe表名;刪表/庫(kù):drop庫(kù)名/表名;
使用腳本文件:\\.C:/mydata.sql(注意:該命令后不能跟英文分號(hào))Windows下導(dǎo)出/導(dǎo)入MySql數(shù)據(jù)庫(kù)
開(kāi)始->運(yùn)行->cmd
用cd切換到MySql安裝目錄下的bin目錄
如果導(dǎo)出,在命令行中輸入:mysqldump-u用戶名p密碼數(shù)據(jù)庫(kù)名>文件名.sql
導(dǎo)入為:mysql-u用戶名-p密碼數(shù)據(jù)庫(kù)名<文件名.sql
JDBC編程
參考教材第7章7.1~7.7的內(nèi)容注意:
本項(xiàng)目使用的是MySQL數(shù)據(jù)庫(kù),因此需將mysql-connector-java-5.1.6-bin.jar復(fù)制粘貼到
tomcat的lib文件夾里;或者復(fù)制粘貼到項(xiàng)目的lib文件夾里。
異常處理規(guī)范:盡可能在編程時(shí)處理各種可能出現(xiàn)的運(yùn)行時(shí)異常!
JDBC編程規(guī)范:針對(duì)數(shù)據(jù)庫(kù)操作的資源,在用完后要及時(shí)釋放,即程序中的相關(guān)變量賦值成null。
解決MySQL6.0(微三使用的版本是6.0)中文亂碼問(wèn)題按前述方式修改my.ini文件
寫(xiě)代碼時(shí),連接MySQL數(shù)據(jù)庫(kù)時(shí)需指定字符集,即MySQL數(shù)據(jù)庫(kù)連接字符串形如:"jdbc:mysql://localhost:3306/mybookdb?useUnicode=true&characterEncoding=utf-8"服務(wù)器端處理添加留言的流程:通過(guò)request內(nèi)置對(duì)象獲取用戶輸入的內(nèi)容(昵稱、電話、Email、主題、內(nèi)容)是昵稱、主題為空?否是Email、電話為空?否否Email、電話合法?是將用戶填寫(xiě)的內(nèi)容存入數(shù)據(jù)庫(kù):期間若發(fā)生異常,則將相關(guān)信息存入message變量;否則將message變量的值重置為:"留言被成功保存"將message變量裝入request內(nèi)置對(duì)象,頁(yè)面跳轉(zhuǎn)至結(jié)果頁(yè)面
數(shù)據(jù)庫(kù)連接池
使用目的:程序與數(shù)據(jù)庫(kù)建立連接的過(guò)程比較耗時(shí),為提高工作效率,可以在服務(wù)器啟動(dòng)時(shí),事先建立一些與數(shù)據(jù)庫(kù)的連接放在數(shù)據(jù)庫(kù)連接池中,當(dāng)程序運(yùn)行時(shí),隨時(shí)從池子中取得連接,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,操作完成,再將連接放回池子里?蓞⒖冀滩牡7章7.8.1~7.8.3的內(nèi)容本項(xiàng)目中的做法:
(1)本項(xiàng)目使用的是MySQL數(shù)據(jù)庫(kù),因此需將mysql-connector-java-5.1.6-bin.jar復(fù)制粘貼到tomcat的lib文件夾內(nèi);如果lib文件夾里已有mysql-connector-java-5.1.6-bin.jar,則不需要做這步操作。
(2)在tomcat的conf\\Catalina\\localhost文件夾(如果conf下不存在Catalina\\localhost,可以手動(dòng)建立)內(nèi)建立一個(gè).xml的文件(如mybook.xml),該文件的內(nèi)容如下:
(3)程序中,使用如下類似語(yǔ)句獲得對(duì)數(shù)據(jù)庫(kù)的連接:Contextctxt=null;DataSourceds=null;Connectionconn=null;
ctxt=(Context)newInitialContext().lookup("java:/comp/env");ds=(DataSource)ctxt.lookup("jdbc/mybookDS");conn=ds.getConnection();
DBOperate工具類的編寫(xiě)
//該類利用了Commons-DBUtils組件提供的功能packagesjzpc.jsp.tools;importjava.sql.SQLException;importjavax.naming.Context;importjavax.naming.InitialContext;importjavax.naming.NamingException;importjavax.sql.DataSource;
importorg.apache.commons.dbutils.QueryRunner;importorg.apache.commons.dbutils.ResultSetHandler;
publicclassDBOperate{
//對(duì)所有數(shù)據(jù)表都通用的操作privateDataSourceds;publicDBOperate(){}
privatevoidinit(){}
try{}
Contextcontext=newInitialContext();
ds=(DataSource)context.lookup("java:/comp/env/jdbc/mybookDS");e.printStackTrace();
init();
}catch(NamingExceptione){//更新:增刪改
intresult=0;
QueryRunnerqr=newQueryRunner(ds);try{}
returnresult==1;
result=qr.update(sql,params);e.printStackTrace();}catch(SQLExceptione){
publicbooleanupdate(Stringsql,String[]params){
}//查詢
Objectresult=null;
QueryRunnerqr=newQueryRunner(ds);try{}
returnresult;
result=qr.query(sql,params,rsh);//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){
publicObjectquery(Stringsql,String[]params,ResultSetHandlerrsh){
}}Servlet的使用
可參考教材第6章6.1~6.6的內(nèi)容
表示層的兩種架構(gòu)模式參考教材第11章11.1的內(nèi)容
Model1架構(gòu)模式瀏覽request器responseJSPJavaBeans數(shù)據(jù)庫(kù)Web服務(wù)器
Model2架構(gòu)模式
瀏覽器requestServlet數(shù)據(jù)庫(kù)responseJSPJavaBeansWeb服務(wù)器
友情提示:本文中關(guān)于《《Java Web應(yīng)用軟件開(kāi)發(fā)》考試方案》給出的范例僅供您參考拓展思維使用,《Java Web應(yīng)用軟件開(kāi)發(fā)》考試方案:該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。