JSP快速入門

JSP(JavaServer Pages )是什麼?

JavaServer Pages(JSP)是一種支持動態內容開發的網頁技術它可以幫助開發人員通過利用特殊的JSP標籤,其中大部分以<%開始並以%>作為結束標誌插入Java代碼到HTML頁面。

JavaServer Pages組件是一個Java servlet的類型,旨在滿足Java Web應用程式用戶介面的一個角色。Web開發人員編寫JSP為文本檔,結合HTML或XHTML代碼,XML元素,並嵌入JSP動作和命令。

使用JSP可以通過網頁的形式,從資料庫或其他來源的記錄收集來自用戶的輸入,並動態地創建Web頁面。

JSP標籤可用於各種目的,如從資料庫中檢索資訊或登記的用戶偏好,訪問JavaBeans組件,頁面之間傳遞控制和共用請求,網頁等之間的資訊。

為什麼使用JSP?

JavaServer頁面往往服務於同一目的,使用通用網關介面(CGI)執行的方案。但相比CGI,JSP提供了幾個優點。

  • 性能更好,因為JSP允許嵌入動態元素在HTML頁面中,而不是只有一個單獨的CGI檔。

  • JSP在請求處理之前總是經過了編譯,它不同於 CGI/Perl 伺服器,需要伺服器在加載時都要解釋,並在每次請求頁面時才處理目標腳本。

  • JavaServer Pages是建立在Java Servlet的API之上,所以就像Servlet,JSP也可以訪問強大的企業 Java API 的所有功能,包括JDBC,JNDI,EJB,JAXP等。

  • JSP頁面可以結合使用servlet處理業務邏輯,通過Java servlet範本引擎所支持的模型。

最後,JSP是J2EE,企業級應用的完整平臺的一個組成部分。這意味著JSP可以開發最簡單應用程式,或作為最複雜的應用程式一部分。

安裝JSP開發環境

這個步驟包括下載Java軟體開發工具包(SDK)和安裝,並適當設置PATH環境變數。

可以從Oracle的Java網站下載SDK: Java SE 下載

另外,如果使用集成開發環境(IDE),如:Borland公司的JBuilder,Eclipse,IntelliJ IDEA,或Sun ONE Studio,編譯並運行一個簡單的程式,以確認IDE知道系統上在哪里安裝了 Java 。

在本教學中,我們使用的是:MyEclise 8.5 試用版本,為了與本教程同步以減少出現代碼或其他的意外的錯誤,建議在使用 MyEclipse 8.5 以同步本教學。

安裝MyEclipse開發環境

安裝MyEclipse開發環境比較簡單,可以從網上搜索下載一個MyEclipse 8.5,然後安裝在一個自己喜歡的位置,在教學中安裝的位置是:D:\Program Files\MyEclipse 8.5,雙擊“myeclipse.exe”(或桌面的圖示),啟動,啟動完成後畫面如下:

第二步,啟動 MyEclipse 中的Tomcat:

成功啟動後,Tomcat 默認的Web應用程式將可以通過:http://localhost:8080/ 訪問。如果一切正常,那麼它應該顯示以下結果:


這裏包括,Tomcat網站有關配置和運行Tomcat文檔資訊,更多的資訊可訪問:http://tomcat.apache.org

JSP第一個應用:

第一步,點擊右上角中的 “File"->"New"->"Web Project" 創建一個工程為:“HelloWord",如下:

 
第二步:點擊“Finish",然後完成工程創建,整個工程結構如下圖所示:

 

運行工程,右鍵點擊工程名稱 ”HelloWord",選擇“Run As”->“MyEclipse Server Application" 或在流覽器中輸入:http://localhost:8080/HelloWord/ 運行結果如下圖所示:

到這裏,JSP的開發運行環境已經建立起來了。接下來可以進一步開發學習JSP的其他知識。

JSP處理:

下麵的步驟是用來說明Web伺服器是如何使用JSP創建網頁:

  • 對於一個正常的頁面,流覽器發送一個HTTP請求到萬維網伺服器。

  • 網站伺服器識別HTTP請求是一個JSP頁面,並將其轉發給JSP引擎。這是通過使用URL或JSP頁面,而這個頁面使用 .jsp 尾碼,而不是 .html 尾碼。

  • JSP引擎從磁片加載JSP頁面,並將其轉換成servlet的內容。這種轉換是很簡單的,所有的範本文本被轉換給println()語句,所有JSP元素被轉換為實現該頁面相應動態行為的Java代碼。

  • JSP引擎編譯成servlet的一個可執行類並轉發原始請求到servlet引擎。

  • 一部分Web伺服器調用servlet引擎加載Servlet類並執行它。在執行期間,Servlet產生HTML的格式輸出,其servlet引擎傳遞到web伺服器回應HTTP請求。

  • Web伺服器回應HTTP轉發靜態的HTML內容到流覽器。

  • 最後的 web 流覽器處理HTTP回應動態生成的HTML頁面完全就像一個靜態頁面內容。

下麵的圖顯示所有上述的步驟:

腳本

scriptlet可以包含任意數量的JAVA語言的語句,變數或方法聲明,或者是在頁面的腳本語言有效運算式。

以下是Scriptlet中的語法:

<% code fragment %>

可以編寫XML代碼相當於上述語法如下:

<jsp:scriptlet>
   code fragment
</jsp:scriptlet>

寫的任何文本,HTML標籤或JSP元素一定在腳本之外。以下是簡單第一個JSP的例子:

<html>
<head><title>Hello World - By xuhuhu.com</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>

現在我們來創建一個JSP檔頁面,這個檔案名稱為:hello.jsp,讓我們保存上面的代碼到hello.jsp 中,整個完整的代碼如下:

 

啟動Tomcat,在流覽器地址欄中輸入:http://localhost:8080/HelloWord/hello.jsp,這將產生以下結果:

JSP 聲明

聲明一個或多個變數,或者方法可以在Java代碼後面的JSP檔中使用。 在JSP檔中使用變數或方法它們之前,必須先聲明它們。

以下是JSP聲明的語法:

<%! declaration; [ declaration; ]+ ... %>

可以使用XML編寫相當於上述語法如下:

<jsp:declaration>
   code fragment
</jsp:declaration>

下麵是簡單的例子JSP聲明:

<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %> 

JSP運算式

JSP運算式元素包含計算,轉換為字串,並插入出現在JSP檔的腳本語言運算式。

因為一個運算式的值被轉換為字串,可以在文本一行內使用運算式,不管它是否被標記使用在HTML,JSP檔中。

表達元素可以包含任何Java語言規範有效的運算式,但是不能使用一個分號來結束運算式。

下麵是JSP運算式的語法:

<%= expression %>

可以使用XML編寫相當於上述語法如下:

<jsp:expression>
   expression
</jsp:expression>

這裏創建一個新的工程:jsp-base,並在index.jsp檔中寫入以下代碼,下麵是簡單的例子JSP運算式:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
	<head>
		<title>JSP運算式  - by xuhuhu.com</title>
	</head>
	<body>
		<p>
			今天是:<%=(new java.util.Date()).toLocaleString()%>
		</p>
	</body>
</html>

打開流覽器,輸入網址:http://localhost:8080/jsp-base/index.jsp產生以下結果:

JSP注釋

JSP注釋標記的文字或語句都會被JSP容器忽略。當想要隱藏或“注釋掉”JSP頁面的一部分,JSP注釋是很有用的。

以下是JSP注釋語法:

<%-- This is JSP comment --%>

創建一個comment.jsp 並編寫入下麵的代碼,以測試JSP注釋:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>注釋 - 示例</title></head> 
<body>
<h2>A Test of Comments</h2>
<%-- This comment will not be visible in the page source --%>
</body>
</html> 

http://localhost:8080/jsp-base/comment.jsp

  • 還有少數特殊的結構可以使用一些情況,插入注釋或字元,將被特殊處理。這裏有一個整理匯總:

    語法 目的
    <%-- comment --%> JSP注釋,它將被JSP引擎忽略
    <!-- comment --> HTML注釋,它將被流覽器忽略
    <\% 表示靜態<%的字面量
    %\> 表示靜態%>的字面量
    \' 在使用單引號在屬性中的單引號
    \" 雙引號在屬性使用雙引號

    JSP 指令

    JSP指令影響的servlet類的整體結構。它通常有以下形式:

    <%@ directive attribute="value" %>

    有三種類型的指令標記:

    指令 描述
    <%@ page ... %> 定義頁面依賴屬性,例如腳本語言,錯誤頁面和緩沖的要求
    <%@ include ... %> 包括在轉換階段的檔
    <%@ taglib ... %> 聲明了一個標籤庫,包含自定義動作,用在頁面中

     

    JSP 動作

    JSP動作使用XML語法結構來控制Servlet引擎的行為。可以動態地插入檔,重用JavaBeans組件,用戶轉發到另一個頁面,或為Java插件生成HTML。

    只有一個用於動作元素的語法,因為它符合XML標準:

    <jsp:action_name attribute="value" />

    動作元素基本上都是預先定義函數並有以下可用的JSP操作:

    語法 目的
    jsp:include 包括頁面被一次請求的檔
    jsp:include 包括頁面被一次請求的檔
    jsp:useBean 查找或實例化一個JavaBean
    jsp:setProperty 設置一個JavaBean的屬性
    jsp:getProperty 插入一個JavaBean的屬性到輸出
    jsp:forward 轉發請求到一個新的頁面
    jsp:plugin 生成特定流覽器的代碼,使對象或嵌入標籤Java插件
    jsp:element 定義XML元素動態
    jsp:attribute 定義動態定義XML元素的屬性
    jsp:body 定義動態定義的XML元素主體
    jsp:text 用於編寫範本文本在JSP頁面和文檔

    我們將在單獨的章節解釋JSP動作 JSP動作

    JSP 隱式對象:

    JSP支持九種自動定義的變數,這也被稱為隱式對象。這些變數是:

    對象 描述
    request 這是與請求相關聯的HttpServletRequest對象
    response 這是用於回應客戶端相關聯的HttpServletResponse對象
    out 這是用於將輸出發送給客戶端的PrintWriter對象
    session 這是與請求相關聯的HttpSession對象
    application 這是應用程式上下文關聯的ServletContext對象
    config 這是與頁面關聯的ServletConfig對象
    pageContext 這封裝採用類似更高的性能JspWriters伺服器特定的功能
    page 這是一個簡單的代名詞,是用來調用由轉換servlet類中定義的方法
    Exception Exception對象允許例外的數據由JSP指定訪問

    我們將在單獨一章介紹JSP隱式對象 JSP隱式對象


    控制流語句

    JSP提供了Java的全部功能可以嵌入在Web應用程式。可以使用Java的所有API和構建塊在JSP編程,包括決策語句,迴圈等。

    決策聲明

    在if ... else塊開頭時就像一個普通的Scriptlet,但 Scriptlet 每一行是封閉的,包括scriptlet標記之間的HTML文本。創建一個JSP檔為:if-else.jsp,並寫入以下代碼:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%! int day = 3; %>
    <html>
    <head><title>IF...ELSE 示例</title></head>
    <body>
    <% if (day == 1 | day == 7) { %>
          <p> Today is weekend</p>
    <% } else { %>
          <p> Today is not weekend</p>
    <% } %>
    </body>
    </html> 

    在流覽器中打開網址:http://localhost:8080/jsp-base/if-else.jsp, 產生結果如下:

     

    現在來看以下 switch...case 塊,編寫通過使用out.println()和內小腳本有一點不同,把下麵代碼保存到 switch-case.jsp檔中,代碼詳細如下:

    <%! int day = 3; %>
    <html>
    <head><title>SWITCH...CASE 示例</title></head>
    <body>
    <%
    switch(day) {
    case 0:
       out.println("It\'s Sunday.");
       break;
    case 1:
       out.println("It\'s Monday.");
       break;
    case 2:
       out.println("It\'s Tuesday.");
       break;
    case 3:
       out.println("It\'s Wednesday.");
       break;
    case 4:
       out.println("It\'s Thursday.");
       break;
    case 5:
       out.println("It\'s Friday.");
       break;
    default:
       out.println("It's Saturday.");
    }
    %>
    </body>
    </html> 

    在流覽器中打開網址:http://localhost:8080/jsp-base/switch-case.jsp, 產生結果如下:

    迴圈語句

    還可以使用在Java中三種基本迴圈類型塊:for, while,and do.while 塊在JSP編程中。

    讓我們來看看下麵的for迴圈示例,把下麵代碼保存到 loop-for.jsp 檔中,代碼詳細如下:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%! int fontSize; %>
    <html>
    <head><title>FOR 迴圈示例</title></head>
    <body>
    <%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
       <font color="green" size="<%= fontSize %>">
        JSP Tutorial
       </font><br />
    <%}%>
    </body>
    </html> 

    在流覽器中打開網址:http://localhost:8080/jsp-base/loop-for.jsp, 產生結果如下:

    上面的示例可以使用 while 迴圈編寫,把下麵代碼保存到 loop-while.jsp 檔中,代碼詳細如下:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%! int fontSize; %>
    <html>
    <head><title>WHILE迴圈示例</title></head>
    <body>
    <h2>While迴圈示例:</h2>
    <%while ( fontSize <= 5){ %>
       <font color="green" size="<%= fontSize %>">
        JSP Tutorial
       </font><br />
    <%fontSize++;%>
    <%}%>
    </body>
    </html> 

    在流覽器中打開網址:http://localhost:8080/jsp-base/loop-while.jsp, 產生結果如下:

    JSP 運算符

    JSP支持所有支持Java的邏輯和算術運算符。下表給出了所有的運算符,具有最高優先順序將排在表的頂部, 運算級別最低的放在底部。

    在一個運算式中,具有更高的優先順序運算符將首先計算評估。

    分類 操作符 關聯 
    尾碼 () [] . (點運算符) 左->右
    一元 ++ - - ! ~ 右->左
    乘法 * / %  左->右
    加法 + -  左->右
    位移 >> >>> <<   左->右
    關係 > >= < <=   左->右 
    相等 == !=  左->右
    位與/AND  左->右 
    位XOR  左->右
    位OR  左->右
    邏輯AND  &&  左->右
    邏輯OR  ||  左->右 
    關係 ?:  右->左
    賦值 = += -= *= /= %= >>= <<= &= ^= |=  右->左
    逗號 左->右

    JSP 字面量

    JSP運算式語言定義了以下字面量:

    • Boolean: true 或 false

    • Integer: 與Java中的一樣

    • Float: 與Java中的一樣

    • String: 單引號和雙引號; " 轉義為 \"。' 轉義為 \', 以及 \ 轉義為 \\

    • Null: null

JSP對象範圍

定義為一個 JSP 對象範圍

說明
JSP對象所使用的可用性通常是由該對象的範圍限定。
Page 範圍:
使用此JSP對象可以在其中創建的頁面內使用。
Request 範圍:
使用該JSP對象可以在請求服務任何地方使用。
Session 範圍:
使用該JSP的對象可用於在屬於同一個會話頁面。
Application 範圍:
使用該JSP的對象可以在整個應用程式頁面中使用。

將下麵的代碼編寫到 scope1.jsp 檔,代碼內容如下所示:
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="Pag" value="Page Value" scope="page" />
<c:set var="Req" value="Request Value" scope="request" />
<c:set var="Ses" value="Session Value" scope="session" />
<c:set var="App" value="Application Value" scope="application" />
<html>
<body>
    <h2>JSP對象範圍示例一:</h2>
    <b>Page Scope</b> ::<c:out value="${Pag}" /><br>
    <b>Request Scope</b> ::<c:out value="${Req}" /><br>
    <b>Session Scope</b> ::<c:out value="${Ses}" /><br>
    <b>Application Scope</b>::<c:out value="${App}" /><br>
    <a href="scope2.jsp">下一頁Session,Application範圍</a>
</body>
</html>
在流覽器中打開網址:http://localhost:8080/jsp-base/scope1.jsp, 產生結果如下:

將下麵的代碼編寫到 scope2.jsp 檔,代碼內容如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<b>Page Scope</b> ::<c:out value="${Pag}" /><br>
<b>Request Scope</b> ::<c:out value="${Req}" /><br>
<b>Session Scope</b> ::<c:out value="${Ses}" /><br>
<b>Application Scope</b>::<c:out value="${App}" /><br>
</body>
</html>

上面的代碼運行結果如下:
Page Scope ::
Request Scope ::
Session Scope ::Session Value
Application Scope ::Application Value

 
在上面的例子“scope1.jsp”中,變數在四個作用域設置的值都被顯示出來。當點擊一個鏈接,並跳轉到下一個頁面“scope2.jsp”只顯示會話和應用範圍的變數值,因為第二頁沒有頁面,請求作用域。

在JSP頁面中創建方法

學習在一個JSP頁面裏面創建方法

解釋
方法即是可以在一個JSP頁面被用於執行特定操作的一個代碼段。
創建一個方法示例:

<%!
public int mul(int a, int b){
    return a * b;
}
%>
兩個數相乘的結果是:<%= mul(2, 2) %>

以上代碼保存,並執行結果如下:

兩個數相乘的結果是:4
 
另外,在上述例子中使用的方法是:mul,將返回一個整數值作為輸出。 它需要兩個整數“a”,“b”作為參數,以產生兩個數字的乘積作為輸出。

在JSP頁面中使用數組

如何在JSP頁面中使用數組?

解釋說明
由於JSP不是一個完整的編程語言不具有數組的聲明,但使用Java中的數據結構在JSP中使用是完全沒有問題的。
把下麵的代碼保存到 array.jsp 檔中,啟動 Tomcat 容器,並在流覽器中找開網址測試顯示結果。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String[] arr={"apple","orange","cherry"};
%>
<%
int j;
out.println("<p>數組中所有元素是:</p>");
for(j=0;j<arr.length;j++){
    out.println(arr[j]);
}
%>
把上面的代碼保存到檔:arr_demo.jsp,並在流覽器中打開網址:http://localhost:8080/jsp-base/array.jsp,得到以下結果:

 
 
在這個例子中,已經聲明了一個字串數組“arr”。使用for迴圈數組的每一個元素並顯示出來。

在JSP中使用Java Bean

如何在JSP中使用Java Bean?

Java bean只不過是一個實現java.io.Serializable介面,並且使用set/get方法來投射類的屬性。因為它們是一個Java bean類的實例並可重複使用,在JSP頁面中提供了靈活性,。
嵌入一個Java bean到JSP網頁,有三個基本動作或標籤:<jsp:useBean>, <jsp:setProperty>, <jsp:getProperty>

<jsp:useBean>

這個標籤是用來給bean指定“id”和“scope”屬性相關聯。

<jsp:setProperty>

這個標籤被用於設置一個beans屬性的值,主要使用“name”屬性已經定義了相同的範圍對象。其他屬性是 "property", "param", "value"

<jsp:getProperty>

這個標籤是用來獲取引用Bean實例屬性並將其存儲到隱式out對象。

Beans的規則:

  • 包應該是java bean的第一行
  • Bean應該有一個空的構造
  • 所有的bean中的變數應該設置有“get”,“set”方法。
  • 屬性名應以大寫字母開頭在使用“set”,“get”方法時。
  • 例如變數“名稱”的get,set方法就是getName(), setName(String)
  • 設置方法應該返回像一個空(void)值: "return void()"
創建一個包,名稱是:pack,打開工程,在 jsp-base 工程下,右鍵 "src" -> "new" -> "Package",然後出現對話框,寫入包名:pack,如下所示:


 
現在在 pack 包創建一個類,類的名稱是:Counter,對應檔是:src/pack/Counter.java,檔的詳細代碼如下圖所示:

package pack;
public class Counter
{
int count = 0;
String name;
public Counter() { }
public int getCount()
{
    return this.count;
}
public void setCount(int count){
    this.count = count;

public String getName(){
    return this.name; 

public void setName(String name){
    this.name=name; 
}
}


創建一個檔:use-bean.jsp,其代碼內容如下所示:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" %>
<%@ page import="pack.Counter" %>
</body>
<jsp:useBean id="counter" scope="page" class="pack.Counter" />
<jsp:setProperty name="counter" property="count" value="4" />
Get Value: <jsp:getProperty name="counter" property="count" /><BR>
<jsp:setProperty name="counter" property="name" value="xuhuhu.com" />
Get Name: <jsp:getProperty name="counter" property="name" /><BR>

另外,在上述示例正在包含的是Counter.java,已為“counter”,“name”屬性定義對象的set/get方法。使用 use-bean.jsp頁面使用<jsp:useBean>動作包含第一個bean,使用<jsp;setProperty>設置屬性 "counter" 的值為 "4" ,以及設置 "name" 的值為 "xuhuhu.com". 並使用 <jsp:getProperty> 來獲取它們的值。
把上面的代碼保存到檔:use-bean.jsp,並在流覽器中打開網址:http://localhost:8080/jsp-base/use-bean.jsp,得到以下結果:

JSP Session

在 JSP中如何處理 Session 數據?

解釋說明

會話處理變得必不可少,當一個請求數據需要被持續保持以供進一步使用。 由於HTTP協議認為每個請求是一個新的請求,它不能保持過去訪問的數據,因此會話處理就變得很重要。以下是一些來處理會話的方法。
  • JSP中每當發起一個請求,伺服器產生一個存儲在客戶機的唯一會話ID。
  • Cookies存儲資訊在客戶端流覽器
  • URL重寫會話資訊附加到URL的末尾
  • 隱藏的表單域將SessionID嵌入到GET和POST命令。
創建一個頁面 session.jsp,代碼如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>Session示例</title></head>
<body>
<h2>Session示例:</h2> 
<form method = "post" action="session2.jsp">
<font>Username<input type = "text" name = "name"></font>
</font><br><br>
<input type = "submit" name = "submit" value = "提交" >
</form>
</body>
</html>

創建另一個頁面 session2.jsp,代碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>Session示例2</title></head>
<body> 
<%
String name = request.getParameter("name");
if((name!=null))
{
    session.setAttribute("username",name);
}
%>
<a href="session3.jsp">繼續,跳轉到session3.jsp</a>
 

創建另一個頁面 session3.jsp,代碼如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head><title>Session示例3</title></head> 
<body>
<font>歡迎您,</font> <%= session.getAttribute("username") %>
</body>
</html>

在第一個示例中的 "session1.jsp" 是用來提供一個表單以獲得用戶名。 當提交表單時它轉到第二個檔session2.jsp,它調用表單的“action”屬性。一個Session的屬性使用 "session.setAttribute"設置在這裏. 在第三個檔 "session3.jsp" 相同的值使用"session.getAttribute" 來顯示出來。
 
在流覽器中打開網址:http://localhost:8080/jsp-base/session.jsp,得到以下結果:


 
填寫好用戶名,點擊“提交”,進入第二個過度頁面,如下:


 
然後再點擊頁面中的鏈接,進入第三個頁面,測試Session記錄的結果資訊,如下圖:

 

JSP Cookies資訊處理

在JSP中如何處理 Cookies ?

解釋說明

Cookies和會話有一些相似的地方,唯一的區別是cookies 存儲在流覽器。而會話存儲在伺服器端。讓我們來看看在JSP中處理Cookies的一些例子:
 
示例代碼: cookie1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<body>
<form method = "post" action="cookie2.jsp">
<font>Username<input type = "text" name = "name"></font>
</font><br>
<input type = "submit" name = "submit" value = "submit" >
</form>
</body>
</html>

 

示例代碼: cookie2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" import="java.util.*"%>
<%
String name=request.getParameter("name");
Cookie cookie = new Cookie ("name",name);
response.addCookie(cookie);
cookie.setMaxAge(50 * 50); //Time is in Minutes
%>
<a href="cookie3.jsp">Continue</a>

示例代碼: cookie3.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<p>顯示Cookie的值:</p>
<%
Cookie[] cookies = request.getCookies();
for (int i=0; i<cookies.length; i++){
    if(cookies[i].getName().equals("name"))
        out.println("Hello"+cookies[i].getValue());
}
%>

在第一個例子“cookie1.jsp”中,使用表單得到用戶名。當表單提交進入第二頁“cookie2.jsp”其中Cookie使用“cookie.setMaxAge”函數設置過期時間。在第三個頁面“cookie3.jsp”中,cookie使用函數“request.getCookies()”,並使用迴圈是得到了字段“username”的值並顯示。在流覽器中輸入網址:http://localhost:8080/jsp-base/cookie1.jsp ,測試輸出結果如下:

 
點擊"submit"按鈕後,得到以下介面:

 
點擊"Continue"鏈接後,得到結果如下介面所示:


刪除Cookies

示例代碼: cookie4.jsp

<%
Cookie cookie = new Cookie( "name", "" );
cookie.setMaxAge( 0 );
%>

另外,在上述例子中,我們已經創建的cookie的新實例並使用一個“null”值並將cookie的age設定為“0”。 這將刪除cookie。
 

在JSP中使用包

如何在JSP中使用包? 這裏給出一個示例...

解釋說明

Java類可以存儲在包中,在JSP中可得到有效使用。 下麵是解釋Java類用法的一個例子。

pack-demo.jsp

JSP中使用包 - 示例

Counter.java

package mypack;

public class Display {
	public String echoVar(String var) {
		return var;
	}
}
  在上面的例子中,我們使用包“mypack”中的類“Counter”。在這個例子中,我們在包創建一個類“Counter”,並實例化一個實例使用“echovar”方法中顯示輸入的文本。在流覽器中輸入網址:http://localhost:8080/jsp-base/pack-demo.jsp ,測試輸出結果如下:
 


上一篇: 下一篇: JSP開發環境