JSP動態網頁程序設計詳解

來源: JavaEye  發布時間: 2011-02-10 17:12  閱讀: 1626 次  推薦: 1   原文鏈接   [收藏]  
摘要:JSP頁面從形式上就是在傳統的網頁HTML文件中加入Java程序片段(Scriptlet)和JSP標簽,文章將詳細的介紹JSP在動態網頁程序設計中的語法及實例。

  JSP頁面從形式上就是在傳統的網頁HTML文件中加入Java程序片段(Scriptlet)和JSP標簽。Servlet/JSP容器收到客戶端發出的請求時,首先執行其中的程序片段,然后將執行結果以HTML格式響應給客戶端。

  基本語法:

  注釋:

  1、客戶端可以看到的注釋:!-- comment [%=expression%] -- (可以在批注中加上動態的表達式)

  2、開發程序員專用的注釋:%-- comment --% 或者 %/** this is a comment **/%

  聲明:

 
1. %!declaration; [declaration;]+...%

  該聲明的變量為類變量。意味著:若同時有n個用戶在執行此JSP網頁時,他們將會共享此變量。會引起線程同步上的麻煩。(不建議使用)

  小腳本:

  % Java 代碼%

  此類定義的變量為局部變量,不存在多線程同步問題,是線程安全的。

  表達式:

  %=expression % 不能使用;作為表達式的結束符號。

  JSP指令元素:

  只是告訴JSP引擎對JSP頁面如何編譯。

  page指令:設定整個JSP網頁的屬性和相關功能。

 
1. %@page attribute1="value1" attribute2="value2" ...%
2. jsp:directive.page attribute1="value1"...

  例如:

 
1. %@page contentType="text/html; charset=utf-8" language="java" import="java.net.*"%

  include指令:用于指示JSP容器在JSP編譯時插入一個包含文本或代碼的文件,這個包含的過程是靜態的。注意包含文件中要避免使用htmlbody,可能會導致錯誤。

 
1. %@include file="relativeURLspec"%
2. jsp:directive.include file="relativeURLspec"

  例如:

 
%@include file="Hello.html"   

 

  taglib指令:

 
1. %@taglib uri="tagLibraryURI" prefic="tagPrefix"%
2. jsp:directive.taglib uri="tagLibraryURI" prefic="tagPrefix"

  JSP操作元素:

 
1. jsp:include
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對象所提供的方法:

  獲取路徑和協議信息:

 
1. String getProtocol() 獲取通信所使用的協議和版本號(如:HTTP /1.1
2. String getScheme() 獲取請求中的協議名稱(如:HTTP)
3. String getPathInfo() 獲取請求中處于JSP路徑和查詢字符串之間的額外信息
4. String getContextPath()
5. String getRequestURI()
6. String getServletPath()
7. String getRealPath(String path)

  獲取主機和端口信息:

 
1. String getServerName() 獲取響應請求的服務器名稱。
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中?后面的部分。

  獲取查詢字符串中的變量值:

 
1. String getParameter(String name) 獲取客戶端發送給服務器端的參數值。
2. Enumeration getParameterNames() 返回請求中所有參數的集合。
3. String[] getParameterValues(String name) 獲得請求中指定參數的所有值。

  例如:

 
1. http://localhost:8080/liuxl/jsp/querystring.jsp?str=JSP
2. String s=request.getParameter("str"); 獲取變量str的值,執行后s的值為JSP。

  注意:getParameter()方法的返回值只能是字符串。若傳遞val=100,則需要進行類型轉換。

 
1. if(request.getParameter("val")!=null) //判斷字符串是否為空
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進行處理。

  格式:

 
1. form name="" action="" method=""
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為表單元素的初始值。

  例如:

 
1. 文本框:input name="" type="text" value="" size="" maxlength=""
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是可選屬性,如果有該屬性,則表示該按鈕顯示時為被選中,否則為未選中。)

 
1. e.g:input name="radiobutton" type="radio" value="1" checked選項1
2. input name="radiobutton" type="radio" value="2"選項2

  在選中按鈕1的情況下提交URL如下:...?radiobutton=1...

 
1. 復選框:input name="" type="checkbox" value="" checked

  (用于從一組選項中選擇多個選項,checked同上。與單選按鈕相似,復選框常成組使用,與單選按鈕不同的是,被選中的多個復選框都會被提交,因此其name可以相同(按數組處理),也可以不同(按不同變量進行處理))

 
1. e.g:input name="checkbox" type="checkbox" value="swim"swim
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標簽 聲明了一個可選項的列表,用戶可以選擇一個或多個選項

 
1. select name="" size="" multiple
2. option value="" selectedoption/option
3. ...
4. option value=""option/option
5. /select

  說明:name是名稱,size是列表區域高度(即可顯示的選項數),multiple是可選屬性,若有表示可選擇多項。selected是一個可選屬性,有表示該選項設置為已選中。

1
1
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()