官术网_书友最值得收藏!

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語言編程完全一致。

主站蜘蛛池模板: 东港市| 南安市| 务川| 福鼎市| 临潭县| 池州市| 宜春市| 贵港市| 鸡泽县| 仪征市| 楚雄市| 高雄县| 江陵县| 南投县| 河曲县| 永修县| 望城县| 比如县| 措美县| 武宣县| 西林县| 曲阜市| 梅州市| 双桥区| 伊川县| 合肥市| 广宗县| 贞丰县| 安新县| 民乐县| 临湘市| 张北县| 邵东县| 承德市| 吉安县| 图片| 郴州市| 曲沃县| 凤冈县| 太仆寺旗| 彭阳县|