- Java EE 程序設計
- 郝玉龍編著
- 1527字
- 2019-07-01 10:16:09
4.3 腳本
JSP腳本是<%與%>之間用Java語言編寫的代碼塊。代碼塊必須完全符合Java語法,但可以配合使用HTML文本。這些Java代碼最終轉換為Servlet的一部分。一個JSP頁面可以包含任意多個腳本。
4.3.1 輸出表達式
<%=表達式%>輸出表達式的計算結果。表達式中的變量必須是前面已聲明過的變量。
注意:%與=之間不能有空格且表達式后面不需要分號。
依照4.2節介紹的操作步驟向Web應用JspBasic中添加JSP頁面expression.jsp。完整代碼如程序4-2所示。
程序4-2:expression.jsp
<%@ page language="java" pageEncoding="GB2312" %> <%@ page contentType="text/html; charset=gb2312" %> <! DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>JSP表達式</title> </head> <body bgcolor="#FFFFFF"> <% for(int i=1; i<=5; i++){%> <H<%=i%>>你好</H<%=i%>><BR> <%}%> </body> </html>
程序說明:JSP腳本代碼可以與HTML代碼混雜在一起。JSP腳本代碼可用來控制腳本產生動態內容。這里通過表達式<%=i%>動態生成HTML標記H1~H5來控制字符串"你好"的顯示效果。
保存程序并重新發布Web應用,打開IE瀏覽器,在地址欄輸入http://localhost:8080/JspBasic/expression.jsp,得到如圖4-4所示的運行結果頁面。

圖4-4 輸出表達式
4.3.2 注釋
在JSP頁面中有兩種類型的注釋。
(1)輸出到客戶端的注釋:<! -comment->。
(2)不輸出到客戶端的注釋:<%--comment--%>。它表示是JSP注釋,在服務器端將被忽略,也不轉化為HTML的注釋,在客戶端查看源碼時是看不到的。這種注釋一般是開發人員用來實現對程序代碼的說明,但同時又防止在客戶端看到,可有效保護代碼的安全性。
在expression.jsp中添加注釋,代碼如程序4-3所示。重新發布Web應用后,在客戶端瀏覽器地址欄輸入http://localhost:8080/JspBasic/expression.jsp。在運行結果頁面上右擊,選擇“查看源代碼”命令來查看頁面源代碼,源代碼如程序4-4所示,可以看到源代碼中不包含<%--comment--%>類型的注釋。
程序4-3:expression.jsp(添加注釋后)
<%@ page language="java" pageEncoding="GB2312" %> <%@ page contentType="text/html; charset=gb2312" %> <! DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>JSP表達式</title> </head> <body bgcolor="#FFFFFF"> <! -客戶端可以看到的注釋-> <% for(int i=1; i<=5; i++){%> <H<%=i %>>你好</H<%=i%>><BR> <%}%> <%--客戶端看不到的注釋--%> </body> </html>
程序4-4:expression.jsp的客戶端源代碼
<! DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>JSP表達式</title> </head> <body bgcolor="#FFFFFF"> <! -客戶端可以看到的注釋-> <H1>你好</H1><BR> <H2>你好</H2><BR> <H3>你好</H3><BR> <H4>你好</H4><BR> <H5>你好</H5><BR> </body> </html>
4.3.3 聲明變量、方法、類
在JSP腳本中可以聲明Java變量、方法和類。
1.聲明變量
格式:
<%!聲明代碼%>
為演示如何聲明變量,向Web應用JspBasic中添加頁面statement_vary.jsp。頁面代碼如程序4-5所示。
程序4-5:statement_vary.jsp
<%@ page language="java" pageEncoding="GB2312" %> <%@ page contentType="text/html; charset=GB2312" %> <HTML> <! DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <head> <title>聲明變量</title> </head> <BODY ><FONT size=5> <%i++; %> <P>您是第 <%=i%>個訪問本站的客戶。</p> <%! int i=0; %> </BODY> </HTML>
程序說明:JSP聲明變量的作用域為整個頁面。也就是說,在整個頁面的范圍內都可以訪問聲明的變量。因此將變量聲明<%! int i=0; %>放在變量引用<%i++; %>之后,程序照樣正確運行。
前面提到過,JSP頁面在運行時是被編譯成Servlet來運行的。在3.2節講過,Servlet在運行期間在服務器的容器內部只有一個實例在運行,對于不同的客戶端請求,產生不同的線程來響應。因此JSP頁面中聲明的變量,也稱為組件的全局變量。對變量的任何修改都會影響到所有訪問此頁面的客戶端。
重新發布Web應用后,在客戶端瀏覽器地址欄輸入http://localhost:8080/JspBasic/statement_vary.jsp。當第一次請求此頁面時,運行結果如圖4-5所示,頁面提示客戶端是第1個訪問頁面的用戶。而當刷新頁面或從另外一臺機器請求頁面時,程序運行結果如圖4-6所示,頁面提示客戶端是第2個訪問頁面的用戶,這是因為經過第1次請求,頁面中聲明的全局變量的值已經變成1而不再是0。

圖4-5 第1次請求頁面運行結果

圖4-6 第2次請求頁面運行結果
注意:%與!之間不能有空格。另外,除了4.3.1節介紹的Java表達式外,其他的Java腳本代碼都必須以分號結尾。而Java表達式絕不能以分號結尾。這一點必須牢記。
2.聲明方法
格式:
<%! 聲明代碼 %>
說明:該方法在整個JSP頁面有效,但該方法內定義的變量只在該方法內有效。
下面向Web應用JspBasic中添加頁面statement_Hello.jsp來演示如何在腳本中聲明方法。完整代碼如程序4-6所示。
程序4-6:sayHello.jsp
<%@ page language="java" %> <%@ page contentType="text/html; charset=GB2312" %> <! DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>聲明方法</title> </head> <body bgcolor="#FFFFFF"> <%! StringsayHello() { return "Hello"; } %> <%=sayHello()%> </body> </html>
程序說明:首先在腳本中聲明一個方法sayHello()來返回一個字符串,然后調用方法來獲取執行結果。
保存程序并重新發布Web應用,打開IE瀏覽器,在地址欄中輸入http://localhost:8080/JspBasic/statement_vary.jsp,得到如圖4-7所示的運行結果頁面。

圖4-7 方法聲明頁面運行結果
3.聲明類
格式:
<%! 聲明代碼 %>
腳本中聲明的類在JSP頁面內有效。下面向JspBasic應用中添加頁面statement_class.jsp來演示如何在腳本中聲明類。完整代碼如程序4-7所示。
程序4-7:statement_class.jsp
<%@ page language="java" %> <%@ page contentType="text/html; charset=GB2312" %> <! DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title>聲明類</title> </head> <body bgcolor="#FFFFFF"> <%! public class sayHello {boolean county ; sayHello(boolean county) {this.county=county; } String Hello() { if(county) return "Hello"; else return "你好"; } } %> <% sayHello a =new sayHello(false); %> <%=a.Hello()%> </body> </html>
程序說明:首先在腳本中聲明一個類sayHello,此類具有一個名稱為Hello的方法,用來返回一個提示信息。在隨后的代碼中,生成類sayHello的實例,并且調用類的Hello方法來獲取提示信息。
保存程序并重新發布Web應用,打開IE瀏覽器,在地址欄中輸入http://localhost:8080/JspBasic/statement_class.jsp,得到如圖4-8所示的運行結果頁面。

圖4-8 類聲明頁面運行結果
可以看到,在JSP腳本中變量、方法、類的聲明和使用與Java語言編程完全一致。
- Modular Programming with Python
- 控糖控脂健康餐
- Mastering Natural Language Processing with Python
- Learning Linux Binary Analysis
- Microsoft Dynamics GP 2013 Reporting, Second Edition
- 用Python實現深度學習框架
- Learning Python by Building Games
- Mastering JavaScript High Performance
- Working with Odoo
- jQuery炫酷應用實例集錦
- .NET 4.0面向對象編程漫談:應用篇
- Java程序設計教程
- 算法精解:C語言描述
- micro:bit軟件指南
- Lync Server Cookbook