Java EE應用開發(fā)實驗指導書_第1頁
Java EE應用開發(fā)實驗指導書_第2頁
Java EE應用開發(fā)實驗指導書_第3頁
Java EE應用開發(fā)實驗指導書_第4頁
Java EE應用開發(fā)實驗指導書_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、Java EE 應用開發(fā)實驗指導書應用開發(fā)實驗指導書 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 2 目錄目錄 實驗實驗 0 JSP 開發(fā)環(huán)境配置與測試開發(fā)環(huán)境配置與測試.5 【實驗目的】.5 【實驗環(huán)境】.5 【實驗指導】.5 1 JSP開發(fā)環(huán)境配置.5 1、安裝 JDK .5 2、安裝 Tomcat.5 3、安裝 Eclipse.6 4、安裝 MySQL.6 2 JSP程序開發(fā)步驟.6 實驗實驗 1 JSP 語法和內(nèi)置對象語法和內(nèi)置對象.8 【實驗目的】.8 【實驗環(huán)境】.8 【實驗指導】.8 1 JSP頁面結(jié)構(gòu).8 1.1 聲明變量與方法.8 1.2 JSP 表達式.8 1.3 JS

2、P 代碼段.9 1.4 JSP 注釋.9 2 JSP指令.10 2.1 include 指令指令 .10 3 JSP動作.10 3.1 include 動作動作 .10 3.2 forward 動作動作.10 3.3 useBean 動作、動作、setProperty 動作和動作和 getProperty 動作動作.10 4 application對象.11 【實驗報告】.11 實驗實驗 2 JSP 文件上傳與下載文件上傳與下載.12 【實驗目的】.12 【實驗環(huán)境】.12 【實驗指導】.12 1 文件上傳.12 2 文件下載.13 【實驗報告】.13 實驗實驗 3 SERVLET 應用應用.

3、15 【實驗目的】.15 【實驗環(huán)境】.15 【實驗指導】.15 1 編寫一個Servlet.15 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 3 2 部署Servlet.16 3 執(zhí)行Servlet.16 【實驗報告】.16 實驗實驗 4 MVC 綜合案例綜合案例.17 【實驗目的】.17 【實驗環(huán)境】.17 【實驗指導】.17 1 框架設計.17 2 創(chuàng)建數(shù)據(jù)庫.17 3 設計JavaBean,獲取數(shù)據(jù)庫連接.18 4登錄功能實現(xiàn).19 4.1 編寫登錄頁面.19 4.2 編寫 JavaBean,保存登錄信息,和 login 表中信息對應.19 4.3 編寫 JavaBean,實現(xiàn)和數(shù)

4、據(jù)庫的數(shù)據(jù)交互.20 4.4 編寫登錄 Servlet.23 4.5 編寫成功跳轉(zhuǎn)頁面.24 5 權限驗證.24 6 添加學生.25 6.1 新建 AddStudent.jsp 頁面.25 6.2 新建 Student 類.25 6.3 新建業(yè)務處理類.26 6.4 新建 AddStudentServlet 類,實現(xiàn)從 jsp 獲取數(shù)據(jù),最終添加到數(shù)據(jù)庫的功能。.26 6.5 顯示學生信息.26 7 其他功能實現(xiàn).26 【實驗報告】.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)合大學 JavaEE 應用開發(fā)實驗指導書 4 3.2 getParameterValues .29

6、 3.3 getParameterNames .29 4 SMARTUPLOAD類.29 4.1 上傳與下載共用的方法.30 4.2上傳文件使用的方法.30 4.3下載文件常用的方法.31 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 5 實驗實驗 0 JSP 開發(fā)環(huán)境配置與測試開發(fā)環(huán)境配置與測試 【實驗目的實驗目的】 1、了解 JSP 開發(fā)環(huán)境安裝與配置; 2、了解 JSP 開發(fā)的一般步驟。 【實驗環(huán)境實驗環(huán)境】 計算機,操作系統(tǒng) Windows XP 或更高版本。 【實驗指導實驗指導】 1 JSP 開發(fā)環(huán)境配置開發(fā)環(huán)境配置 JSP 編程使用的 Java 語言,所以運行 JSP 程序必須要

7、有 JVM 的支持,還必須要有 Java 程序開發(fā)包(JDK)的支持。現(xiàn)在企業(yè)流行的集成開發(fā)環(huán)境是 Eclipse 或 MyEclipse。大多數(shù)應用程序都需要連接數(shù)據(jù)庫,所以需要 DBMS 的支持。JSP 應用程 序是運行在服務器上的,所以需要 Web 服務器的支持,在此以 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)我的電腦-屬性-高級選項卡

8、-環(huán)境變量,打開“環(huán)境變量”對話框,在系 統(tǒng)變量中新建以下環(huán)境變量: JAVA_HOME:表示 Java SDK 的安裝目錄,其值為: D:Program FilesJavajdk1.6.0_21(根據(jù)自己的實際安裝位置進行調(diào)整) 。 CLASSPATH:表示 Java 要訪問的 jar 文件所在的目錄,其值為: %JAVA_HOME%lib;%JAVA_HOME%jrelib。 并修改 Path 環(huán)境變量,在其中增加% JAVA_HOME%bin;%JAVA_HOME%jrebin; 注意: 對于 Path 環(huán)境變量是添加,否則很多 Windows 功能不能使用;若有其他 程序要用到自己的

9、Java 環(huán)境變量,請將第步的內(nèi)容添加到 Path 環(huán)境變量的最后, 以免影響其他程序的運行。 字母不區(qū)分大小寫,大寫字母是遵照 Java 環(huán)境變量配置習慣。 (2)測試 打開 Windows 的命令行窗口(開始-運行,在彈出的窗口中輸入 cmd 回車) ,輸 入 javac 然后回車,若能顯示 javac 的幫助信息,說明 JDK 安裝成功,如下圖所示。 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 6 2、安裝、安裝 Tomcat 在 Tomcat 官方網(wǎng)站(/)上下載 Tomcat,解壓到相應目錄。 設置環(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 加壓到相應目錄。運行 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),選擇項目,Project-Properties-Java Build Path 標簽,在右邊的 Source folders on build path 內(nèi),移除所有的源文件路徑,在 Default output folder 窗口,修改為項目名/WebContent/WEB-INF/classes。 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 7 (1) 第一個第一個 JSP 頁面頁面 在項目/WebContent 中,創(chuàng)建 src 文件夾,用于保存 JSP 文件。右單擊 src 目錄, New-JSP 新建 JSP 頁面。 輸入文件名 HelloWorld.jsp,點擊確

12、定。 在頁面的標簽中,輸入以下代碼: % out.println(Hello World!); % 并保存。 (2) 調(diào)試及運行調(diào)試及運行 Demo 項目項目 按調(diào)試或運行按鈕啟動程序。 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 8 實驗實驗 1 JSP 語法和內(nèi)置對象語法和內(nèi)置對象 【實驗目的實驗目的】 1、掌握 JSP 變量/方法,表達式,代碼段和注釋的使用方法; 2、掌握 JSP 指令的語法格式及用法; 3、掌握 JSP 常用動作的語法格式及用法; 4、掌握常用的 JSP 內(nèi)置對象。 【實驗環(huán)境實驗環(huán)境】 計算機,操作系統(tǒng) Windows XP 或更高版本配有 JSP 開發(fā)環(huán)境。

13、【實驗指導實驗指導】 1 JSP 頁面結(jié)構(gòu)頁面結(jié)構(gòu) 說明:代碼如無特殊說明均寫在標簽中(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 表達式表達式 在 JSP 頁面中輸

14、入以下代碼。 b) return a; return b; int i = 3, a = 5, c=4; Date date = new Date(); % 通過上面的代碼,你認為 JSP 表達式可以出現(xiàn)什么 Java 元素? 1.3 JSP 代碼段代碼段 在 JSP 頁面中輸入以下代碼。 (中的代碼段,無論寫在多少個分離的標簽中,都必須完整,即符 合 Java 語法,比如大括號必須匹配等) 你的成績?yōu)閮?yōu)秀! 你的成績?yōu)榱己茫?你的成績?yōu)榧案瘢?你的成績?yōu)椴患案瘢?1.4 JSP 注釋注釋 輸入以下代碼,訪問你的 JSP 查看頁面源文件,你看到了什么?說明什么問題? !- - %- 北京聯(lián)合大

15、學 JavaEE 應用開發(fā)實驗指導書 10 -% 2 JSP 指令指令 2.1 include 指令指令 (1)新建 Included.jsp 頁面,在頁面中輸入以下代碼,而且只保留如下代碼: % int a=5, b=8, c=6; out.println(Hello World!); % (2)編寫 Including.jsp 頁面,在其中輸入以下代碼: 并在中輸入以下代碼: (3) 啟動 Tomcat 服務器,訪問 Including.jsp,觀察結(jié)果。 3 JSP 動作動作 3.1 include 動作動作 新建 Including2.jsp 頁面,在其中輸入以下代碼: 觀察編輯器有什

16、么提示?并想一想,include 指令和 include 動作有什么異同? 3.2 forward 動作動作 (1)新建 ForwardDemo.jsp 頁面,并輸入以下代碼: (2)新建 Forwarded.jsp,并輸入以下代碼: Forwarded.jsp (3)訪問 ForwardDemo.jsp 觀察結(jié)果,你能得出什么結(jié)論? 3.3 useBean 動作、動作、setProperty 動作和動作和 getProperty 動作動作 (1)在項目的 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)合大學 JavaEE 應用開發(fā)實驗指導書 11 學號: 姓名: (3)編寫 StudentInfoHandle.jsp,輸入以下內(nèi)容。 學生信息 學號: 姓名: (4)運行 StudentInfo.jsp,輸入學號和姓名并提交,觀察結(jié)果。 (5)*觀察 Tomcat 服務器 webapps 目錄下的 Demo 項目文件夾的結(jié)構(gòu), Student.class 在什么文件夾下?由此你得出什么結(jié)論?

18、 為了能夠輸入中文,需要對 Tomcat 配置文件作修改,在 Tomcat 安裝目錄 confserver.xml 中找到以下內(nèi)容, ,并在其中添加 URIEncoding=utf-8。 4 application 對象對象 新建 ApplicationDemo.jsp 頁面,輸入以下代碼,觀察運行結(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 對象的作用范圍是什么? 【實驗報告實驗報告】 1 page 指令都有哪些屬性,每個屬性的意義是什么? 2 taglib 指令的作用是什么?指令格式是什么? 3 本實驗未出現(xiàn)的 JSP 內(nèi)置對象還有哪些,請簡述他們的意義和作用,并模仿對 面給出的例子,自己對每個對象寫一個 JSP 實例。 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 12 實驗實驗 2 JSP 文件上傳與下載文件上傳與下載 【實驗目的實驗目的】 1、掌握利用第三方組

20、件(jspSmartUpload)實現(xiàn) JSP 文件上傳和下載; 2、掌握 jspSmartUpload 提供的 API。 【實驗環(huán)境實驗環(huán)境】 Eclipse 集成開發(fā)平臺、Tomcat 服務器;jsmartcom_zh_CN.jar 文件。 【實驗指導實驗指導】 要使用第三方組件,必須將支持的 jar 包拷貝到項目的 WEB-Inf 中 lib 目錄下,或 者拷貝到 Tomcat 安裝目錄的 lib 目錄下。 1 文件上傳文件上傳 1.1 新建 FileUpload.jsp 文件,輸入以下代碼。 選擇上傳文件 上傳文件: 1.2 新建 FileUploadHandle.jsp 實現(xiàn)文件上傳

21、。 % SmartUpload myUpload = new SmartUpload(); /上傳文件初始化 myUpload.initialize(pageContext); /設置上傳文件最大限制 100K myUpload.setMaxFileSize(100*1024); /設置允許上傳的文件類型 myUpload.setAllowedFilesList(jpg,txt); /設置禁止上傳的文件類型 myUpload.setDeniedFilesList(exe,bat,jsp); /實現(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 頁面,輸入以下代碼。 文件下載 請點擊此處下載文件 2.2 新建 FileDownloadHandle.jsp 頁面,輸入以下代碼。 2.3 在 Tomcat 安裝目錄webapps你的項目名upload 文件夾下,新建 Test.txt,并 輸入一些內(nèi)容。 2.4 運行你寫的 JSP,將 upload/Test

23、.txt 信息傳給 jsp,觀察結(jié)果。 【實驗報告實驗報告】 寫一個實現(xiàn)動態(tài)下載文件的 JSP 程序(就是用戶能夠選擇(或指定)下載文件) 。 用戶只能上傳圖片格式的文件實例 uploadimage.jsp alert(只允許上傳.jpg 和.gif 類型圖片文件); window.location=upload.htm; alert(請先選擇要上傳的文件); 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) /更改文件名,取得當前上傳時間的毫秒數(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)合大學 JavaEE 應用開發(fā)實驗指導書 15 ca

26、tch (Exception e) out.print(e.toString(); % 實驗實驗 3 Servlet 應用應用 【實驗目的實驗目的】 1、熟悉 Servlet 接口及其中規(guī)定的方法和意義; 2、掌握 Servlet 編寫、部署和運行。 【實驗環(huán)境實驗環(huán)境】 Eclipse 集成開發(fā)平臺、Tomcat 服務器。 【實驗指導實驗指導】 實現(xiàn) Servlet 有幾種方法:(1)實現(xiàn) Servlet 接口;(2)繼承 HttpServlet 類; (3)繼承 GenericServlet 類。一般情況下,需要繼承 HttpServlet 或 GenericServlet 類, 因為這樣

27、可以不必考慮與容器的交互。GenericServlet 可以處理各種網(wǎng)絡請求,而 HttpServlet 只能處理 Http 請求。 1 編寫一個編寫一個 Servlet (1)新建 ServletReq.jsp 頁面,輸入以下代碼。 姓名: (2)在 com.test 包下新建一個類 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)合大學 JavaEE 應用開發(fā)實驗指導書 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)的目標頁面。 2 部署部署 Servlet 觀察使用標注和使用 web.xml 的不同形式。如果使用 web.xml,在項目的 WebContentWEB-INFweb.xml 文件中,添加以下代碼。 FirstServlet com.test.FirstServlet FirstServlet /firstServlet 3 執(zhí)行執(zhí)行 Servlet 部署項目(注意只要修改了配置文件,就要重新部署項目,并重啟服務器)啟動 服務器,請求 ServletReq.jsp 頁面,在其中輸入姓名,提交觀察

31、運行結(jié)果。 【實驗報告實驗報告】 1、試述 Servlet 接口的定義,及其中每個方法的意義。 2、試著將部署中的和中的都改為 aaa, 重新部署并運行項目,你得到什么啟示? 3、編寫一個的 Servlet,部署并運行它。 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 17 實驗實驗 4 MVC 綜合案例綜合案例 【實驗目的實驗目的】 1、掌握基本 SQL 語句的使用; 2、掌握實際開發(fā)中軟件結(jié)構(gòu)設計; 3、理解 MVC 模式在軟件結(jié)構(gòu)設計中的運用; 4、掌握 Servlet、JavaBean 和 JSP 在軟件開發(fā)中的地位、作用及其相互關系; 5、掌握 JSP 數(shù)據(jù)庫連接與操作; 6、掌握

32、 JSP 開發(fā)應用程序的一般方法。 7、掌握 Filter 的編寫、部署、配置和應用。 【實驗環(huán)境實驗環(huán)境】 Eclipse 集成開發(fā)平臺、Tomcat 服務器和 MySQL 數(shù)據(jù)庫。 【實驗指導實驗指導】 本實驗使用 MVC 實現(xiàn)學生信息管理系統(tǒng)的基本功能。在 MVC 模式中,倡導控 制、模型(邏輯)和視圖分離,在 JSP 開發(fā)的系統(tǒng)中,Servlet 用于控制系統(tǒng)的運行流 程,JavaBean 用于業(yè)務邏輯處理、數(shù)據(jù)傳輸和數(shù)據(jù)持久化,而 JSP 用于顯示系統(tǒng)的處 理結(jié)果。相應的軟件結(jié)構(gòu)也分為 4 層:表現(xiàn)層、控制層、邏輯層和持久層,另有數(shù)據(jù) 傳輸層在各層之間傳遞數(shù)據(jù)。 1 框架設計框架設計

33、 在 Eclipse 中新建一個 Web 項目,并在 src 目錄下包含以下 Java 包: com.dao:用于存放系統(tǒng)中用到的實體類,即持久化的類,和數(shù)據(jù)庫中的某個表相 對應; com. servlet: 用于存放系統(tǒng)中的所有的 Servlet,相應于控制層; com.util:用于存放系統(tǒng)中的所有的業(yè)務處理接口(類) ,相應于業(yè)務邏輯層。 2 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 在數(shù)據(jù)庫設計中,為保證系統(tǒng)最佳的兼容性,應使所有的名稱,如數(shù)據(jù)庫名、數(shù) 據(jù)表名、字段名等,符合 C 標識符的命名原則。設計數(shù)據(jù)庫表的字段時,應根據(jù)需求, 采用最佳的數(shù)據(jù)類型。 創(chuàng)建 school 數(shù)據(jù)庫,設計實現(xiàn) role(權

34、限)、login(登錄)、student(學生)、教師 (teacher)表等。 role 包括 id、name。login 包括 name(登錄名)、password(密碼)、role(權限)信息。 student 和 teacher 表用于保存和教師與學生相關的所有信息。student 至少包含學號、姓 名等,teacher 至少包含員工號、姓名等。MySQL 的操作和相關語句如下: 打開開始-所有程序-MySql-MySQL Command Line Client 界面 輸入密碼:123456,默認的系統(tǒng)管理員的用戶名:root create database school; 創(chuàng)建數(shù)據(jù)庫

35、 show databases; 顯示現(xiàn)有的所有數(shù)據(jù)庫 use school; 進入到 school 數(shù)據(jù)庫中 create table role( id tinyint primary key, name varchar(10) ); describe role; 查看 role 表的結(jié)構(gòu) 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 18 create table login( name varchar(20) primary key, password char(8), role tinyint, foreign key(role) references role(id) ); 或創(chuàng)建

36、 login 表時,不設置 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 設計設計 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ū)動程序 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)合大學 JavaEE 應用開發(fā)實驗指導書 19 4 登錄功能登錄功能實現(xiàn)實現(xiàn) 4.1 編寫登錄頁面編寫登錄頁面 在 WebContent 文件夾下,新建 JSP 文件 index.jsp,用于收集用戶登錄名和密碼。 設計內(nèi)容以下。 用戶名 密碼 4.2 編寫編寫 JavaBean,保存登錄信息,和,保存登錄信息,和 login 表中信息對應表中信息對應 在

40、 com.util 包下按照 School 數(shù)據(jù)庫中的 login 表的格式,創(chuàng)建對應的 JavaBean 文 件 loginBean.java,用于保存一個用戶登錄的數(shù)據(jù),loginBean 中的屬性,和 login 表中 的字段和類型完全對應。 新建類文件 loginBean.java, 添加 name(String), password(String), role(byte)屬性。 出現(xiàn)黃色的警告標志,將鼠標移到 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)合大學 JavaEE 應用開發(fā)實驗指導書 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,實現(xiàn)和數(shù)據(jù)庫的數(shù)據(jù)交互,實現(xiàn)和數(shù)據(jù)庫的數(shù)據(jù)交互 在 com.dao 包中新建 loginDAO 類,用于實現(xiàn)從數(shù)據(jù)庫表到 Java 實體的轉(zhuǎn)換,實 現(xiàn)對應的添加、修改、查詢、刪除等操作。添加 login 對應的屬性和方法如下: 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 自動生成 ca

44、tch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動生成 catch 塊 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 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 自動生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動生成 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)合大學 JavaEE 應用開發(fā)實驗指導書 22 catch (SQLException e) / TODO 自動生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動生成 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 自動生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動生成 catch 塊 e.

49、printStackTrace(); return count; public List getSearch() String sql=select * from login; List list=new ArrayList(); /獲得 prepareStatement 對象 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 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 自動生成 catch 塊 e.printStackTrace(); finally try pre.close(); catch (SQLException e) / TODO 自動生成 catch 塊 e.printStackTrace(); return list; 4.4 編寫登錄編寫登錄 Servlet 在 com.servlet

51、包下新建 Servlet 文件 LoginServlet,在 class 中輸入以下的屬性, 并在對應的 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, 用戶或密碼輸入錯誤,請重新輸入); 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 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)容,作為測試 之用。 部署項目并測試。 5 權限驗證權限驗證 權限驗證的思想是:將請求頁面中設置的角色與登錄時用戶的角色進行對比,若 二者匹配或者是登錄的角色是管理員(本例中是教師) ,則允許用戶進行本次操作,否 則將用戶導向登錄頁面,重新進行登錄。 (1) 由于在系統(tǒng)中有不同的角色,各角色具有的權限不同,所以要進

55、行權限控 制,這個功能由 Filter 過濾器進行。 在 mon 包下新建 Filter 文件 AuthenticateFilter,并實現(xiàn) Filter 接口,在 doFilter 方法中輸入以下代碼: public void doFilter(ServletRequest request , ServletResponse response, FilterChain chain) throws IOException, ServletException if (request instanceof HttpServletRequest)/http 請求 HttpServletRequest

56、 req = (HttpServletRequest)request; String login = req.getParameter(login); String roleName = req.getParameter(roleName); if (null = login | .equals(login)/非登錄請求 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, 你還沒有登錄,請登錄后繼續(xù)訪問!); req.getRequestDispatcher(/index.jsp).forward(req, response); 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 25 / pass the request along the filter chain chain.doFilter(request, response); 請閱讀代碼并作出注釋,解釋代碼實現(xiàn)的業(yè)務邏輯是什么。 (2) 將 Filter

58、 部署到項目中。 修改標注WebFilter(/AuthenticateFilter),將其改為 WebFilter(/jsp/*) 也可在 web.xml 中修改如下: authenFilter mon.AuthenticateFilter authenFilter /jsp/* 6 添加學生添加學生 添加學生的功能,只能由教師進行,所以登錄為教師的用戶才能執(zhí)行此功能。根 據(jù)角色控制要求,在 jsp 文件夾下,新建相關 jsp 頁面。 6.1 新建新建 AddStudent.jsp 頁面頁面 學號: 姓名: 性別: 男 女 出生日期:格式:2010-09- 01 專業(yè): 6.2 新建新建 S

59、tudent 類類 在 com.util 包中新建 StudentBean 類,StudentBean 中,包含和 school 數(shù)據(jù)庫中 student 表字段相同的屬性和數(shù)據(jù)類型。假設學生信息只包含學號、姓名、性別,則代 北京聯(lián)合大學 JavaEE 應用開發(fā)實驗指導書 26 碼如下,請按需要設計完整的學生信息表。 Public class StudentBean private String Id; private String Name; private String Gender; /按操作,添加對應的 setter 和 getter 方法 6.3 新建業(yè)務處理類新建業(yè)務處理類 在 c

60、om.dao 包中新建 StudentDAO 類,增加對應的添加、修改、刪除、查詢方法。 參見 4.3。 6.4 新建新建 AddStudentServlet 類類,實現(xiàn)從,實現(xiàn)從 jsp 獲取數(shù)據(jù),最終添加到數(shù)據(jù)庫的功能。獲取數(shù)據(jù),最終添加到數(shù)據(jù)庫的功能。 按照 4.4 的方法步驟,配置該 Servlet。 6.5 顯示學生信息顯示學生信息 DisStudent.jsp 中主要的實現(xiàn)代碼包括: % java.util.List list=stuDAO.getSearch(); for (com.util.StudentBean stuBean:list) /獲得 StudentBean 的一

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論