欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
一個(gè)開(kāi)發(fā)人員眼中的JSP技術(shù)
JavaServerTM Pages(JSP)技術(shù)為我們提供了一種建立動(dòng)態(tài)網(wǎng)頁(yè)的簡(jiǎn)單方法,而且也簡(jiǎn)化了構造web程序的工作。本文從一個(gè)開(kāi)發(fā)人員的角度對JSP技術(shù)做了一個(gè)全面介紹(并提供了一些JSP實(shí)例程序)。
前言
JavaServer Pages技術(shù)可以讓web開(kāi)發(fā)人員和設計人員非常容易的創(chuàng )建和維護動(dòng)態(tài)網(wǎng)頁(yè),特別是目前的商業(yè)系統。作為JavaTM技術(shù)的一部分,JSP能夠快速開(kāi)發(fā)出基于web、獨立于平臺的應用程序。JSP 把用戶(hù)界面從系統內容中分離開(kāi)來(lái),使得設計人員能夠在不改變底層動(dòng)態(tài)內容的前提下改變整個(gè)網(wǎng)頁(yè)布局。
那么什么是JavaServer Page呢?簡(jiǎn)單的說(shuō),一個(gè)JSP網(wǎng)頁(yè)就是在HTML網(wǎng)頁(yè)中包含了能夠生成動(dòng)態(tài)內容的可執行應用程序代碼。此應用程序可能包含JavaBeanTM,JDBCTM對象,Enterprise Java BeanTM (EJB)和Remote Method Invocation (RMI)對象,所有的部分都可以非常容易的從JSP網(wǎng)頁(yè)上訪(fǎng)問(wèn)到。例如,一個(gè)JSP網(wǎng)頁(yè)可以包含 HTML代碼所顯示的靜態(tài)文本和圖像,也可以調用一個(gè)JDBC對象來(lái)訪(fǎng)問(wèn)數據庫;當網(wǎng)頁(yè)顯示到用戶(hù)界面上以后,它將包含靜態(tài)HTML內容和從數據庫中找到相應的動(dòng)態(tài)信息。
  在JSP網(wǎng)頁(yè)中,要把用戶(hù)界面和應用程序分開(kāi)可以考慮在網(wǎng)頁(yè)設計人員和開(kāi)發(fā)人員之間執行一個(gè)非常方便的授權任務(wù)。它也允許開(kāi)發(fā)人員去建立靈活的代碼,從而非常容易的進(jìn)行更新和重復利用。由于JSP網(wǎng)頁(yè)能夠根據需要自動(dòng)進(jìn)行編譯,web設計人員無(wú)須重新編譯應用程序邏輯就可以改變表述代碼。這也使得JSP與Java servlet(它是JavaSever Pages功能的擴展)相比成為一種可以更靈活生成動(dòng)態(tài)web內容的方法。

JSP和Servlet
  如果你已經(jīng)用過(guò)Java servlet,那么你就會(huì )知道servlet可以讓你建立動(dòng)態(tài)生成的網(wǎng)頁(yè),而網(wǎng)頁(yè)中包含有從服務(wù)器方的Java對象中所獲得的數據。但是你也得知道servlet 生成網(wǎng)頁(yè)的方法就是在Java類(lèi)中嵌入HTML標簽和表述代碼。這就意味著(zhù)改變表述代碼需要修改和重新編譯servlet源文件。因為設計HTML頁(yè)面的設計人員可能與編寫(xiě)servlet代碼的開(kāi)發(fā)人員不是同一個(gè)人,更新基于servlet的web應用程序就成了一件非常棘手的事情。

  Enter JavaServer Page是Servlet API的一個(gè)擴展。事實(shí)上,JSP網(wǎng)頁(yè)在編譯成servlet之前也可以使用,所以它們也具有servlet的所有優(yōu)勢,包括訪(fǎng)問(wèn)Java API。由于JSP 是嵌入到servlet中關(guān)于應用程序的一般表述代碼,所以他們能夠被看成一種“徹底”的servlet。

  JSP網(wǎng)頁(yè)主要提供了一種建立servlet的高水平方法,它還帶來(lái)了其他的優(yōu)點(diǎn)。即使你已經(jīng)為web應用程序編寫(xiě)了servlet,使用JSP仍然有很多優(yōu)勢:

  JSP網(wǎng)頁(yè)可以非常容易的與靜態(tài)模板結合,包括HTML 或XML 片段,以及生成動(dòng)態(tài)內容的代碼。

  JSP網(wǎng)頁(yè)可以在被請求的時(shí)候動(dòng)態(tài)的編譯成servlet,所以網(wǎng)頁(yè)的設計人員可以非常容易的對表述代碼進(jìn)行更新。如果需要的話(huà),JSP網(wǎng)頁(yè)還可以進(jìn)行預編譯。

  為了調用JavaBean組件,JSP標簽可以完全管理這些組件,避免網(wǎng)頁(yè)設計人員復雜化應用程序。

  開(kāi)發(fā)人員可以提供定制化的JSP標簽庫。

  網(wǎng)頁(yè)設計人員能夠改變和編輯網(wǎng)頁(yè)的固定模板部分而不影響應用程序。同樣,開(kāi)發(fā)人員也無(wú)須一個(gè)個(gè)編輯頁(yè)面而只須對組件進(jìn)行合理的改變。

  通常,JSP允許開(kāi)發(fā)人員向許多網(wǎng)頁(yè)設計人員分發(fā)功能性應用程序。這些設計人員也不必知道Java編程語(yǔ)言或任何servlet代碼,所以他們能夠集中精力去編寫(xiě)HTML代碼,而編程人員就可以集中精力去建立對象和應用程序。

建立JSP頁(yè)面
  粗略看來(lái),JSP網(wǎng)頁(yè)和HTML (或XML)網(wǎng)頁(yè)非常相似——都包含用標簽封裝的文本(在“<>”之間被定義)。當HTML標簽被用戶(hù)的瀏覽器處理以顯示網(wǎng)頁(yè)的時(shí)候,JSP標簽能夠通過(guò)web服務(wù)器的處理來(lái)生成動(dòng)態(tài)內容。這些JSP標簽能夠定義個(gè)別的操作,比如說(shuō)用一個(gè)方法來(lái)調用JavaBean,或者包含標準的Java代碼塊(也就是所謂的scriptlet),這些代碼塊能夠在網(wǎng)頁(yè)被訪(fǎng)問(wèn)的時(shí)候被執行。

  為了了解它們如何使用,下面我們介紹了一個(gè)JSP網(wǎng)頁(yè)的簡(jiǎn)單例子,在這個(gè)JSP網(wǎng)頁(yè)中包含了靜態(tài)HTML內容和從JavaBean生成的動(dòng)態(tài)數據。當用戶(hù)訪(fǎng)問(wèn)這個(gè)網(wǎng)頁(yè)的時(shí)候,它可以顯示當前的日期,并根據當前的時(shí)間增加相應的問(wèn)候語(yǔ)(例如“早上好”和“下午好”)。為簡(jiǎn)單起見(jiàn),JSP標簽顯示在塊中:

  

  <%@ page language="java" imports="java.util.*" %>

  

Welcome



  

Today is



  

  


      
  • Day: <%= clock.getDayOfMonth() %>

      
  • Year: <%= clock.getYear() %>

      


  <%-- Check for AM or PM --%>

  <%! int time = Calendar.getInstance().get(Calendar.AM_PM); %>

  <%

  if (time == Calendar.AM) {

  %>

  早上好

  <%

  }

  else {

  %>

  下午好

  <%

  }

  %>

  <%@ include file="copyright.html" %>

  

  上面的JSP例子是不是很簡(jiǎn)單?我們在JSP網(wǎng)頁(yè)中使用了幾個(gè)不同的組件。這些組件包括下面的內容:

  JSP action (或JSP標簽)使用了多種函數并擴展了JSP的功能。JSP action使用的是一種類(lèi)似XML的語(yǔ)法,并且被用來(lái)處理JavaBean組件。在上面的例子中,jsp:useBean action初始化了一個(gè)JavaBean ,JavaBean將在網(wǎng)頁(yè)的后面部分被用到:

  

  如果在網(wǎng)頁(yè)中需要獲得和設置這個(gè)Bean的屬性,另一個(gè)JSP action將被給出,使用的是下面的語(yǔ)法:

  

  

  當網(wǎng)頁(yè)被編譯成一個(gè)servlet的時(shí)候,Directive將被JSP引擎處理。Directive被用來(lái)設置頁(yè)面級的指令、從外部文件插入數據以及制定定制的標簽庫。Directive被定義在<%@ 和 %>之間。 在上面的例子中,Directive定義了頁(yè)面所使用的語(yǔ)言(Java),為了關(guān)聯(lián)Java類(lèi)需要植入代碼并指定一個(gè)將要插入頁(yè)面底部的HTML文件內容:

  <%@ page language=="java" imports=="java.util.*" %>

  <%@ include file=="copyright.html" %>

  聲明與Java中的變量聲明相似,它也是為了后面表達式或scriptlet的需要來(lái)定義變量。聲明被定義在<%! 和 %>之間。在上面的例子中,“int”聲明并給出了一個(gè)當前時(shí)間的相應值 (AM 或 PM):

  <%! int time = Calendar.getInstance().get(Calendar.AM_PM); %>

  表達式可以是變量或常量,它插在由web服務(wù)器所返回的數據里,并用<%= 和 %>來(lái)定義。在上面的例子中,表達式將調用JavaBean組件并在頁(yè)面中插入結果數據:

  <%= clock.getDayOfMonth() %>

  <%= clock.getYear() %>

  Scriptlet將作為一個(gè)Java代碼塊植入JSP頁(yè)面中。Scriptlet代碼被一一插入由頁(yè)面所產(chǎn)生的servlet中,它被定義在<% 和%>之間。上面例子中的scriptlet可以根據當前用戶(hù)產(chǎn)生相應的時(shí)間和問(wèn)候語(yǔ):

  <%

  if (time == Calendar.AM) {

  %>

  早上好

  <%

  }

  else {

  %>

  下午好

  <%

  }

  %>

  注釋部分和HTML的注釋相似,當在執行的時(shí)候JSP引擎將去掉對注釋的解釋。這就意味著(zhù)JSP注釋并不返回到用戶(hù)的瀏覽器中。不象HTML注釋被定義在標簽之間,JSP注釋被定義在<%--和 --%>之間。例如:
使用定制化的標簽
  盡管你可以在JSP頁(yè)面中植入Java代碼并在服務(wù)器方執行,但是,JSP也支持使用定制標簽來(lái)插入動(dòng)態(tài)內容,它有一種機制可以讓你在JSP頁(yè)面中插入你自己的、與HTML類(lèi)似的標簽。換句話(huà)說(shuō),你的JSP網(wǎng)頁(yè)能夠使用插入Java代碼的簡(jiǎn)單標簽語(yǔ)法產(chǎn)生動(dòng)態(tài)的內容。但定制標簽的用處不是很大。

  創(chuàng )建一個(gè)定制標簽比在JSP網(wǎng)頁(yè)中使用簡(jiǎn)單的scriptlet要復雜得多,因為定制標簽需要用幾個(gè)步驟來(lái)把你的Java組件和JSP代碼連接起來(lái)。不過(guò),定制標簽在分發(fā)和重復使用的時(shí)候就非常簡(jiǎn)單了。對定制標簽的支持將在JSP創(chuàng )建工具中實(shí)現。

  在下面的例子中產(chǎn)生動(dòng)態(tài)內容的JSP網(wǎng)頁(yè)就使用了定制標簽。注意,在這個(gè)例子中我們不再需要引入Java類(lèi)、聲明變量或寫(xiě)任何Java代碼:

  

  <%@ taglib uri="/tlds/menuDB.tld" prefix="menu" %>

  

Today‘s Menu



  

Lunch



  <%@ include file="lunch_menu.html" %>

  

Our Special of the Day



  

  

  從上面的語(yǔ)句中我們可以看出,這個(gè)頁(yè)面明顯比前面的scriptlet例子要簡(jiǎn)單許多,因為它沒(méi)有包含初始化對象和執行相應的方法。但是JSP網(wǎng)頁(yè)代碼僅僅只是一部分;對于每一個(gè)定制標簽,還包括下面的三個(gè)組件:

 ?。?)包含定制標簽的網(wǎng)頁(yè),比如說(shuō),上面的代碼片斷中就使用了insertCatchOfDay 的定制標簽。在使用定制標簽之前,頁(yè)面必須指定Taglib Directive來(lái)提供標簽庫描述符(對標簽定義)的位置。當執行定制標簽的時(shí)候,網(wǎng)頁(yè)還有代表性的定義了一個(gè)和多個(gè)標簽屬性(比如在這個(gè)例子中的“meal”)來(lái)確定動(dòng)態(tài)內容。

 ?。?)標簽庫描述符。它是一個(gè)定義了定制化標簽并把它和Tag Handler連接起來(lái)的XML文件。一個(gè)標簽庫描述符包含了標簽的不同屬性,相關(guān)Tag Handler的名稱(chēng)(位置)以及JSP引擎需要處理定制標簽的其他信息。

 ?。?)Tag Handler。 它是一個(gè)與定制標簽聯(lián)合執行操作的Java類(lèi)。例如,在上面的insertCatchOfDay標簽中,Tag Handler就是執行數據庫查詢(xún)得到相應菜單項的Java類(lèi)。

  我們已經(jīng)看到了一個(gè)使用定制標簽的JSP網(wǎng)頁(yè),下面讓我們來(lái)看一看另外的兩個(gè)組件。

  Tag Handler

  tag handler是一個(gè)與servlet比較相似的Java類(lèi)。但是servlet能夠執行Servlet接口,還能夠被HTML GET或POST請求所執行。tag handler也能夠執行一個(gè)標簽接口(javax.servlet.jsp.Tag)以及在定制標簽被JSP引擎處理的時(shí)候執行。

  如果定制標簽包含了屬性,那么tag handler就必須定義這些屬性以及每一個(gè)的get/set方法。例如,當定義上面insertCatchOfDay定制標簽的tag handler的時(shí)候,我們必須定義“meal”屬性和與它相關(guān)的get和set 方法:

  private String meal = null;

  public void setMeal(String s) {

  meal = s;

  }

  public String getMeal() {

  return meal;

  }

  Tag Library Descriptor

  如果你所有的時(shí)間都在處理Java技術(shù)而不知道關(guān)于 XML方面的東西,那么標簽庫描述符組件可能看起來(lái)會(huì )比較陌生。但是你也不需要擔心,因為你不需要學(xué)習一門(mén)新的編程語(yǔ)言。標簽庫描述符僅僅使用與HTML相似的標簽語(yǔ)法來(lái)定義定制標簽的名字和屬性,這更象定義一個(gè)對象。

  下面的標簽庫描述符定義了insertCatchOfDay標簽。注意,這個(gè)文件定義了定制標簽的名稱(chēng),屬性和相關(guān)的Tag Handler類(lèi):

  

  

  

  insertCatchOfDay

  com.sun.CatchOfDayHandler

  

  Queries menu database for the catch of the day。

  


  

  meal

  


  


  


  與定義屬性的名稱(chēng)一樣,標簽庫描述符也能夠定義數據類(lèi)型并指定其屬性(無(wú)論是否需要);在Tag Handler被執行之前,它允許JSP引擎去做某些錯誤檢查。還有其他的信息,比如說(shuō)為了使用JSP創(chuàng )建工具,庫名和版本號也可以包含在標簽庫中。

更多的例子
  在下面的例子中,第一個(gè)例子在JSP頁(yè)面中使用了HTTP請求對象 (HttpServletRequest) 來(lái)判斷用戶(hù)瀏覽器的版本并從三個(gè)HTML頁(yè)面中的一個(gè)中返回相應的內容:

  

  <%@ page language=="java" info="Example JSP #1" %>

  

  

  <%! String agent; %>

  <%

  agent = request.getHeader("User-Agent");

  if ( agent.startsWith("Mozilla/4.0") {

  %>

  <%-- Return content for 4.0 browsers --%>

  <%@ include file="ver4.html" %>

  <%

  }

  else if ( agent.startsWith("Mozilla/3.0") {

  %>

  <%-- Return content for 3.0 browsers --%>

  <%@ include file="ver3.html" %>

  <%

  }

  else {

  %>

  <%-- Return content for other/unknown browsers --%>

  <%@ include file="other.html" %>

  <%

  }

  %>

  

  

  注意:此頁(yè)面無(wú)須聲明或初始化HTTP請求對象就可以直接對它進(jìn)行訪(fǎng)問(wèn)。請求和響應(HttpServletResponse)對象都能夠隱含地在JSP 頁(yè)面中使用。和servlet一樣,JSP頁(yè)面能夠使用請求對象從HTML窗體中獲得參數值。

  

  <%@ page language="java" info="Example JSP #2" %>

  

  

  <%@ include file="header.html" %>

  

  <%! String selections[], info; %>

  

Here are your current selections:



  <%

  

  selections = request.getParameterValues("items");

  if (selections != null) {

  %>


      <%

      for(int x = 0; x < selections.length; x++) {

      %>


  •   <%= selections[x] %> : <%= db.getInfo(selections[x]) %>

      <%

      }

      %>
<%

  }

  else {

  %>

  

(no items selected)



  <%

  }

  %>

  


  <%@ include file="footer.html" %>

  

  

  在這個(gè)例子中,當每一個(gè)參數值都被讀取以后,JavaBean組件便查詢(xún)所需要的信息。在JSP網(wǎng)頁(yè)中使用Bean這種方法可以容易地從數據庫中返回動(dòng)態(tài)web內容。

結論
  如果你正在尋找一種能簡(jiǎn)便建立連接服務(wù)器方Java組件的web程序的方法,那么JavaServer Page正是你所需要的。除了EJB,RMI,JDBC和JavaBean外,分離HTML表述代碼和web程序,也使得JSP網(wǎng)頁(yè)組織起來(lái)運行變得更容易了。事實(shí)上,由于web設計人員幾乎無(wú)須Java開(kāi)發(fā)人員的幫助就可以建立JSP頁(yè)面,所以你再也不同擔心創(chuàng )建web網(wǎng)頁(yè)和寫(xiě)HTML代碼了。

  <全文完>
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Jsp和Servlet的聯(lián)系與區別
JSP與Servlet區別簡(jiǎn)述
基于JSP網(wǎng)頁(yè)自動(dòng)生成工具的設計與實(shí)現
Java工程師關(guān)于JSP的必會(huì )面試題你知道嗎?
Java Servlet
jsp入門(mén)與三個(gè)小實(shí)例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久