版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1. 開發(fā)環(huán)境的搭建J2EE項目開發(fā)與設計學習目標了解J2EE運行環(huán)境配置掌握MyEclipse、Tomcat、JDK的安裝與集成開發(fā)了解MyEclipse開發(fā)工具的使用與優(yōu)化制作一個Web應用程序本書介紹的J2EE編程都將使用本章搭建的J2EE開發(fā)環(huán)境。為了提高開發(fā)效率,所涉及軟件均與MyEclipse進行了整合。1.1 J2EE開發(fā)環(huán)境所需軟件1.1 J2EE開發(fā)環(huán)境所需軟件本書使用的操作系統(tǒng)為32位,如果用戶的操作系統(tǒng)為64位,請在官方網(wǎng)站下載相應的軟件。1.1 J2EE開發(fā)環(huán)境所需軟件下載7.0版本下載安裝版Tomcat 7.0下載地址:/1.1 J2EE開發(fā)環(huán)境所需軟件單擊此圖標下載
2、下載合適的版本接受許可協(xié)議JDK下載地址:/technetwork/java/javase/downloads/index.html1.1 J2EE開發(fā)環(huán)境所需軟件MyEclipse的官方網(wǎng)站在國內(nèi)打不開;此處提供MyEclipse 9.0的下載鏈接地址,讀者可以通過迅雷等下載軟件下載;下載地址:http:/downloads.myeclipseide .com/downloads/products/eworkbench/helios/installers/myeclipse-9.0-offline-installer-windows.exe1.2 J2EE開發(fā)環(huán)境配置1.2 J2EE開發(fā)環(huán)境
3、配置第一步:安裝JDK 1.7默認安裝路徑:C:Program FilesJavajdk1.7.0_04注意,在安裝JDK 1.7時會同時安裝JRE 1.7默認安裝路徑:C:Program FilesJava jdk1.7.0_04jre安裝JDK 1.7JDK 1.7安裝功能選擇1.2 J2EE開發(fā)環(huán)境配置JDK1.7安裝進度自動安裝JRE1.2 J2EE開發(fā)環(huán)境配置可選安裝JavaFX SDK JavaFX SDK安裝路徑設置1.2 J2EE開發(fā)環(huán)境配置JavaFX SDK安裝進度JavaFX SDK安裝結束1.2 J2EE開發(fā)環(huán)境配置1.2 J2EE開發(fā)環(huán)境配置第二步:安裝Tomcat
4、7.0默認安裝路徑:C:Program FilesApache SoftwareFoundationTomcat 7.0Tomcat安裝歡迎界面接受許可協(xié)議1.2 J2EE開發(fā)環(huán)境配置Tomcat安裝方式選擇Tomcat簡單配置1.2 J2EE開發(fā)環(huán)境配置默認選擇JRE路徑Tomcat路徑設置1.2 J2EE開發(fā)環(huán)境配置Tomcat完成安裝1.2 J2EE開發(fā)環(huán)境配置1.2 J2EE開發(fā)環(huán)境配置第三步:安裝MyEclipse 9.0下面將MyEclipse、Tomcat和JDK進行整合,以提高開發(fā)效率。啟動MyEclipse,選擇WindowPreferences命令,然后在相應的界面中依次進
5、行設置。參數(shù)選擇整合Tomcat 7.0(一)1.2 J2EE開發(fā)環(huán)境配置整合Tomcat 7.0(二)整合Tomcat 7.0(三)1.2 J2EE開發(fā)環(huán)境配置整合Tomcat 7.0(四)1.2 J2EE開發(fā)環(huán)境配置1.2 J2EE開發(fā)環(huán)境配置 至此,MyEclipse 9.0、Tomcat 7.0與JDK 1.7三個軟件實現(xiàn)了整合,為以后開發(fā)基于J2EE的軟件提供了開發(fā)環(huán)境。1.3 MyEclipse漢化與優(yōu)化1.3 MyEclipse漢化與優(yōu)化1.3.1 MyEclipse漢化第一步:下載MyEclipse 9.0漢化包。該漢化包可從網(wǎng)上搜索并下載,搜索關鍵詞 “myeclispe 9
6、 漢化”;作者是從/f/19760689.html下載的。解壓此漢化包,文件結構如圖:1.3 MyEclipse漢化與優(yōu)化第二步:找到MyEclipse 9.0的安裝目錄??焖俨檎野惭b目錄的方法123這里MyEclipse 9.0的安裝目錄是:D:UsersAdministratorAppDataLocalGenuitec MyEclipse-9.0M11.3 MyEclipse漢化與優(yōu)化第三步:把下載的漢化包中的language文件夾粘貼到用戶安裝MyEclipse 9.0的Common文件夾中(如果沒有,就創(chuàng)建一個)1.3 MyEclipse漢化與優(yōu)化第四步:新建Java項目1231.3
7、MyEclipse漢化與優(yōu)化在Java項目中右擊src結點;選擇Paste命令將漢化包中CreatePluginsConfig.java類文件粘貼到此處。121.3 MyEclipse漢化與優(yōu)化第五步:修改CreatePluginsConfig.java文件的main()方法;設置用戶計算機中MyEclipse的安裝路徑。CreatePluginsConfig.java文件的main ()方法代碼如下:public static void main(String args) new CreatePluginsConfig(D:UsersAdministratorAppDataLocal Gen
8、uitecMyEclipse-9.0M1Commonplugins).print(); /友情提示:上面D:UsersAdministratorAppDataLocalGenuitec MyEclipse-9.0M1Commonplugins是用戶的 MyEclipse安裝路徑 1.3 MyEclipse漢化與優(yōu)化第六步:清空MyEclipse控制臺記錄1.3 MyEclipse漢化與優(yōu)化第七步:運行漢化文件CreatePluginsConfig.java(只需要運行一次,在控制臺下面會輸出英文)1231.3 MyEclipse漢化與優(yōu)化運行CreatePluginsConfig.java后的
9、控制臺日志1.3 MyEclipse漢化與優(yōu)化第八步:找到D:UsersAdministratorAppDataLocalGenuitecMyEclipse-9.0M1configuration org.eclipse.equinox.simpleconfigurator,用記事本方式把 打開,在最后一行按 Enter 鍵。再把在控制臺中顯示的內(nèi)容都粘貼到記事本中并保存。1.3 MyEclipse漢化與優(yōu)化第九步:在MyEclipse 9.0的安裝根目錄中找到myeclipse.ini文件,用記事本方式打開,在最后一行輸入語句-Duser.language=zh第十步:保存并重啟MyEclip
10、se,即可看到中文界面了1.3 MyEclipse漢化與優(yōu)化1.3.2 MyEclipse優(yōu)化啟用代碼提醒功能的方法如下:打開My Eclipes 9.0程序,選擇“窗口”“首選項”命令,打開“首選項”窗口。在左側窗格中展開Java“編輯器”結點,選擇“內(nèi)容輔助”選項,在右側窗格中添加自動激活觸發(fā)器字符1.4 使用MyEclipse 創(chuàng)建和發(fā)布Web Project 1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 1.4.1 編寫輸出HelloWorld的JSP文件創(chuàng)建HelloWorld 工程1231.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 創(chuàng)建名稱為He
11、lloWorld的工程HelloWorld工程目錄結構1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 雙擊index.jsp,找到標簽在此標簽中輸入如下代碼: 1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 1.4.2 運行JSP文件第一步:部署HelloWorld工程部署工程1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 添加到Web容器1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 選擇Tomcat為容器1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 部署工程成功1.4 使用MyEclipse創(chuàng)建和發(fā)布Web
12、project 第二步:啟動Tomcat 7.x1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 解決上圖所示問題的方法是結束Tomcat 7.x進程,1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 結束已啟用的進程1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 再次在MyEclipse中啟動Tomcat 7.x,問題得到解決。1.4 使用MyEclipse創(chuàng)建和發(fā)布Web project 第三步:打開瀏覽器,在地址欄中輸入http:/localhost:8080/HelloWorld/小 結本章著重介紹J2EE開發(fā)環(huán)境的搭建,1.4節(jié)提供了一個J
13、SP開發(fā)的例子,通過學習本例子,讀者可以對JSP開發(fā)有一個最初的認識。習 題1配置好J2EE開發(fā)環(huán)境,新建一個工程,工程名稱為Ex1。在此工程的index.jsp文件中調(diào)試如下代碼,查看運行結果,并總結JSP運行的原理。習 題2在工程Ex1中新建一個JSP頁面,實現(xiàn)如下所示的九九乘法表功能。2. JSP技術詳解J2EE項目開發(fā)與設計學習目標掌握JSP的基本語法:JSP注釋、JSP腳本元素、JSP指令、JSP動作指令。掌握JSP內(nèi)建對象。熟練使用JSP的內(nèi)置對象在開發(fā)中的應用。本章介紹了JSP的基本語法,以及為簡化JSP開發(fā)提供了一些內(nèi)建對象。首先講述了JSP內(nèi)建對象的基本概念,然后分別介紹了內(nèi)
14、建對象request、response、pageContext、session、application、out、config、page的概念和使用,最后介紹了JSP內(nèi)置對象在開發(fā)中的應用2.1 JSP技術簡介2.1 JSP技術簡介JSP(Java Server Pages)是由Sun Microsystems公司倡導、很多公司參與共同建立的一種動態(tài)網(wǎng)頁技術標準。JSP技術類似于ASP技術,它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(Tag),從而形成JSP文件(*.jsp)。 用JSP開發(fā)的Web應用是跨平臺的,既能在Linu
15、x中運行,也能在其他操作系統(tǒng)中運行。2.1 JSP技術簡介 JSP技術使用Java編程語言編寫類XML的Tags和Scriptlets來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過Tags和Scriptlets訪問存在于服務端資源的應用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設計顯式分離,支持可重用的基于組件的設計,使基于Web的應用程序開發(fā)變得迅速和容易。 2.1 JSP技術簡介 Web服務器在遇到訪問JSP的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結果和JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需的功能。2.1 JSP技術簡介JSP與
16、Java Servlet一樣,都是在服務器端執(zhí)行的。通常返回該客戶端的就是一個HTML文本,因此只要客戶端有瀏覽器就能瀏覽。 JSP 1.0規(guī)范的最后版本是1999年9月推出的,該年12月又推出了JSP 1.1規(guī)范。目前較新的是JSP 1.2規(guī)范,JSP 2.0規(guī)范的征求意見稿也已出臺。2.1 JSP技術簡介JSP由HTML代碼和嵌入其中的Java代碼組成。服務器在頁面被客戶端請求后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet 是JSP的技術基礎,大型Web應用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Java
17、技術簡單易用、完全面向?qū)ο?、具有平臺無關性、安全可靠、主要面向Internet等特點。 2.1 JSP技術簡介JSP技術的強勢 一次編寫,到處運行。系統(tǒng)的多平臺支持。強大的可伸縮性。多樣化和功能強大的開發(fā)工具支持。JSP技術的弱勢 產(chǎn)品的復雜性。難以上手產(chǎn)品更新快2.2 JSP的基本語法2.2 JSP的基本語法本節(jié)主要介紹JSP的基本結構,使讀者對JSP有一個全面的了解。例2-1是一個簡單的JSP文件。例計算1+2+100的和。 計算1+2+.+100的和 % int m=100,n=1; int sum=0; while(n 2.2 JSP的基本語法1JSP注釋為了提高程序代碼的可讀性,在編
18、寫代碼時可以加上必要的注釋,用于標注程序開發(fā)過程的開發(fā)提示。(1)HTML注釋HTML注釋主要用于在客戶端動態(tài)地顯示一個注釋,也稱輸出注釋。語法格式:2.2 JSP的基本語法(2)JSP注釋JSP注釋隱藏在JSP源代碼中,不會輸出到客戶端,也稱隱藏注釋。語法格式:(3)Scriptlets中的注釋通常使用“/”表示單選注釋,使用“/* */”表示多選注釋。在IE瀏覽器中,通過選擇“查看”菜單中的“查看源文件”命令查看注釋在客戶端的運行情況。2.2 JSP的基本語法2JSP表達式JSP提供了一種輸出表達式值的簡單方法,輸出表達式的語法格式如下:注意,使用輸出表達式的語法替代了原來的out.pri
19、ntln輸出語句,但是輸出表達式后沒有分號。2.2 JSP的基本語法3常用編譯指令JSP的編譯指令是通知JSP引擎的消息,它不直接生成輸出。編譯指令有默認值,因此開發(fā)人員不需要為每個指令設置值。(1)page指令page指令是針對當前頁面的指令,作用于整個JSP。它通常位于JSP的頂端,一個JSP可以有多條page指令,但是其屬性只能出現(xiàn)一次,重復的屬性設置將覆蓋先前的設置。語法格式:其中部分說明如下:language:定義要使用的腳本語言,目前只能使用Java,即language=java。import:和一般的Java Import意義一樣,用于引入要使用的類,只是用逗號“,”隔開包或類列
20、表。默認省略,即不引入其他類或包。默認導入的包有java.lang.*;、javax.servlet.*、javax.servlet.jsp.*和javax.servlet.http.*。導入包格式為import= java.io.*,java.util.Hashtable。2.2 JSP的基本語法2.2 JSP的基本語法session:指定所在頁面是否使用session對象。默認值為true,即session=true。buffer:指定到客戶輸出流的緩沖模式。如果為none,則不緩沖;如果指定數(shù)值,那么輸出就用不小于該值的緩沖區(qū)進行緩沖,單位為KB。buffer與autoFlash一起使用
21、,默認不小于8 KB,根據(jù)不同的服務器可設置不同大小,如buffer=64kb。2.2 JSP的基本語法autoFlash:如果為true,當緩沖區(qū)滿時,到客戶端輸出被刷新;如果為false,當緩沖區(qū)滿時,出現(xiàn)運行異常,表示緩沖區(qū)溢出。默認為true,即autoFlash=:關于JSP的信息,定義一個字符串,可以使用servlet.getServletInfo()獲得,默認省略,如info=測試頁面。2.2 JSP的基本語法sErrorPage:表明當前頁是否為其他頁的errorPage目標。如果設置為true,那么可以使用exception對象;如果設置為false,那么不
22、可以使用exception對象。默認為false,如isErrorPage=true。errorPage:定義此頁面出現(xiàn)異常時調(diào)用的頁面。默認忽略,如errorPage=error.jsp。2.2 JSP的基本語法isThreadSafe:用來設置JSP文件是否能多線程使用。如果設置為true,那么一個JSP能夠同時處理多個用戶的請求;如果設置為false,那么一個JSP只能一次處理一個請求。默認為true,如isThreadSafe=true。contentType:定義JSP字符編碼和頁面響應的MIME類型。默認值為TYPE=text/html,CHARSET=iso8859-1。例如,c
23、ontentType=text/html;charset=gb2312。注意,如果charset指令沒有設置為gb2312或UTF-8,JSP程序中的中文將顯示亂碼。2.2 JSP的基本語法pageEncoding:JSP的字符編碼,默認值為pageEncoding=iso-8859-1。例如,page Encoding=gb2312。isELIgnored:指定EL(表達式語言)是否被忽略。如果為true,則容器忽略$表達式的計算。默認值由web.xml描述文件的版本確定,servlet 2.3以前的版本將忽略,即isELIgnored=true。2.2 JSP的基本語法(2)include
24、指令include指令用來通知容器將當前JSP頁面中內(nèi)嵌的、在指定位置上的資源內(nèi)容包含。被包含的文件可以被JSP解析,這種解析發(fā)生在編譯期間。include指令的格式:2.2 JSP的基本語法使用include 指令可以把一個復雜的JSP分成若干簡單部分,這樣大大提高了JSP的管理效率,當要對頁面進行更改時,只需要更改對應的部分即可。例如把頁面分成多個區(qū),如圖2-1所示。圖2-1 include的使用2.2 JSP的基本語法注意 被include包含的文件中最好不要使用、等標簽,容易出錯。 要避免被包含和包含文件中定義相同的變量和方法。2.2 JSP的基本語法2.2.1 基本語句1條件語句條件
25、語句if語句有三種使用形式:單分支if語句、ifelse語句和多分支if語句。條件語句switch.2循環(huán)語句當型循環(huán)、dowhile循環(huán)、for循環(huán)2.2 JSP的基本語法單分支if語句的格式如下:ifelse語句的格式如下:if (表達式) 語句1;if(表達式) 語句1;else 語句2;2.2 JSP的基本語法多分支if語句的格式如下:if(表達式1) 語句1;else if(表達式2) 語句2;else if(表達式3) 語句3; else 語句n;2.2 JSP的基本語法條件語句switch的格式如下:switch(表達式)case 常量表達式1: 語句1; break; case
26、 常量表達式2: 語句2; break; case 常量表達式n: 語句n; break;default: 語句m; break;2.2 JSP的基本語法循環(huán)語句當型循環(huán)while循環(huán)是當型循環(huán),其格式如下:dowhile循環(huán)dowhile循環(huán)語句的格式如下:while (表達式) 循環(huán)體;do 循環(huán)體;while(表達式);2.2 JSP的基本語法for循環(huán)for循環(huán)的格式如下:for(表達式1;表達式2;表達式3) 循環(huán)體;2.2 JSP的基本語法2.2.2 數(shù)據(jù)類型數(shù)據(jù)的基本類型有以下四種: int長度數(shù)據(jù)類型:byte(8 bits)、short(16 bits)、int(32 bit
27、s)、long(64 bits)。 i float長度數(shù)據(jù)類型:單精度(32 bits float)、雙精度(64 bits double)。boolean類型變量的取值有:ture、false。 char數(shù)據(jù)類型:unicode字符(16位)。2.2 JSP的基本語法數(shù)據(jù)類型間相互轉(zhuǎn)換的代碼如表2-1所示。說 明代 碼將一個字符串轉(zhuǎn)換成一個Integer對象int i=Integer.valueOf(“123”).intValue()將一個字符串轉(zhuǎn)換成一個Float對象float f=Float.valueOf(“123”).floatValue()將一個字符串轉(zhuǎn)換成一個Boolean對象b
28、oolean b=Boolean.valueOf(“123”).booleanValue()將一個字符串轉(zhuǎn)換成一個Double對象double d=Double.valueOf(“123”).doubleValue()將一個字符串轉(zhuǎn)換成一個Long對象long l=Long.valueOf(“123”).longValue()將一個字符串轉(zhuǎn)換成一個Character對象char=Character.valueOf(“123”).charValue()從低精度向高精度轉(zhuǎn)換,順序為byte、short、int、long、float、double、char。2.2 JSP的基本語法注意兩個char類
29、型運算時,自動轉(zhuǎn)換為int類型;當char與其他類型運算時,也會先自動轉(zhuǎn)換為int型的,再做其他類型的自動轉(zhuǎn)換。例如,將字符串轉(zhuǎn)成整型:public static int toInt(String input)try return Integer.parseInt(input);catch(Exception e) return 0; 2.3 JSP的內(nèi)置對象 2.3 JSP的內(nèi)置對象2.3.1 request對象request封裝了用戶提交給服務器的所有信息,通過request對象可以獲取用戶提交的信息。用戶通常使用HTML中的Form表單向服務器的某個JSP或者Servlet提交信息。例如
30、: 提交內(nèi)容 2.3 JSP的內(nèi)置對象注意get()方法和post()方法的主要區(qū)別:使用get()方法提交信息會在提交時顯示在瀏覽器的地址欄中;而post()方法提交的信息不會顯示在地址欄中。提交內(nèi)容的方式:文本框、密碼框、下拉列表框、單選按鈕、多選按鈕、文本區(qū)域等。2.3 JSP的內(nèi)置對象1. 獲取用戶提交信息request對象可以使用getParameter(string s)方法獲取該表單通過text提交的信息。例如:request.getParameter(“boy”)。2.3 JSP的內(nèi)置對象one.jsp代碼: request對象使用-one.jsp one.jsp代碼:2.3
31、JSP的內(nèi)置對象 request對象使用-two.jsp 獲取文本框提交的信息: two.jsp代碼:2.3 JSP的內(nèi)置對象注意使用request對象獲取信息時,要避免使用空對象,否則會出現(xiàn)NullPointerException異常,所以用戶可進行如下處理。2.3 JSP的內(nèi)置對象2. 處理漢字信息當request對象獲取客戶提交的漢字字符時會出現(xiàn)亂碼問題,必須進行特殊處理。首先,將獲取的字符串用ISO-8859-1進行編碼,并將編碼存放到一個字節(jié)數(shù)組中,然后再將這個數(shù)組轉(zhuǎn)換為字符串對象即可。例如,將two.jsp改為“解決中文亂碼的 two.jsp”,代碼如下:2.3 JSP的內(nèi)置對象r
32、equest對象使用解決中文亂碼-two.jsp獲取文本框提交的信息: 2.3 JSP的內(nèi)置對象常用方法:getProtocol():獲取客戶向服務器提交信息所使用的通信協(xié)議,如http/1.1等。getServletPath():獲取客戶請求的JSP文件的目錄。getContentLength():獲取客戶提交的整個信息的長度。getMethod():獲取客戶提交信息的方式,如post 或get等。getHeader(String s):獲取HTTP 頭文件中由參數(shù)s指定的頭名稱的值。一般來說,s參數(shù)可取的頭名稱有:accept、referer、accept-language、content
33、-type、accept-encoding、user-agent、host、content-length、connection、cookie等。例如,s取user-agent將獲取客戶瀏覽器的版本號等信息。2.3 JSP的內(nèi)置對象getHeaderNames():獲取頭名稱的一個枚舉。getHeaders(String s):獲取頭文件中指定頭名稱的全部值的一個枚舉。getRemoteAddr():獲取客戶的IP 地址。getRemoteHost():獲取客戶機的名稱(如果獲取不到,就獲取IP 地址)。getServerName():獲取服務器的名稱。getServerPort():獲取服務器
34、的端口號。getParameterNames():獲取客戶提交的信息體部分中name 參數(shù)值的一個枚舉。2.3 JSP的內(nèi)置對象request對象使用:request對象客戶使用的協(xié)議是: 獲取接受客戶提交信息的頁面: 接受客戶提交信息的長度: 客戶提交信息的方式: 獲取HTTP頭文件中User-Agent的值: 2.3 JSP的內(nèi)置對象獲取HTTP頭文件中accept的值: 獲取HTTP頭文件中Host的值: 獲取HTTP頭文件中accept-encoding的值: 獲取客戶的IP地址: 獲取客戶機的名稱: 獲取服務器的名稱: 獲取服務器的端口號: three.jsp 詩人李白是中國歷史上哪
35、個朝代的人: 宋朝 唐朝 明朝 元朝 小說紅樓夢的作者是: 曹雪芹 羅貫中 李白 司馬遷 three.jsp代碼:four.jsp您得了分four.jsp代碼:2.3 JSP的內(nèi)置對象2.3.2 response對象response對象對客戶的請求做出動態(tài)響應,向客戶端發(fā)送數(shù)據(jù)。在某些情況下,當響應客戶時,需要將客戶重新引導至另一個頁面,可以使用response的sendRedirect(URL)方法實現(xiàn)客戶的重定向。新建一個文件goto.jsp的代碼如下所示。2.3 JSP的內(nèi)置對象goto.jspPlease select: go to Baidu go to Yahoo go to Su
36、n2.3 JSP的內(nèi)置對象response對象是一個javax.servlet.http.HttpServletResponse類的子類的對象。response的常用方法如下:addCookie(Cookie cook):添加一個cookie對象,用來保存客戶端的用戶信息。addheader(String name,String value):添加HTTP文件頭信息。constrainsHeader(String name):判斷指定名稱的HTTP文件頭是否已經(jīng)存在,返回一個布爾值。encodeURL():使用sessionId封裝URL。如果沒有必要封裝URL,則返回原值。2.3 JSP的內(nèi)
37、置對象flushBuffer():強制把當前緩沖區(qū)的內(nèi)容發(fā)送到客戶端。getBufferSize():返回緩沖區(qū)的大小。getOutputStream():返回到客戶端的輸出流對象。sendError(int):向客戶端發(fā)送錯誤的信息。例如,404是指網(wǎng)頁不存在或者請求頁面無效。sendRedirect(String url):把響應發(fā)送到另一個位置進行處理。setContentType(String contentType):設置響應的MIME類型。setHeader(String name,String value):設置指定名稱的HTTP文件頭的值。2.3 JSP的內(nèi)置對象setHead
38、er頁面自動跳轉(zhuǎn)的設置代碼如下:三秒后跳轉(zhuǎn)!如果沒有跳轉(zhuǎn),請按這里!2.3 JSP的內(nèi)置對象setHeader禁用頁面緩存。在實際的項目開發(fā)工程中,往往會用到禁用緩存技術,即如果通過后退按鈕回到了某一頁,也必須從服務器上重新讀取。例如:禁用頁面緩存2.3 JSP的內(nèi)置對象運行修改過的這個例子,就會發(fā)現(xiàn),當用戶單擊后退按鈕回到index.jsp時,頁面代碼都會被執(zhí)行一次。2.3 JSP的內(nèi)置對象2.3.3 pageContext對象pageContext對象是一個頁面上下文對象。JSP引入了一個名為pageContext的類,通過它可以訪問頁面的許多屬性。pageContext類擁有getReq
39、uest()、getResponse()、getOut()、getSession()等方法。pageContext變量存儲與當前頁面相關的pageContext對象的值。如果方法需要訪問多個與頁面相關的對象,傳遞pageContext要比傳遞request、response、out等獨立引用更容易(雖然兩種方式都能達到相同目的)。2.3 JSP的內(nèi)置對象2.3.4 session對象session對象是指客戶端與服務器的一次會話,從客戶端連到服務器的一個WebApplication開始,直到客戶端與服務器斷開連接為止。它是HttpSession類的實例。2.3 JSP的內(nèi)置對象常用方法:lon
40、g getCreationTime():返回session創(chuàng)建時間。public String getId():返回session創(chuàng)建時JSP引擎為其設置的唯一ID號。long getLastAccessedTime():返回session中客戶端最近一次的請求時間。int getMaxInactiveInterval():返回兩次請求間隔多長時間此session被取消(單位為hms)。2.3 JSP的內(nèi)置對象String getValueNames():返回一個包含此session中所有可用屬性的數(shù)組。void invalidate():取消session,使session不可用。boole
41、an isNew():返回服務器創(chuàng)建的一個session,客戶端是否已經(jīng)加入。void removeValue(String name):刪除session中指定的屬性。void setMaxInactiveInterval():設置兩次請求間隔多長時間此session被取消(單位為ms)。2.3 JSP的內(nèi)置對象2.3.5 application對象application對象實現(xiàn)了用戶間數(shù)據(jù)的共享,可存放全局變量。它開始于服務器的啟動,直到服務器關閉結束。在此期間,此對象將一直存在。在用戶的前后連接或不同用戶之間的連接中可以對此對象的同一屬性進行操作,在任何地方對此對象屬性的操作都將影響到其
42、他用戶對此對象的訪問。服務器的啟動和關閉決定了application對象的生命。它是ServletContext類的實例。2.3 JSP的內(nèi)置對象Object getAttribute(String name):返回給定名的屬性值。Enumeration getAttributeNames():返回所有可用屬性名的枚舉。void setAttribute(String name,Object obj):設定屬性的屬性值。void removeAttribute(String name):刪除一個屬性及其屬性值。String getServerInfo():返回JSP(Servlet)引擎名及版
43、本號。String getRealPath(String path):返回一個虛擬路徑的真實路徑。ServletContext getContext(String uripath):返回指定WebApplication的application2.3 JSP的內(nèi)置對象int getMajorVersion():返回服務器支持的Servlet API的最大版本號。int getMinorVersion():返回服務器支持的Servlet API的最大版本號。String getMimeType(String file):返回指定文件的MIME類型。URL getResource(String pa
44、th):返回指定資源(文件及目錄)的URL路徑。InputStream getResourceAsStream(String path):返回指定資源的輸入流。RequestDispatcher getRequestDispatcher(String uripath):返回指定資源的RequestDispatcher對象。2.3 JSP的內(nèi)置對象Servlet getServlet(String name):返回指定名的Servlet。Enumeration getServlets():返回所有Servlet的枚舉。Enumeration getServletNames():返回所有Servl
45、et名的枚舉。void log(String msg):把指定消息寫入Servlet的日志文件。void log(Exception exception,String msg):把指定異常的棧軌跡及錯誤消息寫入Servlet的日志文件。void log(String msg,Throwable throwable):把棧軌跡及給出的Throwable異常說明信息寫入Servlet的日志文件。2.3 JSP的內(nèi)置對象2.3.6 out對象out對象是一個輸出流,用來向客戶端輸出數(shù)據(jù)。out對象用于各種數(shù)據(jù)的輸出。常用方法:out.print():輸出各種類型數(shù)據(jù)。out.newLine():輸出
46、一個換行符。out.close():關閉流。2.3 JSP的內(nèi)置對象如下代碼是out對象的一個例子。three.jsp現(xiàn)在是小時分秒2.4 JSP技術應用登錄功能 2.4 JSP技術應用登錄功能 本實例的框架首頁是index.jsp,包括頂部的登錄欄login.jsp,左側的菜單欄menu.jsp,右側的主頁main.jsp。第一步:啟動MyEclipse,新建一個名為ch2-login的Web Project工程,目錄結構圖如圖2-2所示。圖2-2 ch2-login工程目錄結構圖2.4 JSP技術應用登錄功能 第二步:編輯menu.jsp文件,代碼如下所示。第三步:編輯main.jsp文件
47、,代碼如下所示。 首頁 我的日志 關于我 2.4 JSP技術應用登錄功能 第四步:編輯login.jsp文件,代碼如下所示。%if(LoginAction.equals(request.getParameter(action) String txtUsername=request.getParameter(txtUsername); String txtPassword=request.getParameter(txtPassword); /假設正確的用戶名與密碼是 admin,1234 /接下來判斷用戶輸入的用戶與密碼是否正確 if(admin.equals(txtUsername)&123
48、4.equals(txtPassword) session.setAttribute(CurrentUser,txtUsername); response.sendRedirect(index.jsp); else out.print(alert(用戶名密碼不正確);window.loaction.href (index.jsp););2.4 JSP技術應用登錄功能 % 歡迎您: 編輯個人資料 退出登錄 登錄窗口 2.4 JSP技術應用登錄功能 用戶名: 密碼: 2.4 JSP技術應用登錄功能 第五步:編輯index.jsp文件,代碼如下所示。 index.jsp 2.4 JSP技術應用登錄功
49、能 第六步:新建logout.jsp文件,實現(xiàn)退出。2.4 JSP技術應用登錄功能 第七步:部署工程并測試運行實例,如圖2-3和圖2-4所示。小 結本章主要介紹了JSP內(nèi)建對象的相關概念,并且為每個內(nèi)建對象提供了使用實例。JSP中的內(nèi)建對象有request、response、pageContext、session、application、out、config、page、exception對象。out對象是JSP開發(fā)中使用最頻繁,也是JSP初學者都需要掌握的內(nèi)建對象之一,主要作用是輸出動態(tài)內(nèi)容。初學者應重點掌握out、request、response、session的使用。本章最后結合一個實際開
50、發(fā)中的案例將JSP內(nèi)建對象的使用進行了詳細介紹。習 題配置好J2EE開發(fā)環(huán)境,新建一個工程,工程名稱為Ex2,在此工程的新建一個reg.jsp文件,界面效果如圖2-5所示。圖2-5 reg.jsp界面圖要求:當單擊圖2-5中的“提交”按鈕時,獲取表單中的注冊信息,并顯示出來。3. Servlet技術詳解J2EE項目開發(fā)與設計學習目標Servlet相關概念介紹Servlet常用的類和接口介紹使用HttpServlet處理客戶端請求使用Servlet生成動態(tài)圖像 本章首先介紹了Servet技術的工作原理,接著介紹了JSP與Servlet之間的關系、Servlet的應用范圍及其缺陷、Servlet的
51、生命周期,以及Servlet常用類、接口使用。通過本章的學習,讀者能夠掌握Servlet編程技術。3.1 Servlet技術簡介3.1 Servlet技術簡介3.1.1 Servlet的相關概念在網(wǎng)上瀏覽網(wǎng)頁時需要一個Web服務器,瀏覽網(wǎng)頁的過程就是瀏覽器通過HTTP與Web服務器交互的過程。過去大多是靜態(tài)網(wǎng)頁,因此只須把資源放在Web服務器上即可。隨著應用的發(fā)展,客戶與服務器需要動態(tài)的交互,為了實現(xiàn)這一目標,就需要開發(fā)一個遵循HTTP的服務器端應用軟件,用來處理各種請求。Servlet是一個基于Java技術的Web組件,運行在服務器端,用戶利用Servlet可以很輕松地擴展Web服務器的功能
52、,使其滿足特定的應用需要。Servlet由Servlet容器管理,Servlet容器也稱Servlet引擎,是Servlet的運行環(huán)境,為發(fā)送的請求和響應提供網(wǎng)絡服務。3.1 Servlet技術簡介 例如,Tomcat就是一個常用的Servlet容器。接收客戶端并請求做出響應的步驟如下:客戶端訪問Web服務器,發(fā)送HTTP請求Web服務器接收到請求后,傳遞給Servlet容器Servlet容器加載Servlet,產(chǎn)生Servlet實例,并向其傳遞表示請求和響應的對象Servlet得到客戶端的請求信息,并進行相應處理Servlet實例把處理結果發(fā)送回客戶端,容器負責確保響應正確送出,同時將控制返
53、回給Web服務器,如圖3-1所示3.1 Servlet技術簡介圖3-1 Servlet對客戶端提供服務的過程3.1 Servlet技術簡介3.1.2 Servlet的生命周期 Servlet部署在容器中(如Tomcat、Jboss等),它的生命周期由容器來管理。Servlet的生命周期概括為以下幾個階段:第一階段:裝載Servlet,此操作一般為動態(tài)執(zhí)行。有些服務器提供了相應的管理功能,可以在啟動時就裝載Servlet并能夠初始化特定的Servlet。第二階段:創(chuàng)建一個Servlet實例。27-8月-223.1 Servlet技術簡介第三階段:調(diào)用Servlet的init()方法。第四階段:服
54、務,如果容器接收到對此Servlet的請求,那么它將調(diào)用Servlet的service()方法。第五階段:銷毀,通過調(diào)用Servlet的destory()方法來銷毀Servlet。在以上幾個階段中,第三階段的提供服務是最重要的階段。27-8月-223.1 Servlet技術簡介3.1.3 Servlet的重要函數(shù) HttpServlet是GenericServlet的一個派生類,為基于HTTP的Servlet提供了基本的支持。HttpServlet類包含init()、destory()、Service()等方法。其中,init()和destory()方法是繼承的。3.1 Servlet技術簡介
55、1. init()方法在Servlet的生命期中,僅執(zhí)行一次init()方法。它是在服務器裝入Servlet時執(zhí)行的,可以配置服務器,以在啟動服務器或客戶機首次訪問Servlet時裝入Servlet。無論有多少客戶機訪問Servlet,都不會重復執(zhí)行init()方法。默認的init()方法通常符合要求,但也可以定制init()方法來覆蓋它,典型的是管理服務器端資源,如初始化數(shù)據(jù)庫連接等。因此,所有覆蓋init()方法的Servlet應調(diào)用super.init()以確保仍然執(zhí)行這些任務。在調(diào)用service()方法之前,就確保已完成init()方法。3.1 Servlet技術簡介2. Servi
56、ce()方法service()方法是 Servlet 的核心。每當一個客戶請求一個HttpServlet 對象,該對象的service() 方法就要被調(diào)用,而且傳遞給這個方法一個“請求”(ServletRequest)對象和一個“響應”(ServletResponse)對象作為參數(shù)。在HttpServlet 中已存在 service() 方法。默認的服務功能是調(diào)用與 HTTP 請求的方法相應的do功能。3.1 Servlet技術簡介例如,如果HTTP請求方法為GET,則默認情況下就調(diào)用doGet()。Servlet 應該為其支持的HTTP方法覆蓋do功能,因為 HttpServlet.serv
57、ice() 方法會檢查請求方法是否調(diào)用了適當?shù)奶幚矸椒?,無須覆蓋 service() 方法,只需要覆蓋相應的 do 方法即可。 Servlet的響應可以是下列幾種類型: 一個輸出流,瀏覽器根據(jù)它的內(nèi)容類型(如text/HTML)進行解釋。 一個HTTP錯誤響應, 重定向到另一個URL、Servlet、JSP。3.1 Servlet技術簡介3. destory()方法destroy()方法僅執(zhí)行一次,即在服務器停止且卸載Servlet 時執(zhí)行該方法,通常將Servlet 作為服務器進程的一部分來關閉。默認的 destroy() 方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務器端資源。例如
58、,如果 Servlet 在運行時會累計統(tǒng)計數(shù)據(jù),則可以編寫一個 destroy() 方法,用于在未裝入 Servlet 時將統(tǒng)計數(shù)字保存在文件中。 3.1 Servlet技術簡介3. destory()方法destroy()方法僅執(zhí)行一次,即在服務器停止且卸載Servlet 時執(zhí)行該方法,通常將Servlet 作為服務器進程的一部分來關閉。默認的 destroy() 方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務器端資源。例如,如果 Servlet 在運行時會累計統(tǒng)計數(shù)據(jù),則可以編寫一個 destroy() 方法,用于在未裝入 Servlet 時將統(tǒng)計數(shù)字保存在文件中。 3.1 Ser
59、vlet技術簡介當服務器卸載 Servlet 時,將在所有 service() 方法調(diào)用完成后,或在指定的時間間隔過后調(diào)用 destroy() 方法。一個Servlet 在運行service() 方法時可能會產(chǎn)生其他線程,因此請確認在調(diào)用 destroy() 方法時,這些線程已終止或完成。3.1 Servlet技術簡介4. GetServletConfig()方法GetServletConfig()方法返回一個 ServletConfig 對象,該對象用來返回初始化參數(shù)和ServletContext。ServletContext 接口提供有關Servlet的環(huán)境信息。3.1 Servlet技術
60、簡介5. GetServletInfo()方法GetServletInfo()方法是一個可選的方法,它提供有關Servlet 的信息,如作者、版本、版權等。 當服務器調(diào)用Servlet 的Service()、doGet()和doPost()方法時,均需要 “請求”和“響應”對象作為參數(shù)?!罢埱蟆睂ο筇峁┯嘘P請求的信息,而“響應”對象提供了一個將響應信息返回給瀏覽器的一個通信途徑。3.1 Servlet技術簡介javax.servlet 軟件包中的相關類為ServletResponse和ServletRequest,而javax.servlet.http 軟件包中的相關類為HttpServlet
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度健康養(yǎng)生中心加盟管理合同4篇
- 2025年度美甲店美容護膚項目合作合同4篇
- 二零二五年度特種耐火材料采購及技術服務合同4篇
- 2025版農(nóng)產(chǎn)品電商平臺客戶服務外包合同4篇
- 二零二五年度民政局離婚協(xié)議書模板版權授權協(xié)議4篇
- 二零二五年度智能機器人研發(fā)與應用股權質(zhì)押擔保合同
- 二零二五年度戀愛雙方子女撫養(yǎng)權及探望權合同2篇
- 2025年度抹灰工程施工材料采購合同范本4篇
- 2025年度農(nóng)場農(nóng)業(yè)產(chǎn)業(yè)鏈金融服務合同-@-1
- 二零二五年度高標準大棚建設與農(nóng)產(chǎn)品加工合作合同2篇
- 2024公路瀝青路面結構內(nèi)部狀況三維探地雷達快速檢測規(guī)程
- 浙江省臺州市2021-2022學年高一上學期期末質(zhì)量評估政治試題 含解析
- 2024年高考真題-地理(河北卷) 含答案
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 2024年浙江省中考科學試卷
- 2024風力發(fā)電葉片維保作業(yè)技術規(guī)范
- 《思想道德與法治》課程教學大綱
- 2024光儲充一體化系統(tǒng)解決方案
- 2024年全國高考新課標卷物理真題(含答案)
- 處理后事授權委托書
- 食材配送服務方案投標方案(技術方案)
評論
0/150
提交評論