




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章JavaWeb開發環境的構建學習目的與要求本章對開發工具與環境配置進行簡要介紹。通過本章的學習,掌握使用IntelliJIDEA平臺開發JavaWeb應用的基本步驟。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.1構建開發環境1.2使用IntelliJIDEA開發Web應用1.1.1開發工具1.Java開發工具包(JDK)JSP引擎需要Java語言的核心庫和相應編譯器,在安裝JSP引擎之前,需要安裝Java標準版(Java
SE)提供的開發工具包JDK。登錄/technetwork/java,根據操作系統的位數,下載相應的JDK,例如64位的系統使用64位的JDK。本書采用的JDK是jdk-18_windows-x64_bin.exe。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.1.1開發工具2.JSP引擎運行包含JSP頁面的Web項目還需要一個支持JSP的Web服務軟件,該軟件也稱作JSP引擎或JSP容器,通常將安裝了JSP引擎的計算機稱為一個支持JSP的Web服務器。目前,比較常用的JSP引擎包括Tomcat,JRun,Resin,WebSphere,WebLogic等,本書采用的是Tomcat
10.0。登錄Apache
軟件基金會的官方網站http://jakarta.A/tomcat,下載Tomcat10.0的免安裝版(本書采用apache-tomcat-10.0.23-windows-x64.zip)。登錄網站后,首先在Download里選擇Tomcat
10.0,然后在Binary
Distributions的Core中選擇zip即可。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.1.1開發工具3.IntelliJ
IDEA為了提高開發效率,通常需要安裝IDE(集成開發環境)工具,在本書中使用的IDE工具是IntelliJ
IDEA。IntelliJ
IDEA是Java編程語言的集成開發環境,可用于開發JSP程序的IDE工具。登錄/idea/,根據操作系統下載相應的IntelliJ
IDEA。本書采用的是WindowsUltimate版ideaIU-2022.2.1。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.1.2工具集成《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
如果你的電腦上,已經安裝了IntelliJIDEA(本書使用的是ideaIU-2022.2.1),那么你可以使用IntelliJIDEA便捷地構建JavaWeb應用。雖然IntelliJIDEA自帶OpenJDK,但建議在使用前事先安裝并配置JDK和Web服務器。1.安裝JDK《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
可以登錄Oracle官方網站/technetwork/java,根據操作系統的位數,下載相應的JDK,例如64位的系統使用64位的JDK。本書采用的JDK是jdk-18_windows-x64_bin.exe。JDK18的安裝程序默認將常用的開發工具(包括java.exe、javac.exe、javaw.exe以及jshell.exe)自動復制到C:\ProgramFiles\CommonFiles\Oracle\Java\javapath目錄中,并將該目錄自動添加到Path環境變量中。因此,如果僅需要使用這些常用的開發工具,不再需要配置環境變量。2.Tomcat的安裝《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目前,比較常用的Web服務器包括Tomcat,JRun,Resin,WebSphere,WebLogic等,本書采用的是Tomcat10.0。登錄Apache
軟件基金會的官方網站http://jakarta.A/tomcat,下載Tomcat10.0的免安裝版(本書采用apache-tomcat-10.0.23-windows-x64.zip)。登錄網站后,首先在Download里選擇Tomcat10,然后在BinaryDistributions的Core中選擇相應版本即可下載。將下載的apache-tomcat-10.0.23-windows-x64.zip解壓到某個目錄下即可完成安裝。3.集成Tomcat《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
啟動IntelliJIDEA,選擇File/Settings菜單項,在彈出的對話框中選擇Build,Execution,Deployment/ApplicationServers命令。在彈出的窗口中,選擇+/TomcatServer菜單項,彈出如圖1.6所示的TomcatServer界面,在此選擇Tomcat目錄。目錄《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.1構建開發環境1.2使用IntelliJIDEA開發Web應用1.2.1JSP運行原理1.JSP文件一個JSP文件中可以有普通的HTML標記、JSP規定的標記以及Java程序。JSP文件的擴展名是.jsp,文件名字必須符合標識符規定,即名字可以由字母、下劃線、美元符號和數字組成。2.JSP運行原理當Web服務器上的一個JSP頁面第一次被客戶端請求執行時,Web服務器上的JSP引擎首先將JSP文件轉譯成一個Java文件,并將Java文件編譯成字節碼文件,字節碼文件在服務器端創建一個Servlet對象,然后執行該Servlet對象,同時發送一個HTML頁面到客戶端響應客戶端的請求。當這個JSP頁面再次被請求時,JSP引擎為每個客戶端啟動一個線程并直接執行對應的Servlet對象響應客戶端的請求,這也是JSP響應速度比較快的原因之一。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.2.2一個簡單的Web應用使用IntelliJIDEA開發一個Web應用需要如下三個步驟: 創建Web項目 添加Tomcat依賴 創建JSP文件 發布項目到Tomcat并運行《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.創建Web項目首先,使用IntelliJIDEA創建一個名為ch1的項目。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.創建Web項目其次,右擊項目名稱ch1,選擇AddFrameWorkSupport菜單項,給項目ch1添加WebApplication。(如果找不到AddFrameWorkSupport,選中模塊名雙擊Shift鍵->Actions選項中打開AddFrameWorkSupport)《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.添加Tomcat依賴ch1項目創建完成后,選擇File->Project
Structure菜單項,打開Project
Structure界面。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.創建JSP文件(1)選中ch1項目的web節點,右擊,在打開的快捷菜單中,選擇“New”—>“JSP/JSPX”,打開“Create
JSP/JSPX
page”對話框,如圖1.11所示。在該對話框的“Name”文本框中輸入文件名myFirst.jsp,按下“Enter”回車鍵即可完成JSP文件的創建。(2)JSP創建完成后,在ch1項目的web節點下,自動添加一個名稱為myFirst.jsp的JSP文件,同時,IntelliJ
IDEA會自動將JSP文件在右側的編輯框中打開。(3)修改myFirst.jsp文件中的默認代碼。(4)將編輯好的JSP頁面保存(ctrl+s)(IntelliJIDEA會自動保存),至此完成一個簡單的JSP程序創建。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
4.發布項目到Tomcat并運行在IntelliJIDEA中第一次運行Java
Web應用時,需要將應用發布到Tomcat,具體步驟如下。在IntelliJ
IDEA主界面中,單擊如圖1.12所示的白色向下三角符號,選擇Edit
Configurations菜單項,打開如圖1.13所示的服務器選擇界面。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
4.發布項目到Tomcat并運行在圖1.13中,選擇Tomcat
Server的Local選項打開Deployment界面,如圖1.14所示。按照圖1.14的操作順序,打開如圖1.15所示的界面,并修改應用的上下文路徑。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
4.發布項目到Tomcat并運行單擊圖1.15中的OK按鈕,即可將項目ch1發布到Tomcat。發布成功后,回到如圖1.16所示的IntelliJ
IDEA主界面。單擊圖1.16中的三角符號啟動Tomcat,即可運行Web應用ch1,如圖1.17所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.2.3實踐環節——使用IntelliJIDEA開發Web應用1.創建一個名稱為sencondTest的項目。2.在sencondTest項目中創建一個名稱為yourFirst.jsp文件,在JSP頁面中顯示“不錯!不錯!自己能創建JSP文件了,并且可以發布運行了”。3.發布并運行sencondTest項目。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
本章小結本章主要介紹了Java
Web集成開發環境的構建,用到的工具有:JDK、Tomcat和IntelliJ
IDEA。它們的安裝順序由先到后依次是JDK、Tomcat、IntelliJ
IDEA。Tomcat
是一個支持JSP的Web服務軟件,該軟件也稱作JSP引擎或JSP容器。JSP引擎是支持JSP程序的Web容器,負責運行JSP程序,并將有關結果發送給客戶端。目前流行的JSP引擎有:Tomcat、Resin、JRun、WebSphere、WebLogic等等,本書使用的是Tomcat服務器。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
第2章JSP語法學習目的與要求本章主要介紹JSP腳本元素、JSP指令標記和JSP動作標記。通過本章的學習,理解JSP頁面的組成部分,掌握JSP語法,能夠使用JSP開發Web頁面。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.1JSP頁面的基本構成2.2JSP腳本元素2.3JSP指令標記2.4JSP動作標記2.1.1一個JSP頁面在HTML靜態頁面文件中加入和Java相關的動態元素,就構成了一個JSP頁面。一個JSP頁面通常由4種基本元素組成:1.普通的HTML標記。2.JSP注釋。3.Java腳本元素,包括聲明、Java程序片和Java表達式。4.JSP標記,如指令標記、動作標記和自定義標記等。【例2-1】根據example2_1.jsp代碼中的注釋,識別JSP頁面的基本元素。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.1.2JSP頁面注釋JSP頁面中常見的注釋有以下兩種:1.HTML注釋格式:<!--HTML注釋-->在標記符“<!--”和“-->”之間加入注釋內容,就構成了HTML注釋。JSP引擎對于HTML注釋也要進行處理,即不將它看作是注釋,如果其中有JSP代碼,也將被JSP引擎處理。JSP引擎將處理之后的HTML注釋交給客戶端,通過瀏覽器查看JSP源文件時,能夠看到HTML注釋。2.JSP注釋格式:<%--JSP注釋--%>在標記符“<%--”和“--%>”之間加入注釋內容,就構成了JSP注釋。JSP引擎將JSP注釋當作是真正的注釋,在編譯JSP頁面時忽略這部分代碼。因此,通過瀏覽器查看JSP源文件時,無法看到JSP注釋。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.1.3實踐環節——識別JSP頁面元素<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><!--學習JSP頁面的基本構成--><%! Stringcontent="JSP頁面基本構成:";%><html><head><metacharset="UTF-8"><title>shijian2_1.jsp</title></head><body><%content=content+"HTML標記、JSP注釋、JSP標記以及Java腳本元素";%><%=content%></body></html>《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.1JSP頁面的基本構成2.2JSP腳本元素2.3JSP指令標記2.4JSP動作標記2.2.1Java程序片在標記符“<%”和“%>”之間插入的Java代碼被稱作JSP頁面的Java程序片。Java程序片格式如下:<%Java代碼%>一個JSP頁面可以有任意段Java程序片,這些程序片將被JSP引擎(本書中指Tomcat服務器)按順序執行。在一個程序片中聲明的變量稱為JSP頁面的局部變量,它們在JSP頁面后繼的所有程序片以及表達式內都有效。當多個客戶請求一個JSP頁面時,JSP引擎為每個客戶啟動一個線程,不同的線程會分別執行該JSP頁面中的Java程序片,程序片中的局部變量會在不同的線程中被分配不同的內存空間。因此,一個客戶對JSP頁面局部變量操作的結果,不會影響到其他客戶。Java程序片執行原理如圖2.1所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.2.1Java程序片《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
JSP頁面Java程序片局部變量客戶1線程客戶2線程客戶3線程JSP引擎Java程序片局部變量Java程序片局部變量Java程序片局部變量內存圖2.1Java程序片執行原理【例2-2】編寫1個JSP頁面example2_2.jsp,頁面中存在一段Java程序片,該程序片內聲明了一個整型的局部變量n,初始值為0。2.2.2成員變量與方法的聲明<%!變量或方法定義%>在標記符“<%!”和“%>”之間聲明的變量被稱作JSP頁面的成員變量,它們可以是Java
語言允許的任何數據類型,例如:<%!intn=0;Datedate;%>成員變量在整個JSP頁面內都有效(與書寫位置無關),因為JSP引擎將JSP頁面轉譯成Java
文件時,將這些變量作為類的成員變量,這些變量的內存空間直到服務器關閉才釋放。因此,多個用戶共享JSP頁面的成員變量。任何用戶對JSP頁面成員變量操作的結果,都會影響到其他用戶。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.2.2成員變量與方法的聲明在標記符“<%!”和“%>”之間聲明的方法被稱作JSP頁面的成員方法,該方法在整個JSP頁面內有效,但是該方法內定義的變量僅在該方法內有效。【例2-3】編寫1個JSP頁面example2_3.jsp,頁面中聲明一個成員變量n(初始值為0)和方法add(求兩個整數的和)。另外,頁面中還有一段Java程序片,在程序片中聲明一個局部變量m,并且對成員變量n和局部變量m分別進行自加。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.2.3Java表達式在標記符“<%=”和“%>”之間可以插入一個表達式,這個表達式必須能求值。表達式的值由Web服務器負責計算,并將計算結果用字符串形式發送到客戶端,作為HTML頁面的內容顯示。Java表達式中可以有算術表達式、邏輯表達式或條件表達式等。但使用Java表達式時,應該注意以下兩點:1.不可在“<%=”和“%>”之間插入語句,即:輸入的內容末尾不能以分號結束。2.“<%=”是一個完整的符號,“<%”和“=”之間不能有空格。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.2.4實踐環節——在JSP頁面輸出英文字母表編寫1個JSP頁面,在JSP頁面中使用Java程序片輸出26個小寫的英文字母表。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.2.5實踐環節——網站訪問量的統計利用成員變量被所有客戶共享這一性質,實現一個簡單的計數器,頁面效果如圖2.3所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.2.6實踐環節——打印表格在瀏覽器中輸出大小為15*10表格,頁面效果如圖2.4所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.1JSP頁面的基本構成2.2JSP腳本元素2.3JSP指令標記2.4JSP動作標記2.3.1page指令page指令標記用來定義整個JSP頁面的一些屬性和這些屬性的值。可以用一個page指令指定多個屬性的值,也可以使用多個page指令分別為每個屬性指定值。page指令的格式如下:<%@page
屬性1="屬性1的值"屬性2="屬性2的值"…%>或者<%@page
屬性1="屬性1的值"%><%@page
屬性2="屬性2的值"%><%@page
屬性3="屬性3的值"%>….<%@page
屬性n="屬性n的值"%>page指令的主要屬性有contentType、import、language和pageEncoding等。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.3.1page指令JSP頁面使用page指令標記只能為contentType屬性指定一個值,用來確定響應的MIME類型(MIME類型就是設定某種文件用對應的一種應用程序來打開的方式類型)。當用戶請求一個JSP頁面時,服務器會告訴瀏覽器使用contentType屬性指定的MIME類型來解釋執行所接收到的服務器為之響應信息。例如,瀏覽器使用word應用程序打開用戶請求時,可以將contentType屬性值設置為:<%@page
contentType="application/msword;charset=UTF-8"%>常見的MIME類型有:text/html(HTML解析器,所謂的網頁形式)、text/plain(普通文本)、application/pdf(PDF文檔)、application/msword(word應用程序)、image/jpeg(JPEG圖形)、image/png(PNG圖像)、image/gif(GIF圖形)以及application/vnd.ms-powerpoint(powerpoint應用程序)。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.3.1page指令2.屬性importJSP頁面使用page指令標記可為import屬性指定多個值,import屬性的作用是為JSP頁面引入包中的類,以便在JSP頁面的程序片、變量及方法聲明或表達式中使用包中的類。3.屬性languagelanguage屬性用來指定JSP頁面使用的腳本語言,目前該屬性的值只能取"java"。4.屬性pageEncodingcontentType中的charset是指服務器發送給客戶瀏覽器時所見到的網頁內容的編碼;pageEncoding是指JSP文件自身存儲時所用的編碼。在JSP規范中,如果pageEncoding屬性存在,那么JSP頁面的字符編碼方式就由pageEncoding決定,否則就由contentType屬性中的charset決定,如果charset也不存在,JSP頁面的字符編碼方式就采用默認的ISO-8859-1。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.3.2include指令include指令標記的作用就是將JSP文件、HTML網頁文件或其他文本文件靜態嵌入到當前的JSP網頁中,該指令的語法格式如下:<%@includefile="文件的URL"%>所謂靜態嵌入就是“先包含后處理”,在編譯階段完成對文件的嵌入。即:先將當前JSP頁面與要嵌入的文件合并成一個新的JSP頁面,然后再由JSP引擎將新頁面轉化為Java文件處理并運行。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.3.2include指令【例2-4】編寫兩個JSP頁面example2_4.jsp和example2_4_1.jsp,在example2_4.jsp頁面中使用include指令標記靜態嵌入example2_4_1.jsp頁面,訪問example2_4.jsp頁面,運行效果如圖2.6所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
example2_4.jspexample2_4_1.jspexample2_4.jspexample2_4_1.jspexample2_4_jsp.java圖2.6靜態嵌入的原理2.3.3實踐環節——制作導航欄編寫3個JSP頁面index.jsp、main.jsp和head.jsp,在index.jsp和main.jsp頁面中分別使用include指令靜態嵌入head.jsp(導航欄)。導航欄head.jsp的運行效果如圖2.7所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.1JSP頁面的基本構成2.2JSP腳本元素2.3JSP指令標記2.4JSP動作標記2.4JSP動作標記常用的JSP動作標記有include、forward、param、useBean、GetProperty和setProperty。useBean、GetProperty和setProperty將在本書的第4章介紹。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.4.1include動作標記動作標記include的作用是將JSP文件、HTML網頁文件或其他文本文件動態嵌入到當前的JSP網頁中,該指令的語法有以下兩種格式:<jsp:includepage="文件的URL"/>或<jsp:includepage="文件的URL">
子標記<jsp:include/>當動作標記include不需要子標記時,使用上述第一種形式。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.4.1include動作標記所謂動態嵌入就是“先處理后包含”,在運行階段完成對文件的嵌入。即:在將JSP頁面轉譯成Java文件時,并不合并兩個頁面;而是在Java文件的字解碼文件被加載并執行時,才去處理include動作標記中引入的文件。與靜態嵌入方式相比,動態嵌入的執行速度稍慢,但是靈活性較高。【例2-5】編寫兩個JSP頁面example2_5.jsp和example2_5_1.jsp,在example2_5.jsp頁面中使用include標記動態嵌入example2_5_1.jsp頁面。運行example2_5.jsp頁面。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.4.2forward動作標記動作標記forward的作用是:從該標記出現處停止當前JSP頁面的繼續執行,從而轉向執行forward動作標記中page屬性值指定的JSP頁面。該標記有兩種格式:<jsp:forwardpage="文件的URL"/>或<jsp:forwardpage="文件的URL">
子標記</jsp:forward>當動作標記forward不需要子標記時,使用上述第一種形式。【例2-6】編寫3個JSP頁面example2_6.jsp、oddNumber.jsp和evenNumbers.jsp。在example2_6.jsp頁面中隨機獲取0~10之間的整數,該數為偶數時轉向頁面evenNumbers.jsp,否則轉向頁面oddNumber.jsp。首先訪問example2_6.jsp頁面。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.4.3param動作標記動作標記param不能獨立使用,但可以作為include、forward動作標記的子標記來使用,該標記以“名字-值”對的形式為對應頁面傳遞參數。該標記的格式為:<jsp:父標記page="接收參數頁面的URL">
<jsp:paramname="參數名"value="參數值"/></jsp:父標記>接收參數的頁面可以使用內置對象request調用getParameter("參數名")方法獲取動作標記param傳遞過來的參數值,內置對象將在本書第3章介紹。【例2-7】編寫兩個頁面example2_7.jsp和computer.jsp,在頁面example2_7.jsp中使用include動作標記動態包含文件computer.jsp,并向它傳遞一個矩形的長和寬;computer.jsp收到參數后,計算矩形的面積,并顯示結果。運行example2_7.jsp頁面。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.4.4實踐環節——include和param動作標記的應用編寫3個JSP頁面:input.jsp、first.jsp和second.jsp,將3個JSP文件保存在同一個Web服務目錄中,input.jsp使用include動作標記加載first.jsp和second.jsp頁面。first.jsp頁面可以畫出一個表格,second.jsp頁面可以計算出兩個正整數的最大公約數。當first.jsp被加載時獲取input.jsp頁面中include動作標記的param子標記提供的表格的行數和列數,當second.jsp被加載時獲取input.jsp頁面中include動作標記的param子標記提供的兩個正整數的值。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.4.5實踐環節——登錄驗證編寫3個JSP頁面:login.jsp、validate.jsp和success.jsp,login.jsp輸入用戶名與密碼信息,提交給validate.jsp進行用戶驗證,如果驗證為合法用戶(用戶名:tom,密碼:jenny)則轉到(forward動作標記)success.jsp頁面,否則轉到login.jsp頁面重新登錄。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
本章小結本章主要介紹了JSP頁面的組成、JSP腳本元素和JSP標記。一個JSP頁面通常由普通的HTML標記、JSP注釋、Java腳本元素以及JSP標記組成。JSP腳本元素包括Java程序片、JSP頁面成員變量與方法的聲明、Java表達式。JSP標記包括指令標記和動作標記。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
第3章JSP內置對象學習目的與要求本章主要介紹request、response、out、session、application、pageContext、page、config和exception等內置對象。通過本章的學習,理解JSP內置對象的含義,掌握JSP內置對象的使用方法。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1request對象3.2response對象3.3out對象3.4session對象3.5application對象3.6pageContext對象3.7page對象3.8config對象3.9exception對象3.10JSP的4種作用域3.1request對象request對象的類型為jakarta.servlet.http.HttpServletRequest。當客戶端請求一個JSP頁面時,JSP頁面所在的服務器將客戶端發出的所有請求信息封裝在內置對象request中,因此使用該對象就可以獲取客戶端提交的信息。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1.1常用方法《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
序
號方
法功
能
說
明1ObjectgetAttribute(Stringname)
返回指定屬性的屬性值2EnumerationgetAtrributeNames()
返回所有可用屬性名的枚舉3StringgetCharacterEncoding()
返回字符編碼方式4intgetContentLength()
返回請求體的字節數5StringgetContentType()
返回請求體的MIME類型6ServletInputStreamgetInputStream()返回請求體中一行的二進制流7StringgetParameter(Stringname)返回name指定參數的參數值8EnumerationgetParameterNames()
返回可用參數名的枚舉9String[]getParameterValues(Stringname)
返回包含參數name的所有值的數組10StringgetProtochol()
返回請求用的協議類型及版本號11StringgetServerName()
返回接受請求的服務器主機名12intgetServerPort()返回服務器接受此請求所用的端口號13StringgetRemoteAddr()
返回發送此請求的客戶端IP地址14StringgetRemoteHost()
返回發送此請求的客戶端主機名15voidsetAttribute(Stringkey,Objectobj)
設置屬性的屬性值16StringgetRealPath(Stringpath)
返回一虛擬路徑的真實路徑3.1.1常用方法
StringgetParameter(Stringname)該方法以字符串的形式返回客戶端傳來的某個參數的值,該參數名由name指定。【例3-1】調用方法getParameter(String
name)獲取表單信息
String[]getParameterValues(Stringname)該方法以字符串數組的形式返回客戶端向服務器端傳遞的指定參數名的所有值。【例3-2】調用方法getParameterValues
(Stringname)獲取表單信息《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1.2request對象存取數據request對象可以通過void
setAttribute(String
key,Objectobj)方法將參數obj指定的對象保存到request對象中,key為所保存的對象指定一個關鍵字。若保存的兩個對象關鍵字相同,則先保存的對象被清除。request對象可以通過Object
getAttribute(String
key)方法獲取請求域(如:forward轉發)中的關鍵字為key的對象(屬性值)。在實際工程中,request對象經常用于存儲、傳遞本次請求的處理結果。【例3-3】編寫兩個JSP頁面example3_3.jsp和example3_3_1.jsp,在example3_3.jsp頁面中輸入一個整數提交給example3_3_1.jsp頁面求平方。當輸入值非整數時,在example3_3_1.jsp頁面中使用request對象的setAttribute(String
key,Objectobj)方法將錯誤消息存儲到request對象中,同時使用forward標記轉發到example3_3_1.jsp頁面并顯示錯誤消息。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1.3中文亂碼問題如果在例3-1的example3_1.jsp頁面的文本框中輸入中文姓名,那么getValue.jsp頁面獲得的姓名可能是亂碼。如果出現中文亂碼,可以使用request對象的setCharacterEncoding(String
code)設置統一字符編碼,其中參數code以字符串形式傳入要設置的編碼格式,但這種方法僅對于提交方式是post的表單(表單默認的提交方式是get)有效。例如:使用該方法解決例3-1中的getValue.jsp頁面出現的中文亂碼問題,需要完成兩件事:首先,將example3_1.jsp中的表單提交方式改為“post”,具體代碼如下:
<formaction="getValue.jsp"method="post">
其次,在getValue.jsp中獲取表單信息之前設置統一編碼,具體代碼如下:
request.setCharacterEncoding("UTF-8");《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1.4實踐環節——獲取客戶端的基本信息編寫1個JSP頁面practice3_1.jsp,在該頁面中使用request的方法獲取客戶端的IP地址、客戶機名稱、服務器名稱以及服務器端口號。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1request對象3.2response對象3.3out對象3.4session對象3.5application對象3.6pageContext對象3.7page對象3.8config對象3.9exception對象3.10JSP的4種作用域3.2response對象當客戶端請求服務器的一個頁面時,會提交一個HTTP請求,服務器收到請求后,返回HTTP響應。request對象對請求信息進行封裝,與request對象對應的對象是response對象。response對象的類型為jakarta.servlet.http.HttpServletResponse,對客戶端的請求做出動態響應。動態響應通常有:動態改變contentType屬性值、設置響應表頭和response重定向。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.2.1動態改變contentType屬性值JSP頁面用page指令標記設置了頁面的contentType屬性值,response對象按照此屬性值的方式對客戶端做出響應。在page指令中只能為contentType屬性指定一個值。如果想動態改變contentType屬性值,換一種方式來響應客戶端,可以讓response對象調用setContentType(String
s)方法來重新設置contentType的屬性值。【例3-4】編寫1個JSP頁面example3_4.jsp,客戶端通過單擊頁面上的不同按鈕,可以改變頁面響應的MIME類型。當單擊“word”按鈕時,JSP頁面動態改變contentType的屬性值為application/msword,在內置的瀏覽器中,啟用本地的word軟件來顯示當前頁面內容;當單擊“excel”按鈕時,JSP頁面動態改變contentType的屬性值為application/vnd.ms-excel,瀏覽器啟用本地的excel軟件來顯示當前頁面內容。頁面效果如圖3.1(a)~3.1(c)所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.2.2設置響應表頭response對象可以通過方法setHeader(String
name,String
value)設置指定名字的HTTP文件頭值,以此來操作HTTP文件頭。如果希望某頁面每3秒鐘刷新一次,那么在該頁面中添加如下代碼:response.setHeader("refresh","3");有時候希望從當前頁面幾秒鐘后自動跳轉到另一個頁面。比如:打開one.jsp頁面3秒鐘后,自動跳轉到another.jsp頁面(one.jsp與another.jsp在同一個Web服務目錄下)。這該如何實現呢?只需要為one.jsp設置一個響應頭即可,也就是在one.jsp頁面中添加如下代碼:response.setHeader("refresh","3;url=another.jsp");【例3-5】編寫1個JSP頁面example3_5.jsp,在該頁面中使用response對象設置一個響應頭“refresh”,其值是“3”。那么用戶收到這個頭之后,該頁面會每3秒鐘刷新一次。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.2.3response重定向需要將客戶端引導至另一個頁面時,可以使用reponse對象的sendRedirect(String
url)方法實現客戶端的重定向。例如客戶端輸入的表單信息不完整或有誤時,應該再次被重定向到輸入頁面。【例3-6】編寫兩個JSP頁面login.jsp和validate.jsp,如果在頁面login.jsp中輸入正確的密碼“nihao2023”,單擊按鈕后提交給頁面validate.jsp,如果輸入不正確,重新定向到login.jsp頁面。先運行login.jsp頁面,頁面效果如圖3.2(a)~3.2(b)所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.2.4實踐環節——登錄驗證編寫3個JSP頁面login_1.jsp、server.jsp和loginSuccess.jsp。在頁面login_1.jsp中輸入用戶名和密碼,單擊“提交”按鈕將輸入的信息提交給頁面server.jsp。在server.jsp頁面中進行登錄驗證:如果輸入正確(用戶名“zhangsan”,密碼“123”),提示“成功登錄,3秒鐘后進入loginSuccess.jsp頁面”,如果輸入不正確,重新定向到login_1.jsp頁面。先運行login_1.jsp頁面,頁面運行效果如圖3.3(a)~3.3(c)所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1request對象3.2response對象3.3out對象3.4session對象3.5application對象3.6pageContext對象3.7page對象3.8config對象3.9exception對象3.10JSP的4種作用域3.3out對象out對象的類型為jakarta.servlet.jsp.JspWriter,是一個輸出流,用來向客戶端瀏覽器輸出數據。【例3-7】編寫1個頁面example3_7.jsp,在該頁面中使用out對象輸出信息。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
序
號方
法功
能
說
明1voidclear()
清除緩沖區的內容2voidclearBuffer()清除緩沖區的當前內容3voidflush()
清空流4intgetBufferSize()
返回緩沖區字節數,如不設緩沖區則返回05intgetRemaining()
返回緩沖區剩余大小6booleanisAutoFlush()返回緩沖區滿時,是自動清空還是拋出異常7voidclose()關閉輸出流8voidprint()
輸出各種數據類型9voidnewLine()
輸出一個換行符學習目的與要求《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1request對象3.2response對象3.3out對象3.4session對象3.5application對象3.6pageContext對象3.7page對象3.8config對象3.9exception對象3.10JSP的4種作用域3.4session對象瀏覽器與Web服務器之間使用Http協議進行通信。Http是一種無狀態協議,客戶端向服務器發出請求(request),服務器返回響應(response),連接就被關閉了,在服務器端不保留連接的相關信息。所以服務器必須采取某種手段來記錄每個客戶端的連接信息。Web服務器可以使用內置對象session來存放有關連接的信息,session對象的類型為jakarta.servlet.http.HttpSession。session對象指的是客戶端與服務器端的一次會話,從客戶端連到服務器端的一個Web應用程序開始,直到客戶端與服務器端斷開為止。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.4.1session對象的IDWeb服務器會給每一個用戶自動創建一個session對象,為每個session對象分配一個唯一標識的String類型的session
ID,這個ID用于區分其他用戶。這樣每個用戶都對應著一個session對象,不同用戶的session對象互不相同。session對象調用getId()方法就可以獲取當前session對象的ID。【例3-8】編寫3個JSP頁面example3_8_1.jsp、example3_8_2.jsp和example3_8_3.jsp,其中,example3_8_2.jsp存放在目錄tom中,example3_8_3.jsp存放在目錄cat中。用戶首先訪問example3_8_1.jsp頁面,從該頁面鏈接到example3_8_2.jsp頁面,然后再從example3_8_2.jsp頁面鏈接到example3_8_3.jsp。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.4.2session對象存取數據使用session對象可以保存用戶在訪問某個Web服務期間的有關數據。有關處理數據的方法如下:
public
void
setAttribute(Stringkey,Objectobj)將參數obj指定的對象保存到session對象中,key為所保存的對象指定一個關鍵字。若保存的兩個對象關鍵字相同,則先保存的對象被清除。
publicObjectgetAttibute(Stringkey)獲取session中關鍵字是key的對象。
publicvoidremoveAttribute(Stringkey)從session中刪除關鍵字key所對應的對象。
publicEnumerationgetAttributeNames()產生一個枚舉對象,該枚舉對象可使用方法nextElemets()遍歷session中各個對象所對應的關鍵字。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.4.2session對象存取數據【例3-9】使用session對象模擬在線考試系統。編寫3個JSP頁面example3_9_1.jsp、example3_9_2.jsp和example3_9_3.jsp,在example3_9_1.jsp頁面中考試,在example3_9_2.jsp頁面中顯示答題結果,在example3_9_3.jsp頁面中計算并公布考試成績。首先運行example3_9_1.jsp頁面,效果如圖3.5(a)~3.5(c)所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.4.3session對象的生存期限一個用戶在某個Web服務中session對象的生存期限依賴于以下幾個因素: 用戶是否關閉瀏覽器。
session對象是否調用invalidate()方法。
session對象是否達到設置的最長“發呆”時間。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
序
號方
法功
能
說
明1longgetCreationTime()
返回session創建時間2longgetLastAccessedTime()返回此session里客戶端最近一次請求時間3intgetMaxInactiveInterval()
返回兩次請求間隔時間(單位是秒)4voidinvalidate()
使session失效5booleanisNew()判斷客戶端是否已經加入服務器創建的session6voidsetMaxInactiveInterval()設置兩次請求間隔時間(單位是秒)3.4.3session對象的生存期限【例3-10】編寫1個JSP頁面example3_10.jsp。如果用戶是第一次訪問該頁面,會顯示歡迎信息,并輸出session對象允許的最長發呆時間、創建時間,以及session對象的ID。在example3_10.jsp頁面中,session對象使用setMaxInactiveInterval(int
maxValue)方法設置最長的“發呆”狀態時間為10秒。用戶如果兩次刷新間隔時間超過10秒,用戶先前的session被取消,用戶將獲得一個新的session對象。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.4.4實踐環節——購物車用戶到便民超市采購商品,購物前需要先登錄會員卡號,購物時先將選購的商品放入購物車,最后到柜臺清點商品。請借助于session對象模擬購物車,并存儲客戶的會員卡號和購買的商品名稱。會員卡號輸入后可以修改,購物車中的商品可以查看。編寫程序模擬上述過程。loginID.jsp實現會員卡號輸入,shop.jsp實現商品導購,food.jsp實現商品購物,count.jsp實現清點商品。本節實踐環節的4個JSP頁面都保存在目錄practice4中,先運行loginID.jsp頁面。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1request對象3.2response對象3.3out對象3.4session對象3.5application對象3.6pageContext對象3.7page對象3.8config對象3.9exception對象3.10JSP的4種作用域3.5.1什么是application不同用戶的session對象互不相同,但有時候用戶之間可能需要共享一個對象,Web服務器啟動后,就產生了這樣一個唯一的內置對象application。application對象實現了jakarta.servlet.ServletContext接口。任何用戶在訪問同一個Web服務的各個頁面時,共享一個application對象,直到服務器關閉,這個application對象才被取消。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.5.2application對象存取數據application同session對象一樣也可以進行數據存取,處理數據的方法如下:
publicvoidsetAttribute(Stringkey,Objectobj)將參數obj指定的對象保存到application對象中,key為所保存的對象指定一個關鍵字。若保存的兩個對象關鍵字相同,則先保存的對象被清楚。
publicObjectgetAttribute(Stringkey)獲取application中關鍵字是key的對象。
publicvoidremoveAttribute(Stringkey)從application中刪除關鍵字key所對應的對象。
publicEnumerationgetAttributeNames()產生一個枚舉對象,該枚舉對象可使用方法nextElemets()遍歷application中各個對象所對應的關鍵字。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.5.2application對象存取數據【例3-11】用application對象模擬“成語接龍”,用戶通過example3_11_1.jsp向example3_11_2.jsp頁面提交四字成語,example3_11_2.jsp頁面獲取成語內容后,用同步方法將該成語內容和以前的成語內容進行連接,然后將這些四字成語內容添加到application對象中。頁面運行效果如圖3.8(a)~3.8(b)所示。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.5.3實踐環節——網站訪客計數器使用application對象實現網站訪客計數器的功能。《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
學習目的與要求《JavaWeb開發從入門到實戰(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.1request對象3.2response對象3.3out對象3.4session對象3.5application對象3.6pageContext對象3.7page對象3.8config對象3.9exception對象3.10JSP的4種作用域3.6pageContext對象pageContext對象即頁面上下文對象,表示當前頁面運行環境,用于獲取當前JSP頁面的相關信息,它的作用范圍為當前JSP頁面。pageContext對象的類型為jakarta.servlet.jsp.PageContext。pageContext對象可以訪問當前JSP頁面的所有內置對象,如表3.4所示。另外,pageContext對象提供了存取屬性方法,如表3.5所示。《JavaWeb
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年 湖南株洲消防招聘考試筆試試題附答案
- 2025年 貴州水利水電職業技術學院招聘教師附答案
- 2025年養護機械市場分析現狀
- 中國背投電視行業發展潛力預測及投資戰略研究報告
- 焦化耐火設備項目投資可行性研究分析報告(2024-2030版)
- 2025年中國兔毛手袋行業市場發展前景及發展趨勢與投資戰略研究報告
- 長江存儲培訓課件
- 視頻拍攝制作合同
- 技術服務合同
- 中國電子特種氣體行業市場調查研究及投資前景預測報告
- 安全生產管理臺賬(合集)
- 福建省廈門市第一中學2025屆七下英語期末質量跟蹤監視試題含答案
- 2024年吉林省國資委監管企業招聘真題
- 2025年霍州煤電招聘筆試沖刺題(帶答案解析)
- 大學語文試題及答案 二
- 2025年 汾西礦業井下崗位高校畢業生招聘考試筆試試題(山西省)含答案
- 結構動力學完整版本
- 2025年八年級數學下學期期末總復習八年級數學下學期期末測試卷(2)(學生版+解析)
- 農村供水水質管理制度
- 五年級(下)語文選擇題專項165道
- 石油化工工程防滲技術規范
評論
0/150
提交評論