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」(或桌面的圖標),啓動,啓動完成後畫面如下:

JSP快速入門

第二步,啓動 MyEclipse 中的Tomcat:

JSP快速入門

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

JSP快速入門

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

JSP第一個應用:

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

JSP快速入門

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

JSP快速入門

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

JSP快速入門

到這裏,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

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

Hello World - By yiibai.com Hello World!
<% out.println("Your IP address is " + request.getRemoteAddr()); %>

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

JSP快速入門

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

JSP快速入門

JSP 聲明

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

以下是JSP聲明的語法:

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

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

jsp:declaration
code fragment

下面是簡單的例子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-base,並在index.jsp文件中寫入以下代碼,下面是簡單的例子JSP表達式:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

JSP表達式 - by yiibai.com

今天是:<%=(new java.util.Date()).toLocaleString()%>

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

JSP快速入門

JSP註釋

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

以下是JSP註釋語法:

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

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

註釋 - 示例

A Test of Comments

<%-- This comment will not be visible in the page source \--%>

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

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

    語法

    目的

    <%-- comment --%>

    JSP註釋,它將被JSP引擎忽略

    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; %>

    IF...ELSE 示例 <% if (day \== 1 | day \== 7) { %>

    Today is weekend

    <% } else { %>

    Today is not weekend

    <% } %>

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

    JSP快速入門

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

    <%! int day = 3; %>

    SWITCH...CASE 示例 <% 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."); } %>

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

    JSP快速入門

    循環語句

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

    讓我們來看看下面的for循環示例,把下面代碼保存到 loop-for.jsp 文件中,代碼詳細如下:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%! int fontSize; %>

    FOR 循環示例 <%for ( fontSize = 1; fontSize <= 3; fontSize++){ %> JSP Tutorial
    <%}%>

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

    JSP快速入門

    上面的示例可以使用 while 循環編寫,把下面代碼保存到 loop-while.jsp 文件中,代碼詳細如下:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%! int fontSize; %>

    WHILE循環示例

    While循環示例:

    <%while ( fontSize <= 5){ %> JSP Tutorial
    <%fontSize++;%> <%}%>

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

    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" />

   

JSP對象範圍示例一:

    Page Scope ::
    Request Scope ::
    Session Scope ::
    Application Scope::
    下一頁Session,Application範圍

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

JSP快速入門

將下面的代碼編寫到 scope2.jsp 文件,代碼內容如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

Page Scope ::
Request Scope ::
Session Scope ::
Application Scope::

上面的代碼運行結果如下:

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("

數組中所有元素是:

");
for(j=0;j<arr.length;j++){
    out.println(arr[j]);
}
%>

把上面的代碼保存到文件:arr_demo.jsp,並在瀏覽器中打開網址: http://localhost:8080/jsp-base/array.jsp,得到以下結果:

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,如下所示:

JSP快速入門

現在在 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" %>

Get Value:
Get Name:

另外,在上述示例正在包含的是Counter.java,已爲「counter」,「name」屬性定義對象的set/get方法。使用 use-bean.jsp頁面使用<jsp:useBean>動作包含第一個bean,使用<jsp;setProperty>設置屬性 "counter" 的值爲 "4" ,以及設置 "name" 的值爲 "yiibai.com". 並使用 jsp:getProperty 來獲取它們的值。

把上面的代碼保存到文件:use-bean.jsp,並在瀏覽器中打開網址:http://localhost:8080/jsp-base/use-bean.jsp,得到以下結果:

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"%>

Session示例

Session示例:

 
Username

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

Session示例2   <% String name = request.getParameter("name"); if((name!=null)) {     session.setAttribute("username",name); } %> 繼續,跳轉到session3.jsp  

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

Session示例3  歡迎您, <%= session.getAttribute("username") %>

在第一個示例中的 "session1.jsp" 是用來提供一個表單以獲得用戶名。 當提交表單時它轉到第二個文件session2.jsp,它調用表單的「action」屬性。一個Session的屬性使用 "session.setAttribute"設置在這裏. 在第三個文件 "session3.jsp" 相同的值使用"session.getAttribute" 來顯示出來。

在瀏覽器中打開網址:http://localhost:8080/jsp-base/session.jsp,得到以下結果:

JSP快速入門  

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

JSP快速入門  

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

JSP快速入門

JSP Cookies信息處理

在JSP中如何處理 Cookies ?

解釋說明

Cookies和會話有一些相似的地方,唯一的區別是cookies 存儲在瀏覽器。而會話存儲在服務器端。讓我們來看看在JSP中處理Cookies的一些例子:

示例代碼: cookie1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

Username

示例代碼: 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
%>
Continue

示例代碼: cookie3.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

顯示Cookie的值:

<% Cookie\[\] cookies = request.getCookies(); for (int i=0; i

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

JSP快速入門

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

JSP快速入門

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

JSP快速入門

刪除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快速入門

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快速入門