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 Home page

這裡包括,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 tw511.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 tw511.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="tw511.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" 的值為 "tw511.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 ,測試輸出結果如下: