Scriptlets
我們已經看到如何嵌入的Java表達的JSP頁面把他們之間的<% = %>字元序列。
但很難做節目只是把裡面的Java運算式的HTML 。
JSP技術也可以讓你寫塊Java代碼內的JSP技術。您做到這一點,將您的Java代碼之間的“ %和% ”字元(就像表達,但沒有跡象=開始時的順序。 )
這個代碼塊被稱為“ scriptlet ” 。本身,一個scriptlet不會有助於任何HTML (儘管它可以,因為我們將看到樓下。 )在scriptlet包含Java代碼是每一次執行的JSP技術是援引。
以下是修改後的版本的JSP技術從上一節,增加了scriptlet 。
<HTML>
<BODY>
<%
// This is a scriptlet. Notice that the "date"
// variable we declare here is available in the
// embedded expression later on.
System.out.println( "Evaluating date now" );
java.util.Date date = new java.util.Date();
%>
Hello! The time is now <%= date %>
</BODY>
</HTML>
如果您運行上面的例子中,您會發現輸出從“ System.out.println ”的伺服器日誌。這是一個方便的方法做簡單的調試(有些伺服器也有技術調試JSP技術在IDE中。查看您的伺服器的檔案,看它是否提供了這樣一種技術。 )
據本身就是一個scriptlet不會產生的HTML 。如果scriptlet要產生的HTML ,它可以使用一個變數所謂的“去” 。這個變數並不需要宣布。它已經預先為scriptlets ,加上其他一些變數。以下樣本顯示如何scriptlet可以產生HTML輸出。
<HTML>
<BODY>
<%
// This scriptlet declares and initializes "date"
System.out.println( "Evaluating date now" );
java.util.Date date = new java.util.Date();
%>
Hello! www.111cn.net
<%
// This scriptlet generates HTML output
out.println( String.valueOf( date ));
%>
在這裡,而不是使用的一種表現,我們正在創造的HTML直接列印的“去”變數。在“去”變數類型javax.servlet.jsp.JspWriter 。
另一個非常有用的預先定義的變數是“請求” 。這是類型javax.servlet.http.HttpServletRequest
“要求”在伺服器端處理是指交易之間的瀏覽器和伺服器。當有人點擊或輸入網址,瀏覽器發出了一個“請”到伺服器的該網址,並顯示返回的資料。作為這項工作的一部分“要求” ,各種資料,包括檔案瀏覽器想從伺服器,如果請求是來自緊迫的一個提交按鈕,資訊的使用者已進入的形式領域。
在JSP的“請求”的變數是用來擷取資訊的請求派出的瀏覽器。例如,你可以找到的名字用戶端的主機(如果有的話,否則的IP地址將被退還。 )讓我們修改代碼所示:
<HTML>
<BODY>
<%
// This scriptlet declares and initializes "date"
System.out.println( "Evaluating date now" );
java.util.Date date = new java.util.Date();
%>
Hello! The time is now www.111cn.net
<%
out.println( date );
out.println( "<BR>Your machine's address is " );
out.println( request.getRemoteHost());
%>
</BODY>
</HTML>
類似的變數是“反應” 。這可以用來影響的反應被發送到瀏覽器。例如,您可以調用response.sendRedirect ( anotherUrl ) ;發送響應到瀏覽器,它應該載入不同的網址。這種反應實際上將一路走下去的瀏覽器。該瀏覽器便會發出不同的要求,以“ anotherUrl ” 。這是一個什麼不同於其他一些JSP的機制,我們會碰到,因為包括另一網頁或轉寄的瀏覽器到另一個網頁。
練習:寫JSP技術到輸出的整個路線, “您好!現在是時候... ”但使用scriptlet全面字串,其中包括HTML標記