狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細頁面

JSP簡明圖文詳細教程:令人興奮的腳本編程

JSP簡明圖文詳細教程:令人興奮的腳本編程

更新時間:2019-05-15 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

如果你是直接使用Java servlets,那你將不得不在Java類中處理HTTP輸入和HTML輸出,你需要豐富的Java編程經(jīng)驗來構(gòu)建復(fù)雜的應(yīng)用程序。JSP的加入,使你可以把HTML的表達邏輯從植入servlets中的復(fù)雜的商務(wù)邏輯區(qū)分開來。這意味著可以由有經(jīng)驗的腳本編寫者來編寫表達層代碼,而高級的Java開發(fā)者能夠集中精力去解決servlets和bean中更為復(fù)雜的問題。

  不管你有沒有Java編程知識,都能夠使用JSP。JSP包含了一些服務(wù)器端的標(biāo)簽,使得不用寫一行Java代碼就能顯示動態(tài)數(shù)據(jù)。你可以直接訪問bean來完成操作,然后使用JSP標(biāo)簽把結(jié)果顯示為動態(tài)內(nèi)容。你還可以用servlets生成bean,servlets 操作的運算結(jié)果存于其中,然后再使用JSP標(biāo)簽顯示結(jié)果,同樣不需要在JSP頁中寫Java代碼。

  有三種方式可以用來在你的網(wǎng)頁中加入Java代碼:

  1、使用declarations(聲明),可以定義全局變量或是在頁內(nèi)任何地方都可以訪問的Java方法。聲明被包含在標(biāo)記<%!...%>中。

  2、使用scriptlets(腳本片斷),你能書寫頁內(nèi)處理所需的任何邏輯,它們包含在<%...%>標(biāo)記內(nèi)。

  3、Expressions(表達式),包含于<%=...%>中。它提供一種簡單的方法來顯示Java表達式的結(jié)果。被附加上的表達式將被計算并在頁面上顯示出來,就好像你已經(jīng)在代碼中明確寫出了運算結(jié)果的數(shù)值一樣。

  在你自己編寫的代碼中,可以使用一些隱含變量(implicit variables)――JSP提供的預(yù)定義的Java對象。另外,通過使用JSP的指令(directives), 還可以包含非Java代碼模塊,比如來自其他文件的HTML文本。

  下面我們來仔細看一看這些腳本元素,在編寫你自己的JSP腳本時將會經(jīng)常用到它們。

Directives(指令)
  JSP定義了三個頁內(nèi)指令用于設(shè)置JSP參數(shù)或擴充代碼。它們是 page,include和taglib,必須寫在JSP頁的第一行。語法如下:

  <%@ directive attribute="value" ... %>

  page指令允許你為網(wǎng)頁設(shè)定一些基本參數(shù),包括設(shè)置所用腳本語言的參數(shù)(默認為Java)、你的腳本片斷中引入的Java類、設(shè)置輸出緩沖區(qū)等等。完整的page指令參數(shù)表見《JSP Specification Version 1.0》(《JSP規(guī)范1.0》)的2.8.1章。

  使用include指令,可以包含其他文件的內(nèi)容,比如存于單獨文件中的HTML報頭和頁腳。

  taglib指令用于擴充標(biāo)準(zhǔn)的JSP標(biāo)簽集,這超出了本文的討論范圍。然而,了解JSP定義了一種擴充其標(biāo)簽集的方法還是很有好處的,當(dāng)你是一個軟件商,想擴充JSP的原始功能而又不想破壞其兼容性時,這一點尤為重要。

Declarations(聲明)
  使用declarations,你可以在JSP頁中定義方法或變量,它們可被同一頁中的其他代碼訪問。在大多數(shù)情況下,你可能會在自己的bean中定義方法。然而,有時候在網(wǎng)頁內(nèi)定義方法可能更方便一些,尤其是當(dāng)代碼只用于單一頁面時。不論定義方法還是變量,聲明都包含在<%! %>標(biāo)記內(nèi)。

  注意,聲明并不在JSP頁內(nèi)產(chǎn)生任何輸出。它們僅僅用于定義,而不生成輸出結(jié)果。要生成輸出結(jié)果,你應(yīng)該用JSP表達式或腳本片斷。

Expressions(表達式)
  Expressions是一種非常簡單的JSP標(biāo)簽,它用來把在<%= %>中定義的JSP表達式的值轉(zhuǎn)換成字串并將這個值以動態(tài)文本的形式送出。Expression的確是一條生成文本的捷徑,有了它,你不必在每次要顯示一段動態(tài)文本的時候都去調(diào)用print()方法。典型的應(yīng)用就是,你可以用expressions顯示簡單的變量值或bean中的方法的返回值。

  例如,下面的代碼將會生成getName()方法的返回值:

  <H2>Welcome, <%= mybean.getName() %></H2>

  事實上,在生成動態(tài)輸出之前,JSP必須把方法的返回值轉(zhuǎn)變?yōu)镴ava中的String對象。JSP規(guī)范中詳細描述了在JSP表達式中,什么樣的Java類型和Java類會被轉(zhuǎn)變成字串。

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

  <% ...code... %>

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

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

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

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

   response對象與Java中的javax.servlet.http.HttpServletResponse類對應(yīng),提供對你的網(wǎng)頁產(chǎn)生的HTML響應(yīng)的參數(shù)的訪問權(quán)。因此,要在JSP頁返回的HTML響應(yīng)報頭中加入一個值,你就可以調(diào)用the response.setHeader() 方法來實現(xiàn)。

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

  圖2.一個web站點回饋表單


  圖中按鈕:submit query--提交;reset――重填

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

  例2

  <HTML>

  <HEAD>

  <META NAME="GENERATOR" Content="NetObjects ScriptBuilder 2.01">

  <TITLE>Feedback Results</TITLE>

  </HEAD>

  <%!

  // 姓名和意見欄不能為空白

  // 檢查它們的值并返回結(jié)果

  boolean validateInput(String name, String comment) {

   boolean result = true;

   // 如果姓名或意見未填寫,返回 false 以表明輸入無效

   if (name.length() == 0)

     result = false;

   if (comment.length() == 0)

     result = false;

   return result;

  } // 結(jié)束輸入驗證validateInput



  // 根據(jù)表單上的意見欄輸出結(jié)果

  String getStringCheese (String comment) {

   String cheese = "I like cheese.";

   String result;

   if (comment.compareTo(cheese) == 0)

    result = "We like cheese too!";

   else

    result = "We hope someday you'll learn to like cheese.";

   return result;

  } //結(jié)束 getStringCheese

  %>

  <BODY BGCOLOR="#F0F0E0">

  <%

   // 獲取通過表單提交的數(shù)據(jù)

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

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

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

   boolean isValid;

   isValid = validateInput(name, comment);

   // 根據(jù)用戶是否未填寫姓名或意見欄決定輸出內(nèi)容

   if (isValid) {

  %>

  <H2>Thank you for your feedback!</H2>

  <H3>

  <%

    //輸出意見欄的查詢結(jié)果

    out.println(getStringCheese(comment));

   } // 結(jié)束 if 程序段

  else {

    out.println("You didn't give us your name or a comment.");

  %>

  </H3>

  Please <a href="feedback_form.html">try again</a>

  <%

   } //結(jié)束 else 程序段

  %>

  </BODY>

  </HTML>

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

  圖3.表單句柄輸出


  圖中文字:謝謝你的反饋!我們也喜歡奶酪。

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

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

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

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
中文字幕欧美日韩一区| 日韩一级二级三级精品视频| 欧美乱妇一区二区三区不卡视频| 日韩一区二区视频| 国产精品夫妻自拍| 蜜桃视频在线观看一区| av资源网一区| 国产最新精品精品你懂的| 丝袜美腿成人在线| 成人中文字幕在线| 国产日韩一区二区| 欧美一区国产二区| 亚洲精品视频在线观看网站| 国产一区二区三区日韩| 亚洲一二区在线| 欧洲av在线精品| 国产欧美一区在线| 欧美日韩亚洲高清一区二区| 色999日韩国产欧美一区二区| 亚洲精品在线一区二区| 亚洲成a人片综合在线| 成人黄色a**站在线观看| 亚洲女人av| 精品国产一区二区三区av性色| 亚洲午夜国产一区99re久久| 五月婷婷综合网| 99精品桃花视频在线观看| 久久精品主播| 国产欧美视频一区二区三区| 欧美96一区二区免费视频| 欧美性久久久| 欧美精品久久久久久久多人混战| 日韩毛片一二三区| 国产98色在线|日韩| 欧美亚洲在线| 国产欧美一二三区| 国产一区二区在线电影| 亚洲深夜激情| 亚洲免费大片| 一本色道a无线码一区v| 亚洲人快播电影网| 91精品国产品国语在线不卡| 亚洲色图欧美在线| 粗大黑人巨茎大战欧美成人| 久久国产精品久久w女人spa| 国产日韩av一区二区| 精品一区二区在线播放| 99亚洲视频| 久久久久久电影| 日韩色在线观看| 欧美猛男gaygay网站| 一区二区三区四区视频精品免费 | 亚洲精品视频免费看| 成人中文字幕电影| 在线欧美小视频| 亚洲精品乱码久久久久久 | 欧美成人r级一区二区三区| 日韩高清不卡在线| 亚洲欧洲日本国产| 久久精品视频在线免费观看| 国内精品国产成人国产三级粉色 | 永久域名在线精品| 色呦呦日韩精品| 亚洲精选免费视频| 欧美sm重口味系列视频在线观看| 欧美二区三区的天堂| 日本成人在线看| 国产一区二区你懂的| 国产精品美女久久久久aⅴ国产馆| 粉嫩蜜臀av国产精品网站| 欧美影视一区在线| 亚洲一区二区三区四区在线免费观看 | 国产麻豆9l精品三级站| 久久精品电影| 亚洲乱码一区二区三区在线观看| 国产欧美一区二区三区沐欲| 亚洲精品日日夜夜| 欧美久色视频| 色偷偷成人一区二区三区91| 樱桃国产成人精品视频| 伊伊综合在线| 中文字幕不卡的av| 色综合天天天天做夜夜夜夜做| 日韩一区二区麻豆国产| 精品一区二区在线免费观看| 色成人在线视频| 性做久久久久久久久| 国产欧美日韩伦理| 亚洲卡通动漫在线| 亚洲人体一区| 亚洲欧美视频在线观看视频| 韩国久久久久| 色综合久久99| 欧美国产日本韩| 欧美一区二区三区四区在线观看地址 | 一区在线播放| 国产精品激情偷乱一区二区∴| 91美女片黄在线| 久久精品夜夜夜夜久久| 91麻豆蜜桃一区二区三区| 久久久99精品免费观看| 91网站在线播放| 久久久久国产精品麻豆ai换脸| 不卡av免费在线观看| 久久综合九色综合97婷婷| 99久久精品费精品国产一区二区| 国产精品美女| 久久综合色播五月| 中文字幕免费不卡在线| 91视频.com| 国产日本欧美一区二区| 欧美大香线蕉线伊人久久国产精品| 久久婷婷成人综合色| 91蜜桃免费观看视频| 国产日韩欧美精品综合| 狠狠色综合网| 亚洲精品乱码久久久久久黑人| 国产区欧美区日韩区| 亚洲v日本v欧美v久久精品| 久久久久欧美精品| 免费观看日韩av| 欧美人狂配大交3d怪物一区| 久久久一区二区三区捆绑**| 国产精品1区二区.| 欧美成人aa大片| 91麻豆精品视频| 中文字幕中文字幕一区| 国产日韩欧美亚洲一区| 丝袜诱惑亚洲看片| 欧美视频中文字幕| 国产成人在线视频免费播放| 2021中文字幕一区亚洲| 欧美日韩在线精品| 亚洲激情网站免费观看| 久久在线91| 国产麻豆一精品一av一免费 | **欧美大码日韩| 亚洲综合另类| 激情av综合网| 337p日本欧洲亚洲大胆色噜噜| 国产精品播放| 99精品国产在热久久| 国产剧情一区二区三区| 亚洲大黄网站| 亚洲一区二区三区四区在线| 一本色道**综合亚洲精品蜜桃冫 | 国产精品亚洲不卡a| 奇米精品一区二区三区在线观看 | 午夜在线视频一区二区区别| 免费成人在线观看| 日韩精品一区二区三区四区视频| 色综合天天综合狠狠| 亚洲精品护士| 日本aⅴ免费视频一区二区三区| 制服丝袜亚洲色图| 欧美久久一级| 无码av免费一区二区三区试看| 欧美日韩aaaaaa| 色综合视频在线观看| 亚洲在线观看免费视频| 欧美猛男gaygay网站| 欧美fxxxxxx另类| 午夜精品久久久久影视| 日韩一区二区三区高清免费看看 | 国产91精品一区二区麻豆网站| 亚洲国产精品v| 六月丁香综合| 成人毛片老司机大片| 亚洲欧美日韩在线播放| 欧美色网站导航| 欧美国产精品| 日韩二区三区在线观看| 欧美成人午夜电影| 一区二区三区偷拍| 亚洲伦理在线精品| 欧美日韩中文国产| 欧美激情日韩| 石原莉奈在线亚洲二区| 欧美色爱综合网| 亚洲三级观看| 国产精品家庭影院| 欧美午夜不卡视频| 欧美日韩在线精品一区二区三区| 天天色综合天天| 久久亚洲综合av| 香蕉成人久久| 99久久综合99久久综合网站| 亚洲成人免费在线观看| 精品裸体舞一区二区三区| 国产精品一级片在线观看| 91精品蜜臀在线一区尤物| 91久久国产综合久久蜜月精品| 国产在线看一区| 亚洲精品国产品国语在线app| 欧美久久久久久久久| 99视频日韩| 暴力调教一区二区三区| 天天综合色天天综合| 中文字幕巨乱亚洲| 欧美久久久影院|