另外一個被預定義非常有用的變量是“request”。它是一種javax.servlet.http.HttpServletRequest。
在服務器端“request”處理浏覽器和服務器之間的工作。當用戶點擊連接或者鍵入一個URL,浏覽器就會為那個URL發送一個“request”給服務器並且顯示返回的數據。作為這個“request”的一部分,各種數據是可利用的,這些數據包括浏覽器想從服務器中取得的文件;並且如果這個請求(request)是通過按下SUBMIT(提交)按鈕發來的,這些數據還包括用戶鍵入到表單區域的信息。
JSP的“request”變量用於獲得從由浏覽器發送的請求的信息。舉個例子,你可以知道客戶主機的名字,或者只能獲得此主機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
<%
out.println( date );
out.println( "<BR>Your machines address is " );
out.println( request.getRemoteHost());
%>
</BODY>
</HTML>
還有一個類似的變量,“response”。這個變量用於影響被發送到浏覽器的響應。為了更好的理解這句話的意思,我們來舉個例子,你可以調用response.sendRedirect( anotherUrl )來發送一個響應給浏覽器,接著這個浏覽器就會發送一個不同的請求給“anotherUrl”。這看起來跟一些我們遇到的JSP機理有點不同,比如它包括了另外的網頁或者轉發浏覽器給其它的網頁。
本教程的特點是每個教程結束後都要作個練習。這次的練習為:編寫一個JSP來輸出完整的行“Hello! The time is now.”,當然還要為這個字符串編寫一個scriptlet,包括HTML標記。這裡還需要再提醒一下,這些練習對鞏固所學知識和加深理解都是很有幫助,所以我希望所有學員都要認真地作練習。