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