JSP動態網頁程序設計詳解
JSP頁面從形式上就是在傳統的網頁HTML文件中加入Java程序片段(Scriptlet)和JSP標簽。Servlet/JSP容器收到客戶端發出的請求時,首先執行其中的程序片段,然后將執行結果以HTML格式響應給客戶端。
基本語法:
注釋:
1、客戶端可以看到的注釋:!-- comment [%=expression%] -- (可以在批注中加上動態的表達式)
2、開發程序員專用的注釋:%-- comment --% 或者 %/** this is a comment **/%
聲明:
該聲明的變量為類變量。意味著:若同時有n個用戶在執行此JSP網頁時,他們將會共享此變量。會引起線程同步上的麻煩。(不建議使用)
小腳本:
% Java 代碼%
此類定義的變量為局部變量,不存在多線程同步問題,是線程安全的。
表達式:
%=expression % 不能使用;作為表達式的結束符號。
JSP指令元素:
只是告訴JSP引擎對JSP頁面如何編譯。
page指令:設定整個JSP網頁的屬性和相關功能。
2. jsp:directive.page attribute1="value1"...
例如:
include指令:用于指示JSP容器在JSP編譯時插入一個包含文本或代碼的文件,這個包含的過程是靜態的。注意包含文件中要避免使用htmlbody,可能會導致錯誤。
2. jsp:directive.include file="relativeURLspec"
例如:
taglib指令:
2. jsp:directive.taglib uri="tagLibraryURI" prefic="tagPrefix"
JSP操作元素:
2. jsp:forward
3. jsp:param
4. jsp:useBean
5. jsp:setProperty
6. jsp:getProperty
request對象與網絡信息的提交:
JSP中提供了request對象來接收客戶端發送回來的數據。
◆URL一般語法:protocol://host:port/virtualPath?queryString
◆protocol:表示協議,用于聲明在遠程機器之間傳送信息的低層機制(http ftp https等)。
◆host:表示請求要發送到的遠程機器的名稱或者ip地址。
◆port:聲明服務器要監聽請求的機器端口號。
◆virtualPath:包含一個以斜線為分隔符的一組標識符,服務器把它映射到一個物理路徑和JSP的位置。
◆querString:是查詢字符串,它是一個成對的名稱和值的列表,作為JSP的參數被傳遞到處理它的JSP頁面。如果有多個參數需要傳遞,將以號分隔開成對的名稱和值。
request對象所提供的方法:
獲取路徑和協議信息:
2. String getScheme() 獲取請求中的協議名稱(如:HTTP)
3. String getPathInfo() 獲取請求中處于JSP路徑和查詢字符串之間的額外信息
4. String getContextPath()
5. String getRequestURI()
6. String getServletPath()
7. String getRealPath(String path)
獲取主機和端口信息:
2. int getServerPort() 獲取響應請求的服務器端主機端口號。
3. String getLocalName() 獲取響應請求的服務器端主機名。
4. String getLocalAddr() 獲取響應請求的服務器端地址。
5. int getLocalPort() 獲取響應請求的服務器端端口。
6. String getRemoteAddr() 獲取發出請求的客戶端IP地址。
7. String getRemoteHost() 獲取發出請求的客戶端主機名。
8. int getRemotePort() 獲取發出請求的客戶端主機端口。
獲取查詢字符串:
String getQueryString() 獲取get()方法傳遞的參數字符串,即URL中?后面的部分。
獲取查詢字符串中的變量值:
2. Enumeration getParameterNames() 返回請求中所有參數的集合。
3. String[] getParameterValues(String name) 獲得請求中指定參數的所有值。
例如:
2. String s=request.getParameter("str"); 獲取變量str的值,執行后s的值為JSP。
注意:getParameter()方法的返回值只能是字符串。若傳遞val=100,則需要進行類型轉換。
2. {
3. num=Integer.parseInt(request.getParameter("val")); //將字符串轉化為整數
4. }
5. else
6. {
7. num=0;
8. }
9.
10. if(request.getParameter("val")!=null) //判斷字符串是否為空
11. {
12. num=Integer.parseInt(request.getParameter("val")); //將字符串轉化為整數
13. }
14. else
15. {
16. num=0;
17. }
表單及其在信息傳遞中的應用:
表單:
是一個能夠包含表單元素的區域,HTML為表單提供了多種圖形用戶界面組件元素 (如文本框,密碼框,下拉菜單等),這些表單元素能夠讓用戶在表單輸入信息,可以用它們來構成表單內容,作為用戶可以輸入的域,并可以將其提交給一個JSP進行處理。
格式:
2. ...
3. /form
其中: name用于指定表單的名稱。action用于指定表單被提交時所要執行的動作。method指定傳遞請求給JSP所用的方法(GET、POST、PUT,常用POST)。
1、input標簽 常用于輸入信息或提交信息
語法:input type="" name="" value=""
說明:type允許指定輸入類型(text(文本框)、password(密碼框)、checkbox(復選框)、radio(單選按鈕)、image(圖像域)、reset(重置按鈕)、submit(提交按鈕))。 name為表單元素的名稱。value為表單元素的初始值。
例如:
2. 密碼框:input name="" type="password" value="" size="" maxlength=""
3. 提交按鈕:input name="" type="submit" value=""
4. 重置按鈕:input name="" type="reset" value=""
5. 單選按鈕:input name="" type="radio" value="" checked
(用于從一組選項中選擇其中一個選項,checked是可選屬性,如果有該屬性,則表示該按鈕顯示時為被選中,否則為未選中。)
2. input name="radiobutton" type="radio" value="2"選項2
在選中按鈕1的情況下提交URL如下:...?radiobutton=1...
(用于從一組選項中選擇多個選項,checked同上。與單選按鈕相似,復選框常成組使用,與單選按鈕不同的是,被選中的多個復選框都會被提交,因此其name可以相同(按數組處理),也可以不同(按不同變量進行處理))
2. input name="checkbox" type="checkbox" value="run"run
如果在提交時兩個都選中,則URL形式如下:...?checkbox=swimcheckbox=run...
2、textarea標簽 聲明了一個用戶可以輸入多行文本的區域
語法:textarea name="" rows="" cols="" text/textarea
說明:cols為文本域寬度(字符數),rows為文本域的高度(行數)
3、select標簽 聲明了一個可選項的列表,用戶可以選擇一個或多個選項
2. option value="" selectedoption/option
3. ...
4. option value=""option/option
5. /select
說明:name是名稱,size是列表區域高度(即可顯示的選項數),multiple是可選屬性,若有表示可選擇多項。selected是一個可選屬性,有表示該選項設置為已選中。