亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP技術簡介

2020-07-27 21:54:15
字體:
來源:轉載
供稿:網友
一、 JSP 技術概述

   在 Sun 正式發布 JSP(JavaServer Pages) 之后,這種新的 Web 應用開發技術很快引起了人們的關注。 JSP 為創建高度動態的 Web 應用提供了一個獨特的開發環境。按照 Sun 的說法, JSP 能夠適應市場上包括 Apache WebServer 、 IIS4.0 在內的 85% 的服務器產品。即使您對 ASP "一往情深",我們認為,關注 JSP 的發展仍舊很有必要。

   ㈠ JSP 與 ASP 的簡單比較

   JSP 與 Microsoft 的 ASP 技術非常相似。兩者都提供在 HTML 代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。在 ASP 或 JSP 環境下, HTML 代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的 HTML 頁面只依賴于 Web 服務器,而 ASP 和 JSP 頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到 HTML 代碼中,然后一起發送給瀏覽器。 ASP 和 JSP 都是面向 Web 服務器的技術,客戶端瀏覽器不需要任何附加的軟件支持。

   ASP 的編程語言是 VBScript 之類的腳本語言, JSP 使用的是 Java ,這是兩者最明顯的區別。此外, ASP 與 JSP 還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在 ASP 下, VBScript 代碼被 ASP 引擎解釋執行;在 JSP 下,代碼被編譯成 Servlet 并由 Java 虛擬機執行,這種編譯操作僅在對 JSP 頁面的第一次請求時發生。

   ㈡運行環境

   Sun 公司的 JSP 主頁在 http://www.javasoft.com/products/jsp/index.html ,從這里還可以下載 JSP 規范,這些規范定義了供應商在創建 JSP 引擎時所必須遵從的一些規則。

   執行 JSP 代碼需要在服務器上安裝 JSP 引擎。此處我們使用的是 Sun 的 JavaServer Web Development Kit ( JSWDK )。為便于學習,這個軟件包提供了大量可供修改的示例。安裝 JSWDK 之后,只需執行 startserver 命令即可啟動服務器。在默認配置下服務器在端口 8080 監聽,使用 http://localhost:8080 即可打開缺省頁面。

   在運行 JSP 示例頁面之前,請注意一下安裝 JSWDK 的目錄,特別是" work "子目錄下的內容。執行示例頁面時,可以在這里看到 JSP 頁面如何被轉換成 Java 源文件,然后又被編譯成 class 文件(即 Servlet )。 JSWDK 軟件包中的示例頁面分為兩類,它們或者是 JSP 文件,或者是包含一個表單的 HTML 文件,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在服務器端執行。因此,在瀏覽器中使用"查看源文件"菜單是無法看到 JSP 源代碼的,只能看到結果 HTML 代碼。所有示例的源代碼均通過一個單獨的" examples "頁面提供。

   ㈢ JSP 頁面示例

   下面我們分析一個簡單的 JSP 頁面。您可以在 JSWDK 的 examples 目錄下創建另外一個目錄存放此文件,文件名字可以任意,但擴展名必須為 .jsp 。從下面的代碼清單中可以看到, JSP 頁面除了比普通 HTML 頁面多一些 Java 代碼外,兩者具有基本相同的結構。 Java 代碼是通過 < % 和 %> 符號加入到 HTML 代碼中間的,它的主要功能是生成并顯示一個從 0 到 9 的字符串。在這個字符串的前面和后面都是一些通過 HTML 代碼輸出的文本。

  < HTML>
  < HEAD>< TITLE>JSP 頁面 < /TITLE>< /HEAD>
  < BODY>
  < %@ page language="java" %>
  < %! String str="0"; %>
  < % for (int i=1; i < 10; i++) {
  str = str + i;
  } %>
  JSP 輸出之前。
  < P>
  < %= str %>
  < P>
  JSP 輸出之后。
  < /BODY>
  < /HTML>

   這個 JSP 頁面可以分成幾個部分來分析。

首先是 JSP 指令。它描述的是頁面的基本信息,如所使用的語言、是否維持會話狀態、是否使用緩沖等。 JSP 指令由 < %@ 開始, %> 結束。在本例中,指令" < %@ page language="java" %> "只簡單地定義了本例使用的是 Java 語言(當前,在 JSP 規范中 Java 是唯一被支持的語言)。
接下來的是 JSP 聲明。 JSP 聲明可以看成是定義類這一層次的變量和方法的地方。 JSP 聲明由 < %! 開始, %> 結束。如本例中的" < %! String str="0"; %> "定義了一個字符串變量。在每一項聲明的后面都必須有一個分號,就象在普通 Java 類中聲明成員變量一樣。
位于 < % 和 %> 之間的代碼塊是描述 JSP 頁面處理邏輯的 Java 代碼,如本例中的 for 循環所示。
最后,位于 < %= 和 %> 之間的代碼稱為 JSP 表達式,如本例中的" < %= str %> "所示。 JSP 表達式提供了一種將 JSP 生成的數值嵌入 HTML 頁面的簡單方法。


   會話狀態維持是 Web 應用開發者必須面對的問題。有多種方法可以用來解決這個問題,如使用 Cookies 、隱藏的表單輸入域,或直接將狀態信息附加到 URL 中。 Java Servlet 提供了一個在多個請求之間持續有效的會話對象,該對象允許用戶存儲和提取會話狀態信息。 JSP 也同樣支持 Servlet 中的這個概念。

   在 Sun 的 JSP 指南 中可以看到許多有關隱含對象的說明(隱含的含義是,這些對象可以直接引用,不需要顯式地聲明,也不需要專門的代碼創建其實例)。例如 request 對象,它是 HttpServletRequest 的一個子類。該對象包含了所有有關當前瀏覽器請求的信息,包括 Cookies , HTML 表單變量等等。 session 對象也是這樣一個隱含對象。這個對象在第一個 JSP 頁面被裝載時自動創建,并被關聯到 request 對象上。與 ASP 中的會話對象相似, JSP 中的 session 對象對于那些希望通過多個頁面完成一個事務的應用是非常有用的。

   為說明 session 對象的具體應用,接下來我們用三個頁面模擬一個多頁面的 Web 應用。第一個頁面( q1.html )僅包含一個要求輸入用戶名字的 HTML 表單,代碼如下:

  < HTML>
  < BODY>
  < FORM METHOD=POST ACTION="q2.jsp">
 請輸入您的姓名:
  < INPUT TYPE=TEXT NAME="thename">
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>

   第二個頁面是一個 JSP 頁面( q2.jsp ),它通過 request 對象提取 q1.html 表單中的 thename 值,將它存儲為 name 變量,然后將這個 name 值保存到 session 對象中。 session 對象是一個名字 / 值對的集合,在這里,名字 / 值對中的名字為" thename ",值即為 name 變量的值。由于 session 對象在會話期間是一直有效的,因此這里保存的變量對后繼的頁面也有效。 q2.jsp 的另外一個任務是詢問第二個問題。下面是它的代碼:

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String name=""; %>
  < %
  name = request.getParameter("thename");
  session.putValue("thename", name);
  %>
 您的姓名是: < %= name %>
  < p>
  < FORM METHOD=POST ACTION="q3.jsp">
 您喜歡吃什么 ?
  < INPUT TYPE=TEXT NAME="food">
  < P>
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>

   第三個頁面也是一個 JSP 頁面( q3.jsp ),主要任務是顯示問答結果。它從 session 對象提取 thename 的值并顯示它,以此證明雖然該值在第一個頁面輸入,但通過 session 對象得以保留。 q3.jsp 的另外一個任務是提取在第二個頁面中的用戶輸入并顯示它:

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String food=""; %>
  < %
  food = request.getParameter("food");
  String name = (String) session.getValue("thename");
  %>
 您的姓名是: < %= name %>
  < P>
 您喜歡吃: < %= food %>
  < /BODY>
  < /HTML>



   JavaBean 是一種基于 Java 的軟件組件。 JSP 對于在 Web 應用中集成 JavaBean 組件提供了完善的支持。這種支持不僅能縮短開發時間(可以直接利用經測試和可信任的已有組件,避免了重復開發),也為 JSP 應用帶來了更多的可伸縮性。 JavaBean 組件可以用來執行復雜的計算任務,或負責與數據庫的交互以及數據提取等。如果我們有三個 JavaBean ,它們分別具有顯示新聞、股票價格、天氣情況的功能,則創建包含所有這三種功能的 Web 頁面只需要實例化這三個 Bean ,使用 HTML 表格將它們依次定位就可以了。

   為說明在 JSP 環境下 JavaBean 的應用,我們創建了一個名為 TaxRate 的 Bean 。它有兩個屬性,即 Product (產品)和 Rate (稅率)。兩個 set 方法分別用來設置這兩個屬性,兩個 get 方法則用于提取這兩個屬性。在實際應用中,這種 Bean 一般應當從數據庫提取稅率值,此處我們簡化了這個過程,允許任意設定稅率。下面是這個 Bean 的代碼清單:

  package tax;
  public class TaxRate {
  String Product;
  double Rate;
  public TaxRate() {
  this.Product = "A001";
  this.Rate = 5;
  }
  public void setProduct (String ProductName) {
  this.Product = ProductName;
  }
  public String getProduct() {
  return (this.Product);
  }
  public void setRate (double rateValue) {
  this.Rate = rateValue;
  }
  public double getRate () {
  return (this.Rate);
  }
  }

   在 JSP 頁面中應用上述 Bean 要用到 < jsp:useBean> 標記。依賴于具體使用的 JSP 引擎的不同,在何處配置以及如何配置 Bean 的方法也可能略有不同。本文將這個 Bean 的 .class 文件放在 c:jswdk-1.0examplesWEB-INFjspeans ax 目錄下,這里的 tax 是一個專門存放該 Bean 的目錄。下面是一個應用上述 Bean 的示例頁面:

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < jsp:useBean id="taxbean" scope="application" class="tax.TaxRate" />
  < % taxbean.setProduct("A002");
  taxbean.setRate(17);
  %>
 使用方法 1 : < p>
 產品 : < %= taxbean.getProduct() %> < br>
 稅率 : < %= taxbean.getRate() %>
  < p>
  < % taxbean.setProduct("A003");
  taxbean.setRate(3);
  %>
  < b> 使用方法 2 : < /b> < p>
 產品 : < jsp:getProperty name="taxbean" property="Product" />
  < br>
 稅率 : < jsp:getProperty name="taxbean" property="Rate" />
  < /BODY>
  < /HTML>

   在 < jsp:useBean> 標記內定義了幾個屬性,其中 id 是整個 JSP 頁面內該 Bean 的標識, scope 屬性定義了該 Bean 的生存時間, class 屬性說明了該 Bean 的類文件(從包名開始)。

   這個 JSP 頁面不僅使用了 Bean 的 set 和 get 方法設置和提取屬性值,還用到了提取 Bean 屬性值的第二種方法,即使用 < jsp:getProperty> 標記。 < jsp:getProperty> 中的 name 屬性即為 < jsp:useBean> 中定義的 Bean 的 id ,它的 property 屬性指定的是目標屬性的名字。


   事實證明, Java Servlet 是一種開發 Web 應用的理想構架。 JSP 以 Servlet 技術為基礎,又在許多方面作了改進。 JSP 頁面看起來象普通 HTML 頁面,但它允許嵌入執行代碼,在這一點上,它和 ASP 技術非常相似。利用跨平臺運行的 JavaBean 組件, JSP 為分離處理邏輯與顯示樣式提供了卓越的解決方案。 JSP 必將成為 ASP 技術的有力競爭者。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人久久精品| 亚洲第一av网| 91久久综合亚洲鲁鲁五月天| 亚洲成年人在线播放| 日韩美女毛茸茸| 亚洲国产精品美女| 国产日韩在线播放| 韩国19禁主播vip福利视频| 97在线观看免费高清| 国产视频亚洲视频| 98精品国产高清在线xxxx天堂| 国产精品久久久久久久久久久新郎| 欧美极品在线播放| 色婷婷久久av| 国内成人精品一区| 欧美激情aaaa| 欧美激情一级精品国产| 精品美女久久久久久免费| 亚洲综合最新在线| 日韩av在线免费看| 久久久久久久久久婷婷| 91超碰中文字幕久久精品| 亚洲精品成人av| 亚洲激情视频网| 国产成人久久精品| 久久久久久久97| 亚洲一区二区在线播放| 国产一区二区三区在线免费观看| 亚洲国产高清自拍| 亚洲午夜精品久久久久久性色| 亚洲精品久久视频| 久久久久久久色| 欧美日韩裸体免费视频| 日韩有码在线电影| 国产欧美日韩精品在线观看| 国产suv精品一区二区三区88区| 国产精品视频在线播放| 日本精品一区二区三区在线| 欧美性视频精品| 91在线观看免费高清完整版在线观看| 日韩欧美精品网址| 精品国产31久久久久久| 4438全国成人免费| 国产美女被下药99| 97在线精品国自产拍中文| 久久精品视频中文字幕| 欧美一区二区三区免费视| 日本成人在线视频网址| 欧美激情视频网站| 亚洲黄色在线看| 国产精品尤物福利片在线观看| 92版电视剧仙鹤神针在线观看| 亚洲电影在线看| 91精品国产综合久久男男| 国产aⅴ夜夜欢一区二区三区| 2019国产精品自在线拍国产不卡| 久久成年人免费电影| 日韩欧美在线视频免费观看| 日韩精品免费综合视频在线播放| 亚洲美女黄色片| 成人免费视频在线观看超级碰| 国产精品永久免费在线| 美女国内精品自产拍在线播放| 蜜月aⅴ免费一区二区三区| 成人在线播放av| 国产精品成人免费电影| 日韩国产精品一区| 成人自拍性视频| 国产一区视频在线播放| 精品久久久久久久久久久久| 亚洲va久久久噜噜噜久久天堂| 精品亚洲永久免费精品| 日韩欧美在线中文字幕| 精品久久久av| 在线观看欧美日韩| 一区二区国产精品视频| 亚洲第一色中文字幕| 日韩精品中文字幕在线| 亚洲精品一二区| 韩国福利视频一区| 欧美精品在线观看91| 亚洲free性xxxx护士hd| 51ⅴ精品国产91久久久久久| 91免费看国产| 亚洲视频在线观看免费| 91精品视频在线播放| 91精品国产91久久| 欧美黑人性视频| 91高清视频免费观看| 欧美日韩成人精品| 久久夜色精品亚洲噜噜国产mv| 久久在线免费观看视频| 91夜夜揉人人捏人人添红杏| 欧美亚洲日本黄色| 亚洲精品福利免费在线观看| 久久久91精品| 国产日韩精品综合网站| 欧美午夜片在线免费观看| 欧美成在线观看| 日韩美女激情视频| 欧美精品videosex性欧美| 国产精品999| 日韩在线视频播放| 日韩在线观看视频免费| 国产一区二区三区中文| 国产亚洲精品久久久久动| 亚洲成av人影院在线观看| 一本一道久久a久久精品逆3p| 日韩亚洲第一页| 国产精品最新在线观看| 国产精品天天狠天天看| 欧美理论电影在线播放| 国产欧美日韩中文| 亚洲跨种族黑人xxx| 操日韩av在线电影| 日韩av在线播放资源| 国产成人avxxxxx在线看| 日韩最新免费不卡| 久久伊人91精品综合网站| 欧美性理论片在线观看片免费| 久热精品视频在线| 欧美日韩成人在线观看| 欧美诱惑福利视频| 91牛牛免费视频| 国产欧亚日韩视频| 777国产偷窥盗摄精品视频| 欧美激情国内偷拍| 国产精品久久激情| 不卡在线观看电视剧完整版| 亚洲第一视频网站| 欧美国产视频一区二区| 中文字幕亚洲一区二区三区五十路| 成人国产精品一区| 亚洲日本成人女熟在线观看| 亚洲裸体xxxx| 人妖精品videosex性欧美| 国产精品久久久久秋霞鲁丝| 久久精品国产一区二区电影| 国外色69视频在线观看| 国产精品久久久久久婷婷天堂| 色七七影院综合| 色诱女教师一区二区三区| 亚洲已满18点击进入在线看片| 欧美成人激情视频| 欧美一区深夜视频| 成人久久精品视频| 国产精品国产亚洲伊人久久| 欧美日韩国产999| 91久久久国产精品| 国产午夜精品全部视频播放| 欧美视频不卡中文| 亚洲欧美日韩网| 亚洲xxxx18| 茄子视频成人在线| 日韩a**站在线观看| 欧美午夜宅男影院在线观看| 亚洲色图15p| 日韩免费高清在线观看| 一区二区三区视频在线| 黑人巨大精品欧美一区二区| 国产女精品视频网站免费| 久久久久久亚洲精品不卡| 亚洲视频一区二区三区| 亚洲网址你懂得|