天堂888-欧美黄色小说-熟睡侵犯の奶水授乳在线-初尝情欲h名器av-亚洲天堂免费视频-日韩五十路-免费在线国产-国产又大又黄又粗-久草导航-色播导航-亚洲免费资源-熟女一区二区三区视频-亚洲美女视频在线-亚洲成人福利视频-婷婷精品在线-亚洲综合p-中文字幕 日本-亚洲骚片-亚洲自拍偷拍网-国产农村妇女精品一区二区-午夜中出-久久精品国产精品亚洲毛片-91精品毛片-99爱视频在线-狠狠操亚洲-美女让人操-里番本子纯肉侵犯肉全彩无码-999偷拍

JSP簡明教程:令人興奮的腳本編程[2]

程序員 責任編輯:wfdabao 2008-06-17

添加老師微信

備考咨詢

加我微信

摘要:Scriptlets(腳本片斷)到現在為止你已經學會了使用指令來引入任何Java類或Java包,你能定義頁面級的方法或變量并在頁中使用它們,你還可以使用提供普通web處理功能的隱含變量。還能在JSP頁內做些什么就取決于你了,因為你可以在scriptlets(腳本片斷)里編寫任何你想要的Java代碼,如下所示:通過在page指令中使用IMPORT參數,你

Scriptlets(腳本片斷)

到現在為止你已經學會了使用指令來引入任何Java類或Java包,你能定義頁面級的方法或變量并在頁中使用它們,你還可以使用提供普通web處理功能的隱含變量。還能在JSP頁內做些什么就取決于你了,因為你可以在scriptlets(腳本片斷)里編寫任何你想要的Java代碼,如下所示:<% ...code... %>

通過在page指令中使用IMPORT參數,你可以從腳本片斷內調用所有Java API。因為你寫的所有JSP代碼實際上都被編譯構成Java servlet,它本身就是一個Java類,所以你所用的語言本身就是Java,而不是任何一種修改或整理過的版本。這就像在SSJS中你可以編寫任何代碼一樣。而與SSJS不同,在JSP中你有權使用整套豐富的Java API,因此幾乎沒有任何局限性。

Implicit Variables(隱含變量)

前面提到過,JSP定義了一些隱含變量(即Java 對象)供你在表達式和腳本片斷中使用。《JSP Specification Version 1.0》的表2-2列出了JSP1.0中可用的隱含變量。這里列出一些常用的對象:

out對象,類型為javax.servlet.jsp.JspWriter,提供對方法(例如print()方法)的訪問,用來在腳本片斷內生成輸出結果。

request對象直接與Java中的javax.servlet.http.HttpServletRequest類對應,具有該類的對象的一切屬性和方法。舉個例子,要獲取一個從HTML表單或URL查詢字串傳入的值,可以調用request.getParameter()方法,根據名字獲取參量。

response對象與Java中的javax.servlet.http.HttpServletResponse類對應,提供對你的網頁產生的HTML響應的參數的訪問權。因此,要在JSP頁返回的HTML響應報頭中加入一個值,你就可以調用the response.setHeader() 方法來實現。

另一個簡單的例子

在下面的例子中,我們來看一看一個表單和它的JSP表單句柄之間的交互過程。使用前面討論過的腳本元素,我實現了一個簡單的web站點回饋表單(見圖2)和一個JSP表單句柄用來驗證輸入,然后有條件地地生成基于回饋的輸出。

表單句柄將會檢驗名稱和意見欄以確定它們已被填寫,如果其中任何一個或兩個是空白的,表單句柄會生成一條錯誤信息;否則它將繼續查看用戶意見是否與預先設定的字串匹配。如果匹配,它就輸出一條專門的信息;否則輸出“thank you”。

例2 <%

// 獲取通過表單提交的數據

String name = request.getParameter("name");

String age = request.getParameter("age");

String comment = request.getParameter("comment");

boolean isValid;

isValid = validateInput(name, comment);

// 根據用戶是否未填寫姓名或意見欄決定輸出內容

if (isValid) {

%>

Thank you for your feedback! 

  這個例子假定用戶輸入的意見是“I like cheese."(我喜歡奶酪)在代碼中可以看到,這一響應是為填寫這條意見的用戶定制的。表單句柄將會返回如圖3所示的頁面:

這個例子非常簡單易懂。即便你只是一個JavaScript程序員,你也應該可以理解它。我還要指出這個例子中體現的在JSP規范中并不很明顯的一些特性。首先,請注意我在聲明部分(<%'...%>中的部分)定義了一些方法,與在Java類中定義方法一模一樣。這是因為JSP引擎把這些方法轉變為底層的Java servlets,在瀏覽器向網頁發出請求時由服務器來執行它們。因此,任何變量和方法的定義都必須遵守標準的Java語法。

還應注意到,在我的腳本片斷的代碼中,我把一個if...else語句分開了,它跨越了兩個不同的腳本片斷段。這完全是合法的!不僅合法,而且把腳本片斷代碼和靜態HTML交叉起來是有條件生成HTML的好辦法,就像我在本例中所做到的一樣。

最后,你可以看到我通過調用request.getParameter()方法取得表單元素的值并把它賦給一個臨時變量。這是處理從表單或查詢字串輸入的值的標準方法。

[1]  [2]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

軟考備考資料免費領取

去領取

!
咨詢在線老師!