版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java EE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 2 目錄目錄 實(shí)驗(yàn)實(shí)驗(yàn) 0 JSP 開發(fā)環(huán)境配置與測(cè)試開發(fā)環(huán)境配置與測(cè)試.5 【實(shí)驗(yàn)?zāi)康摹?5 【實(shí)驗(yàn)環(huán)境】.5 【實(shí)驗(yàn)指導(dǎo)】.5 1 JSP開發(fā)環(huán)境配置.5 1、安裝 JDK .5 2、安裝 Tomcat.5 3、安裝 Eclipse.6 4、安裝 MySQL.6 2 JSP程序開發(fā)步驟.6 實(shí)驗(yàn)實(shí)驗(yàn) 1 JSP 語法和內(nèi)置對(duì)象語法和內(nèi)置對(duì)象.8 【實(shí)驗(yàn)?zāi)康摹?8 【實(shí)驗(yàn)環(huán)境】.8 【實(shí)驗(yàn)指導(dǎo)】.8 1 JSP頁面結(jié)構(gòu).8 1.1 聲明變量與方法.8 1.2 JSP 表達(dá)式.8 1.3 JS
2、P 代碼段.9 1.4 JSP 注釋.9 2 JSP指令.10 2.1 include 指令指令 .10 3 JSP動(dòng)作.10 3.1 include 動(dòng)作動(dòng)作 .10 3.2 forward 動(dòng)作動(dòng)作.10 3.3 useBean 動(dòng)作、動(dòng)作、setProperty 動(dòng)作和動(dòng)作和 getProperty 動(dòng)作動(dòng)作.10 4 application對(duì)象.11 【實(shí)驗(yàn)報(bào)告】.11 實(shí)驗(yàn)實(shí)驗(yàn) 2 JSP 文件上傳與下載文件上傳與下載.12 【實(shí)驗(yàn)?zāi)康摹?12 【實(shí)驗(yàn)環(huán)境】.12 【實(shí)驗(yàn)指導(dǎo)】.12 1 文件上傳.12 2 文件下載.13 【實(shí)驗(yàn)報(bào)告】.13 實(shí)驗(yàn)實(shí)驗(yàn) 3 SERVLET 應(yīng)用應(yīng)用.
3、15 【實(shí)驗(yàn)?zāi)康摹?15 【實(shí)驗(yàn)環(huán)境】.15 【實(shí)驗(yàn)指導(dǎo)】.15 1 編寫一個(gè)Servlet.15 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 3 2 部署Servlet.16 3 執(zhí)行Servlet.16 【實(shí)驗(yàn)報(bào)告】.16 實(shí)驗(yàn)實(shí)驗(yàn) 4 MVC 綜合案例綜合案例.17 【實(shí)驗(yàn)?zāi)康摹?17 【實(shí)驗(yàn)環(huán)境】.17 【實(shí)驗(yàn)指導(dǎo)】.17 1 框架設(shè)計(jì).17 2 創(chuàng)建數(shù)據(jù)庫.17 3 設(shè)計(jì)JavaBean,獲取數(shù)據(jù)庫連接.18 4登錄功能實(shí)現(xiàn).19 4.1 編寫登錄頁面.19 4.2 編寫 JavaBean,保存登錄信息,和 login 表中信息對(duì)應(yīng).19 4.3 編寫 JavaBean,實(shí)現(xiàn)和數(shù)
4、據(jù)庫的數(shù)據(jù)交互.20 4.4 編寫登錄 Servlet.23 4.5 編寫成功跳轉(zhuǎn)頁面.24 5 權(quán)限驗(yàn)證.24 6 添加學(xué)生.25 6.1 新建 AddStudent.jsp 頁面.25 6.2 新建 Student 類.25 6.3 新建業(yè)務(wù)處理類.26 6.4 新建 AddStudentServlet 類,實(shí)現(xiàn)從 jsp 獲取數(shù)據(jù),最終添加到數(shù)據(jù)庫的功能。.26 6.5 顯示學(xué)生信息.26 7 其他功能實(shí)現(xiàn).26 【實(shí)驗(yàn)報(bào)告】.26 附錄附錄 JSPSMARTUPLOAD API 說明說明.28 1 FILE類.28 1.1 saveAs.28 1.2 isMissing.28 1.3
5、getFieldName.28 1.4 getFileName.28 1.5 getFilePathName.28 1.6 getFileExt.28 1.7 getSize.28 1.8 getBinaryData.29 2 FILES類.29 2.1 getCount.29 2.2 getFile.29 2.3 getSize.29 2.4 getCollection.29 2.5 getEnumeration.29 3 REQUEST類.29 3.1 getParameter .29 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 4 3.2 getParameterValues .29
6、 3.3 getParameterNames .29 4 SMARTUPLOAD類.29 4.1 上傳與下載共用的方法.30 4.2上傳文件使用的方法.30 4.3下載文件常用的方法.31 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 5 實(shí)驗(yàn)實(shí)驗(yàn) 0 JSP 開發(fā)環(huán)境配置與測(cè)試開發(fā)環(huán)境配置與測(cè)試 【實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康摹?1、了解 JSP 開發(fā)環(huán)境安裝與配置; 2、了解 JSP 開發(fā)的一般步驟。 【實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境】 計(jì)算機(jī),操作系統(tǒng) Windows XP 或更高版本。 【實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)指導(dǎo)】 1 JSP 開發(fā)環(huán)境配置開發(fā)環(huán)境配置 JSP 編程使用的 Java 語言,所以運(yùn)行 JSP 程序必須要
7、有 JVM 的支持,還必須要有 Java 程序開發(fā)包(JDK)的支持。現(xiàn)在企業(yè)流行的集成開發(fā)環(huán)境是 Eclipse 或 MyEclipse。大多數(shù)應(yīng)用程序都需要連接數(shù)據(jù)庫,所以需要 DBMS 的支持。JSP 應(yīng)用程 序是運(yùn)行在服務(wù)器上的,所以需要 Web 服務(wù)器的支持,在此以 Java 1.6 Update21、Tomcat、MySQL、Eclipse6.5 為例,安裝配置 JSP 開發(fā)環(huán)境。 1、安裝、安裝 JDK 從 Java 公司官方網(wǎng)站(http:/ JDK,雙擊下載到的 EXE 文件安裝。JDK 安裝好后,需要配置 Java 的環(huán)境變量,步驟 如下: (1)我的電腦-屬性-高級(jí)選項(xiàng)卡
8、-環(huán)境變量,打開“環(huán)境變量”對(duì)話框,在系 統(tǒng)變量中新建以下環(huán)境變量: JAVA_HOME:表示 Java SDK 的安裝目錄,其值為: D:Program FilesJavajdk1.6.0_21(根據(jù)自己的實(shí)際安裝位置進(jìn)行調(diào)整) 。 CLASSPATH:表示 Java 要訪問的 jar 文件所在的目錄,其值為: %JAVA_HOME%lib;%JAVA_HOME%jrelib。 并修改 Path 環(huán)境變量,在其中增加% JAVA_HOME%bin;%JAVA_HOME%jrebin; 注意: 對(duì)于 Path 環(huán)境變量是添加,否則很多 Windows 功能不能使用;若有其他 程序要用到自己的
9、Java 環(huán)境變量,請(qǐng)將第步的內(nèi)容添加到 Path 環(huán)境變量的最后, 以免影響其他程序的運(yùn)行。 字母不區(qū)分大小寫,大寫字母是遵照 Java 環(huán)境變量配置習(xí)慣。 (2)測(cè)試 打開 Windows 的命令行窗口(開始-運(yùn)行,在彈出的窗口中輸入 cmd 回車) ,輸 入 javac 然后回車,若能顯示 javac 的幫助信息,說明 JDK 安裝成功,如下圖所示。 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 6 2、安裝、安裝 Tomcat 在 Tomcat 官方網(wǎng)站(/)上下載 Tomcat,解壓到相應(yīng)目錄。 設(shè)置環(huán)境變量 CATALINA_HOME
10、=C:apache-tomcat- 7.0.42,PATH=%CATALINA_HOME%bin。在 IE 瀏覽器地址欄中輸入: http:/localhost:8080 回車,若能出現(xiàn) Tomcat 界面說明安裝成功。 3、安裝、安裝 Eclipse 將 Eclipse 加壓到相應(yīng)目錄。運(yùn)行 eclipse.exe。 4、安裝、安裝 MySQL 下載 MySQL 的安裝文件安裝。 2 JSP 程序開發(fā)步驟程序開發(fā)步驟 打開 Eclipse 開發(fā)環(huán)境,選擇 File-New-Dynamic Web Project,選擇 Target runtime 為 Tomcat。在 Project Exp
11、lore 內(nèi),選擇項(xiàng)目,Project-Properties-Java Build Path 標(biāo)簽,在右邊的 Source folders on build path 內(nèi),移除所有的源文件路徑,在 Default output folder 窗口,修改為項(xiàng)目名/WebContent/WEB-INF/classes。 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 7 (1) 第一個(gè)第一個(gè) JSP 頁面頁面 在項(xiàng)目/WebContent 中,創(chuàng)建 src 文件夾,用于保存 JSP 文件。右單擊 src 目錄, New-JSP 新建 JSP 頁面。 輸入文件名 HelloWorld.jsp,點(diǎn)擊確
12、定。 在頁面的標(biāo)簽中,輸入以下代碼: % out.println(Hello World!); % 并保存。 (2) 調(diào)試及運(yùn)行調(diào)試及運(yùn)行 Demo 項(xiàng)目項(xiàng)目 按調(diào)試或運(yùn)行按鈕啟動(dòng)程序。 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 8 實(shí)驗(yàn)實(shí)驗(yàn) 1 JSP 語法和內(nèi)置對(duì)象語法和內(nèi)置對(duì)象 【實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康摹?1、掌握 JSP 變量/方法,表達(dá)式,代碼段和注釋的使用方法; 2、掌握 JSP 指令的語法格式及用法; 3、掌握 JSP 常用動(dòng)作的語法格式及用法; 4、掌握常用的 JSP 內(nèi)置對(duì)象。 【實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境】 計(jì)算機(jī),操作系統(tǒng) Windows XP 或更高版本配有 JSP 開發(fā)環(huán)境。
13、【實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)指導(dǎo)】 1 JSP 頁面結(jié)構(gòu)頁面結(jié)構(gòu) 說明:代碼如無特殊說明均寫在標(biāo)簽中(JSP 代碼可以寫在網(wǎng)頁的任何位 置) 。 1.1 聲明變量與方法聲明變量與方法 新建 JSP 頁面,輸入以下代碼。 (1) 聲明變量聲明變量 刷新頁面幾次,觀察到什么結(jié)果,為什么? (2) 輸入以下代碼輸入以下代碼 b) return a; return b; % % out.println(3 和 5 中較大的是+max(3,5)+); % 將上面變量和方法的聲明,寫在 out.println();代碼段之后,再訪問 JSP 頁面,觀察 結(jié)果,為什么? 1.2 JSP 表達(dá)式表達(dá)式 在 JSP 頁面中輸
14、入以下代碼。 b) return a; return b; int i = 3, a = 5, c=4; Date date = new Date(); % 通過上面的代碼,你認(rèn)為 JSP 表達(dá)式可以出現(xiàn)什么 Java 元素? 1.3 JSP 代碼段代碼段 在 JSP 頁面中輸入以下代碼。 (中的代碼段,無論寫在多少個(gè)分離的標(biāo)簽中,都必須完整,即符 合 Java 語法,比如大括號(hào)必須匹配等) 你的成績?yōu)閮?yōu)秀! 你的成績?yōu)榱己茫?你的成績?yōu)榧案瘢?你的成績?yōu)椴患案瘢?1.4 JSP 注釋注釋 輸入以下代碼,訪問你的 JSP 查看頁面源文件,你看到了什么?說明什么問題? !- - %- 北京聯(lián)合大
15、學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 10 -% 2 JSP 指令指令 2.1 include 指令指令 (1)新建 Included.jsp 頁面,在頁面中輸入以下代碼,而且只保留如下代碼: % int a=5, b=8, c=6; out.println(Hello World!); % (2)編寫 Including.jsp 頁面,在其中輸入以下代碼: 并在中輸入以下代碼: (3) 啟動(dòng) Tomcat 服務(wù)器,訪問 Including.jsp,觀察結(jié)果。 3 JSP 動(dòng)作動(dòng)作 3.1 include 動(dòng)作動(dòng)作 新建 Including2.jsp 頁面,在其中輸入以下代碼: 觀察編輯器有什
16、么提示?并想一想,include 指令和 include 動(dòng)作有什么異同? 3.2 forward 動(dòng)作動(dòng)作 (1)新建 ForwardDemo.jsp 頁面,并輸入以下代碼: (2)新建 Forwarded.jsp,并輸入以下代碼: Forwarded.jsp (3)訪問 ForwardDemo.jsp 觀察結(jié)果,你能得出什么結(jié)論? 3.3 useBean 動(dòng)作、動(dòng)作、setProperty 動(dòng)作和動(dòng)作和 getProperty 動(dòng)作動(dòng)作 (1)在項(xiàng)目的 src 目錄下新建 com.phoenix.test 包,并在該包在新建類 Student, 并輸入以下代碼 public class S
17、tudent private Long id; private String name; /getters and setters (2)編寫 StudentInfo.jsp 頁面,輸入以下內(nèi)容。 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 11 學(xué)號(hào): 姓名: (3)編寫 StudentInfoHandle.jsp,輸入以下內(nèi)容。 學(xué)生信息 學(xué)號(hào): 姓名: (4)運(yùn)行 StudentInfo.jsp,輸入學(xué)號(hào)和姓名并提交,觀察結(jié)果。 (5)*觀察 Tomcat 服務(wù)器 webapps 目錄下的 Demo 項(xiàng)目文件夾的結(jié)構(gòu), Student.class 在什么文件夾下?由此你得出什么結(jié)論?
18、 為了能夠輸入中文,需要對(duì) Tomcat 配置文件作修改,在 Tomcat 安裝目錄 confserver.xml 中找到以下內(nèi)容, ,并在其中添加 URIEncoding=utf-8。 4 application 對(duì)象對(duì)象 新建 ApplicationDemo.jsp 頁面,輸入以下代碼,觀察運(yùn)行結(jié)果。 % Integer i = 0; i = (Integer) application.getAttribute(count); if (null = i) application.setAttribute(count, 1); out.println(你是第 1 位訪問者); else +i
19、; application.setAttribute(count,i); out.println(你是第+i+位訪問者); % 結(jié)果說明了 application 對(duì)象的作用范圍是什么? 【實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)報(bào)告】 1 page 指令都有哪些屬性,每個(gè)屬性的意義是什么? 2 taglib 指令的作用是什么?指令格式是什么? 3 本實(shí)驗(yàn)未出現(xiàn)的 JSP 內(nèi)置對(duì)象還有哪些,請(qǐng)簡述他們的意義和作用,并模仿對(duì) 面給出的例子,自己對(duì)每個(gè)對(duì)象寫一個(gè) JSP 實(shí)例。 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 12 實(shí)驗(yàn)實(shí)驗(yàn) 2 JSP 文件上傳與下載文件上傳與下載 【實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康摹?1、掌握利用第三方組
20、件(jspSmartUpload)實(shí)現(xiàn) JSP 文件上傳和下載; 2、掌握 jspSmartUpload 提供的 API。 【實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境】 Eclipse 集成開發(fā)平臺(tái)、Tomcat 服務(wù)器;jsmartcom_zh_CN.jar 文件。 【實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)指導(dǎo)】 要使用第三方組件,必須將支持的 jar 包拷貝到項(xiàng)目的 WEB-Inf 中 lib 目錄下,或 者拷貝到 Tomcat 安裝目錄的 lib 目錄下。 1 文件上傳文件上傳 1.1 新建 FileUpload.jsp 文件,輸入以下代碼。 選擇上傳文件 上傳文件: 1.2 新建 FileUploadHandle.jsp 實(shí)現(xiàn)文件上傳
21、。 % SmartUpload myUpload = new SmartUpload(); /上傳文件初始化 myUpload.initialize(pageContext); /設(shè)置上傳文件最大限制 100K myUpload.setMaxFileSize(100*1024); /設(shè)置允許上傳的文件類型 myUpload.setAllowedFilesList(jpg,txt); /設(shè)置禁止上傳的文件類型 myUpload.setDeniedFilesList(exe,bat,jsp); /實(shí)現(xiàn)文件上傳 myUpload.upload(); /保存上傳的文件 int count = myUp
22、load.save(/upload); /上傳文件的信息 for (int i=0; i 1.3 在 WebContent 目錄下新建 upload 文件夾。 1.4 執(zhí)行 FileUpload.jsp,觀察結(jié)果。 2 文件下載文件下載 2.1 新建 FileDownload.jsp 頁面,輸入以下代碼。 文件下載 請(qǐng)點(diǎn)擊此處下載文件 2.2 新建 FileDownloadHandle.jsp 頁面,輸入以下代碼。 2.3 在 Tomcat 安裝目錄webapps你的項(xiàng)目名upload 文件夾下,新建 Test.txt,并 輸入一些內(nèi)容。 2.4 運(yùn)行你寫的 JSP,將 upload/Test
23、.txt 信息傳給 jsp,觀察結(jié)果。 【實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)報(bào)告】 寫一個(gè)實(shí)現(xiàn)動(dòng)態(tài)下載文件的 JSP 程序(就是用戶能夠選擇(或指定)下載文件) 。 用戶只能上傳圖片格式的文件實(shí)例 uploadimage.jsp alert(只允許上傳.jpg 和.gif 類型圖片文件); window.location=upload.htm; alert(請(qǐng)先選擇要上傳的文件); window.location=upload.htm; % else /String myFileName=myFile.getFileName(); /取得上載的文件的文件名 ext= myFile.getFileExt(); /取得
24、后綴名 int file_size=myFile.getSize(); /取得文件的大小 String saveurl=; if(file_sizefile_size_max) /更改文件名,取得當(dāng)前上傳時(shí)間的毫秒數(shù)值 Calendar calendar = Calendar.getInstance(); String filename = String.valueOf(calendar.getTimeInMillis(); saveurl=application.getRealPath(/)+url; saveurl+=filename+.+ext; /保存路徑 myFile.saveAs(
25、saveurl,SmartUpload.SAVE_PHYSICAL); out.print(saveurl); String ret = parent.HtmlEdit.focus(); ret += var range = parent.HtmlEdit.document.selection.createRange(); ; ret += range.pasteHTML(); ; ret += alert(上傳成功!); ret += window.location=upload.htm; out.print( + ret + ); 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 15 ca
26、tch (Exception e) out.print(e.toString(); % 實(shí)驗(yàn)實(shí)驗(yàn) 3 Servlet 應(yīng)用應(yīng)用 【實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康摹?1、熟悉 Servlet 接口及其中規(guī)定的方法和意義; 2、掌握 Servlet 編寫、部署和運(yùn)行。 【實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境】 Eclipse 集成開發(fā)平臺(tái)、Tomcat 服務(wù)器。 【實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)指導(dǎo)】 實(shí)現(xiàn) Servlet 有幾種方法:(1)實(shí)現(xiàn) Servlet 接口;(2)繼承 HttpServlet 類; (3)繼承 GenericServlet 類。一般情況下,需要繼承 HttpServlet 或 GenericServlet 類, 因?yàn)檫@樣
27、可以不必考慮與容器的交互。GenericServlet 可以處理各種網(wǎng)絡(luò)請(qǐng)求,而 HttpServlet 只能處理 Http 請(qǐng)求。 1 編寫一個(gè)編寫一個(gè) Servlet (1)新建 ServletReq.jsp 頁面,輸入以下代碼。 姓名: (2)在 com.test 包下新建一個(gè)類 FirstServlet,并使它繼承 HttpServlet 類,寫入 doGet 和 doPost 方法。 package com.test; import java.io.IOException; import javax.servlet.ServletException; import javax.ser
28、vlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException doPost(req, resp); Ov
29、erride protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 16 String userName = req.getParameter(userName); userName = Hello +userName; req.setAttribute(userName,userName); req.getRequestDispatcher(/Success.jsp).forward
30、(req, resp); (3)新建 Success.jsp,作為 Servlet 執(zhí)行完畢后跳轉(zhuǎn)的目標(biāo)頁面。 2 部署部署 Servlet 觀察使用標(biāo)注和使用 web.xml 的不同形式。如果使用 web.xml,在項(xiàng)目的 WebContentWEB-INFweb.xml 文件中,添加以下代碼。 FirstServlet com.test.FirstServlet FirstServlet /firstServlet 3 執(zhí)行執(zhí)行 Servlet 部署項(xiàng)目(注意只要修改了配置文件,就要重新部署項(xiàng)目,并重啟服務(wù)器)啟動(dòng) 服務(wù)器,請(qǐng)求 ServletReq.jsp 頁面,在其中輸入姓名,提交觀察
31、運(yùn)行結(jié)果。 【實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)報(bào)告】 1、試述 Servlet 接口的定義,及其中每個(gè)方法的意義。 2、試著將部署中的和中的都改為 aaa, 重新部署并運(yùn)行項(xiàng)目,你得到什么啟示? 3、編寫一個(gè)的 Servlet,部署并運(yùn)行它。 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 17 實(shí)驗(yàn)實(shí)驗(yàn) 4 MVC 綜合案例綜合案例 【實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康摹?1、掌握基本 SQL 語句的使用; 2、掌握實(shí)際開發(fā)中軟件結(jié)構(gòu)設(shè)計(jì); 3、理解 MVC 模式在軟件結(jié)構(gòu)設(shè)計(jì)中的運(yùn)用; 4、掌握 Servlet、JavaBean 和 JSP 在軟件開發(fā)中的地位、作用及其相互關(guān)系; 5、掌握 JSP 數(shù)據(jù)庫連接與操作; 6、掌握
32、 JSP 開發(fā)應(yīng)用程序的一般方法。 7、掌握 Filter 的編寫、部署、配置和應(yīng)用。 【實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境】 Eclipse 集成開發(fā)平臺(tái)、Tomcat 服務(wù)器和 MySQL 數(shù)據(jù)庫。 【實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)指導(dǎo)】 本實(shí)驗(yàn)使用 MVC 實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)的基本功能。在 MVC 模式中,倡導(dǎo)控 制、模型(邏輯)和視圖分離,在 JSP 開發(fā)的系統(tǒng)中,Servlet 用于控制系統(tǒng)的運(yùn)行流 程,JavaBean 用于業(yè)務(wù)邏輯處理、數(shù)據(jù)傳輸和數(shù)據(jù)持久化,而 JSP 用于顯示系統(tǒng)的處 理結(jié)果。相應(yīng)的軟件結(jié)構(gòu)也分為 4 層:表現(xiàn)層、控制層、邏輯層和持久層,另有數(shù)據(jù) 傳輸層在各層之間傳遞數(shù)據(jù)。 1 框架設(shè)計(jì)框架設(shè)計(jì)
33、 在 Eclipse 中新建一個(gè) Web 項(xiàng)目,并在 src 目錄下包含以下 Java 包: com.dao:用于存放系統(tǒng)中用到的實(shí)體類,即持久化的類,和數(shù)據(jù)庫中的某個(gè)表相 對(duì)應(yīng); com. servlet: 用于存放系統(tǒng)中的所有的 Servlet,相應(yīng)于控制層; com.util:用于存放系統(tǒng)中的所有的業(yè)務(wù)處理接口(類) ,相應(yīng)于業(yè)務(wù)邏輯層。 2 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 在數(shù)據(jù)庫設(shè)計(jì)中,為保證系統(tǒng)最佳的兼容性,應(yīng)使所有的名稱,如數(shù)據(jù)庫名、數(shù) 據(jù)表名、字段名等,符合 C 標(biāo)識(shí)符的命名原則。設(shè)計(jì)數(shù)據(jù)庫表的字段時(shí),應(yīng)根據(jù)需求, 采用最佳的數(shù)據(jù)類型。 創(chuàng)建 school 數(shù)據(jù)庫,設(shè)計(jì)實(shí)現(xiàn) role(權(quán)
34、限)、login(登錄)、student(學(xué)生)、教師 (teacher)表等。 role 包括 id、name。login 包括 name(登錄名)、password(密碼)、role(權(quán)限)信息。 student 和 teacher 表用于保存和教師與學(xué)生相關(guān)的所有信息。student 至少包含學(xué)號(hào)、姓 名等,teacher 至少包含員工號(hào)、姓名等。MySQL 的操作和相關(guān)語句如下: 打開開始-所有程序-MySql-MySQL Command Line Client 界面 輸入密碼:123456,默認(rèn)的系統(tǒng)管理員的用戶名:root create database school; 創(chuàng)建數(shù)據(jù)庫
35、 show databases; 顯示現(xiàn)有的所有數(shù)據(jù)庫 use school; 進(jìn)入到 school 數(shù)據(jù)庫中 create table role( id tinyint primary key, name varchar(10) ); describe role; 查看 role 表的結(jié)構(gòu) 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 18 create table login( name varchar(20) primary key, password char(8), role tinyint, foreign key(role) references role(id) ); 或創(chuàng)建
36、 login 表時(shí),不設(shè)置 foreign key 的約束,通過 alter table(修改表)的語句修改 外鍵信息。 alter table student add constraint foreign key (role) references role (id); show tables; 查看數(shù)據(jù)庫中的表 drop table login; 刪除 login 表 drop database school; 刪除數(shù)據(jù)庫 school insert into role values(1,”admin”); insert into login values(“aaa”,”aaa”,1);
37、select * from login; 3 設(shè)計(jì)設(shè)計(jì) JavaBean,獲取數(shù)據(jù)庫連接,獲取數(shù)據(jù)庫連接 在 com.dao 包中新建 GetConnection 類,輸入以下代碼。試回顧一下,Java 連接數(shù) 據(jù)庫的內(nèi)容。 Import java.sql.*; public class GetConnection public static final String CLASSNAME = “com.mysql.jdbc.Driver”; /驅(qū)動(dòng)程序 public static final String URL = “jdbc:mysql:/localhost:3306/school”; /
38、連接字符串 public static final String USER = “root”; /數(shù)據(jù)庫用戶名 public static final String PASSWORD = “123456”; /密碼 public static Connection conn; public static Connection getConnection() try if (null = conn) Class.forName(CLASSNAME); conn = DriverManager.getConnection(URL, USER, PASSWORD); catch (ClassNotF
39、oundException e) System.out.println(“系統(tǒng)找不到指定類”); catch (SQLException e) System.out.println(“數(shù)據(jù)庫連接出現(xiàn)異?!?; return conn; 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 19 4 登錄功能登錄功能實(shí)現(xiàn)實(shí)現(xiàn) 4.1 編寫登錄頁面編寫登錄頁面 在 WebContent 文件夾下,新建 JSP 文件 index.jsp,用于收集用戶登錄名和密碼。 設(shè)計(jì)內(nèi)容以下。 用戶名 密碼 4.2 編寫編寫 JavaBean,保存登錄信息,和,保存登錄信息,和 login 表中信息對(duì)應(yīng)表中信息對(duì)應(yīng) 在
40、 com.util 包下按照 School 數(shù)據(jù)庫中的 login 表的格式,創(chuàng)建對(duì)應(yīng)的 JavaBean 文 件 loginBean.java,用于保存一個(gè)用戶登錄的數(shù)據(jù),loginBean 中的屬性,和 login 表中 的字段和類型完全對(duì)應(yīng)。 新建類文件 loginBean.java, 添加 name(String), password(String), role(byte)屬性。 出現(xiàn)黃色的警告標(biāo)志,將鼠標(biāo)移到 name 上,按提示分別添加 getter 和 setter 方法。 private String name; private String password; private
41、 byte role; public String getName() return name; public void setName(String name) = name; 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 20 public String getPassword() return password; public void setPassword(String password) this.password = password; public byte getRole() return role; public void setRole(byte r
42、ole) this.role = role; 4.3 編寫編寫 JavaBean,實(shí)現(xiàn)和數(shù)據(jù)庫的數(shù)據(jù)交互,實(shí)現(xiàn)和數(shù)據(jù)庫的數(shù)據(jù)交互 在 com.dao 包中新建 loginDAO 類,用于實(shí)現(xiàn)從數(shù)據(jù)庫表到 Java 實(shí)體的轉(zhuǎn)換,實(shí) 現(xiàn)對(duì)應(yīng)的添加、修改、查詢、刪除等操作。添加 login 對(duì)應(yīng)的屬性和方法如下: Connection con=null; private PreparedStatement pre; private ResultSet rs; public loginDAO() con=GetConnection.getConnection(); public int getInse
43、rt(loginBean login) int count=0; try String sql=insert into login(name, password, role) values(?,?,?); pre=con.prepareStatement(sql); pre.setString(1,login.getName(); pre.setString(2,login.getPassword(); pre.setByte(3, login.getRole(); count=pre.executeUpdate(); catch (SQLException e) / TODO 自動(dòng)生成 ca
44、tch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 21 e.printStackTrace(); return count; public int getDelete(String name) String sql=delete from login where name=?; int count=0; try pre=con.prepareStatement(sql); pre.setString(1, n
45、ame); count=pre.executeUpdate(); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.printStackTrace(); return count; public loginBean getSearchByname _pwd(String name,String password) String sql=select * from login wh
46、ere name=? and password=?; loginBean login=null; try pre=con.prepareStatement(sql); pre.setString(1, name); pre.setString(2,password); rs=pre.executeQuery(); if(rs.next() login=new loginBean(); login.setName(rs.getString(name); login.setPassword(rs.getString(password); login.setRole(rs.getByte(role)
47、; 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 22 catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.printStackTrace(); return login; public int getUpdate(loginBean login) String sql=update login set name=?,password=?,role=?; int count=0;
48、 try pre=con.prepareStatement(sql); pre.setString(1,login.getName(); pre.setString(2, login.getPassword(); pre.setByte(3, login.getRole(); count=pre.executeUpdate(); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.
49、printStackTrace(); return count; public List getSearch() String sql=select * from login; List list=new ArrayList(); /獲得 prepareStatement 對(duì)象 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 23 try pre=con.prepareStatement(sql); rs=pre.executeQuery(); while(rs.next() loginBean login=new loginBean(); login.setName(rs.getString
50、(name); login.setPassword(rs.getString(password); login.setRole(rs.getByte(role); list.add(login); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動(dòng)生成 catch 塊 e.printStackTrace(); return list; 4.4 編寫登錄編寫登錄 Servlet 在 com.servlet
51、包下新建 Servlet 文件 LoginServlet,在 class 中輸入以下的屬性, 并在對(duì)應(yīng)的 doGet 和 doPost 方法中,添加功能代碼。 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException / TODO Auto-generated method stub String username = request.getParameter(username); String password = re
52、quest.getParameter(password); loginBean login; loginDAO loginDao=new loginDAO(); login=loginDao.getSearchByname_pwd(username, password); String target = null; if(null != login) request.getSession().setAttribute(username, username); request.getSession().setAttribute(roleName, login.getRole(); target
53、= jsp/Main.jsp; else request.setAttribute(opTip, 用戶或密碼輸入錯(cuò)誤,請(qǐng)重新輸入); 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 24 target = /index.jsp; request.getRequestDispatcher(target).forward(request, response); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException / T
54、ODO Auto-generated method stub doGet(request,response); 該功能需要向 session 中保存數(shù)據(jù)。 4.5 編寫成功跳轉(zhuǎn)頁面編寫成功跳轉(zhuǎn)頁面 在 WebContent 下新建目錄 jsp,在其中新建 Main.jsp,輸入以下內(nèi)容,作為測(cè)試 之用。 部署項(xiàng)目并測(cè)試。 5 權(quán)限驗(yàn)證權(quán)限驗(yàn)證 權(quán)限驗(yàn)證的思想是:將請(qǐng)求頁面中設(shè)置的角色與登錄時(shí)用戶的角色進(jìn)行對(duì)比,若 二者匹配或者是登錄的角色是管理員(本例中是教師) ,則允許用戶進(jìn)行本次操作,否 則將用戶導(dǎo)向登錄頁面,重新進(jìn)行登錄。 (1) 由于在系統(tǒng)中有不同的角色,各角色具有的權(quán)限不同,所以要進(jìn)
55、行權(quán)限控 制,這個(gè)功能由 Filter 過濾器進(jìn)行。 在 mon 包下新建 Filter 文件 AuthenticateFilter,并實(shí)現(xiàn) Filter 接口,在 doFilter 方法中輸入以下代碼: public void doFilter(ServletRequest request , ServletResponse response, FilterChain chain) throws IOException, ServletException if (request instanceof HttpServletRequest)/http 請(qǐng)求 HttpServletRequest
56、 req = (HttpServletRequest)request; String login = req.getParameter(login); String roleName = req.getParameter(roleName); if (null = login | .equals(login)/非登錄請(qǐng)求 HttpSession session = req.getSession(); String username = (String) session.getAttribute(username); String sessionRoleName = (String) sessi
57、on.getAttribute(roleName); if (null != username else req.setAttribute(opTip, 你還沒有登錄,請(qǐng)登錄后繼續(xù)訪問!); req.getRequestDispatcher(/index.jsp).forward(req, response); 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 25 / pass the request along the filter chain chain.doFilter(request, response); 請(qǐng)閱讀代碼并作出注釋,解釋代碼實(shí)現(xiàn)的業(yè)務(wù)邏輯是什么。 (2) 將 Filter
58、 部署到項(xiàng)目中。 修改標(biāo)注WebFilter(/AuthenticateFilter),將其改為 WebFilter(/jsp/*) 也可在 web.xml 中修改如下: authenFilter mon.AuthenticateFilter authenFilter /jsp/* 6 添加學(xué)生添加學(xué)生 添加學(xué)生的功能,只能由教師進(jìn)行,所以登錄為教師的用戶才能執(zhí)行此功能。根 據(jù)角色控制要求,在 jsp 文件夾下,新建相關(guān) jsp 頁面。 6.1 新建新建 AddStudent.jsp 頁面頁面 學(xué)號(hào): 姓名: 性別: 男 女 出生日期:格式:2010-09- 01 專業(yè): 6.2 新建新建 S
59、tudent 類類 在 com.util 包中新建 StudentBean 類,StudentBean 中,包含和 school 數(shù)據(jù)庫中 student 表字段相同的屬性和數(shù)據(jù)類型。假設(shè)學(xué)生信息只包含學(xué)號(hào)、姓名、性別,則代 北京聯(lián)合大學(xué) JavaEE 應(yīng)用開發(fā)實(shí)驗(yàn)指導(dǎo)書 26 碼如下,請(qǐng)按需要設(shè)計(jì)完整的學(xué)生信息表。 Public class StudentBean private String Id; private String Name; private String Gender; /按操作,添加對(duì)應(yīng)的 setter 和 getter 方法 6.3 新建業(yè)務(wù)處理類新建業(yè)務(wù)處理類 在 c
60、om.dao 包中新建 StudentDAO 類,增加對(duì)應(yīng)的添加、修改、刪除、查詢方法。 參見 4.3。 6.4 新建新建 AddStudentServlet 類類,實(shí)現(xiàn)從,實(shí)現(xiàn)從 jsp 獲取數(shù)據(jù),最終添加到數(shù)據(jù)庫的功能。獲取數(shù)據(jù),最終添加到數(shù)據(jù)庫的功能。 按照 4.4 的方法步驟,配置該 Servlet。 6.5 顯示學(xué)生信息顯示學(xué)生信息 DisStudent.jsp 中主要的實(shí)現(xiàn)代碼包括: % java.util.List list=stuDAO.getSearch(); for (com.util.StudentBean stuBean:list) /獲得 StudentBean 的一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度大數(shù)據(jù)分析處理個(gè)人勞務(wù)合同3篇
- 2025年浙江嘉興市海寧市城投集團(tuán)招聘筆試參考題庫含答案解析
- 二零二五年度鞋類產(chǎn)品回收與再利用技術(shù)研究合同3篇
- 2025年度個(gè)人健康保險(xiǎn)連帶擔(dān)保協(xié)議4篇
- 2025年遼寧鞍山國家高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)國有企業(yè)招聘筆試參考題庫附帶答案詳解
- 2025年度個(gè)人果園生態(tài)旅游開發(fā)與承包經(jīng)營合同4篇
- 二零二五年度綠色能源貸款擔(dān)保服務(wù)協(xié)議4篇
- 二零二五年度門窗五金件行業(yè)人才培養(yǎng)與引進(jìn)合同4篇
- 二零二五年度民辦學(xué)校學(xué)生宿舍維修與設(shè)施更新合同4篇
- 2025年度智能門禁系統(tǒng)節(jié)能環(huán)保改造合同文檔4篇
- 第22單元(二次函數(shù))-單元測(cè)試卷(2)-2024-2025學(xué)年數(shù)學(xué)人教版九年級(jí)上冊(cè)(含答案解析)
- 藍(lán)色3D風(fēng)工作總結(jié)匯報(bào)模板
- 安全常識(shí)課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 2024年江蘇省導(dǎo)游服務(wù)技能大賽理論考試題庫(含答案)
- 2024年中考英語閱讀理解表格型解題技巧講解(含練習(xí)題及答案)
- 新版中國食物成分表
- 浙江省溫州市溫州中學(xué)2025屆數(shù)學(xué)高二上期末綜合測(cè)試試題含解析
- 2024年山東省青島市中考生物試題(含答案)
- 保安公司市場(chǎng)拓展方案-保安拓展工作方案
- GB/T 15843.2-2024網(wǎng)絡(luò)安全技術(shù)實(shí)體鑒別第2部分:采用鑒別式加密的機(jī)制
評(píng)論
0/150
提交評(píng)論