J2EE技術規範(四)——JSP基礎

來源:互聯網
上載者:User

一、JSP概覽

    a、動態內容模版

    b、使用定製的Java代碼擴充HTML

    c、被編譯成Servlets

    d、可將工作劃分為內容製作和程式開發

  (1)JSP請求處理

    JSP請求由名為JSPServlet的WebLogic Server Servlet處理,包括:

      a、將JSP轉化為Servlet

      b、將轉化後的Servlet編譯為class檔案

      c、執行JSP

(2)應用設計模型

A、JSP規範描述了一些應用設計模型

B、這四個模型是:

  a、Simple Model(簡單模型)

  b、Forward Delegation Model

  c、Include Delegation Model

  d、Decouple Model

二、JSP文法

有兩種JSP文法形式:

(1)標準文法

(2)XML文法

三、JSP Scriptlets

  (1) 使用<%和%>添加包含可執行Java代碼的scriptlets

  (2)Sciptlets可以使用流量控制

  (3)在給定JSP中所有的Sciptlets結合起來必須是一個完整的Java代碼邏輯塊

我們看一下兩個樣本:

if語句使用的樣本:

<% if (userIsLogged){%>  <H1>Welcome</H1>you are logged in <%}else{%>  <H1>Waring</H1>you must log in<%}%>

瀏覽器輸出:

JSP將根據使用者是否登入問候使用者

For迴圈語句使用的樣本:

<% for(int j=3;j<=3;j<=1;j--){ %>  <H<%=j%>>jsps are great!!!    </H<%=j%>><%}%>

瀏覽器輸出:

Jsps are great!!!

Jsps are great!!!

Jsps are great!!!

四、JSP Expressions (運算式)

(1)使用<%=和%>執行Java運算式

(2)任何一個Java運算式都是有效

(3)Expressions的內容通常返回到用戶端

Expressions引用變數,方法和對象:

五、JSP Declarations (聲明)

(1) 使用<%!和%>聲明類級的變數和方法

(2)這能夠被整個JSP代碼引用

聲明變數和方法的樣本:

<%! double[] price={12.3,23.4,34.5}; //聲明一個double的數組和返回doubles的方法        double getTotal(){        double total=0.0;        for(int j=0;j<prices.length;j++){           total+=prices[j]; //這能夠從expressions,scriptlets和其它聲明中引用           return total;}}%>

五、JSP Actions

(1)Action是在請求時執行的JSP命令

(2)下表列出擴充JSP功能的六個Action標籤

使用useBean action執行個體化一個JavaBean的樣本:

<jsp:useBean id="shoppingCart" class="com.bea.Shoopingcart"/><% shoppingCart.addItem(new CD("U2"));%><%=shoppingCart.getCount()%>

六、JSP Directives

(1)Directives是在編譯時間執行的JSP命令

(2)下面這三個directives能夠改變JSP的行為

Directives使用的樣本:

<%@page import="mypackge.myClassA"%> 引用一個類<%@page errorPage="myErrowPage.jsp"%> 當異常時調用該JSP頁<%page extends="myJSPSuperclass"%> 所要繼承的類<%@include file="myHeaderFile.html"%>包含一個標頭檔<%@taglib uri=myCustomTags.tld prefix=custom%> 載入自己定製的標籤

(3)八個內建對象:

a、Request 對象封裝了用戶端到伺服器的資料。這些資料有客戶提交的資料,也有用戶端的一些配置資訊。比如客戶的IP,主機名稱等。通過getAttribute方法和setAttribute方法頁面獲得伺服器的資料和向request添加資料。可以利用getParameter查看請求參數。也可以查看請求類型,請求的HTTP頭等。
     b、Respose 對象從伺服器到用戶端的響應封裝。用來將伺服器的內容寫入用戶端。常用的是getWriter方法。在用戶端列印資料。
     c、Out 對象 用來向用戶端列印資料。它就像是response的一支筆。執行具體的列印動作。
     d、Session 對象提供伺服器和用戶端的會話。一個session就像是一次對話。對話的內容是使用者的狀態和一些認證資訊。
     e、Application 對象。就是一個公用的會話。與session相對。session是每個使用者專屬的。Application 是這些使用者共用的一些資料。
     f、Config 提供servlet的一些配置資訊。僅在當前頁有效。
     g、pageContext 提供存取所有關於JSP程式執行時所需的屬性和方法。如session application config out。有效範圍為當前頁。這個就像是這些對象的一個大容器。
     h、Page 相當於java類中的this。用處不大。表示當前頁面。

(4)使用內建對象

a、HttpServletRequest

<% String account=request.getParameter("accountNumber");%>Your account number is<%=account%>

b、ServletContext

<% String table=application.getInitParameter(tableName);   String sql="SELECT * FROM"+tableName;   ResultSet rs=Statement.executeQuery(sql);%>

c、ServletConfig

<p> This Web Application requires Version<%=config.getInitParameter("WLS-Version")%>To run correctly.<p>

(5)對象作用範圍

a、pageContext,request,session和application對象都提供了方法,用於在其作用範圍記憶體儲對象。

b、範圍定義了它們的存貨周期和JSPs之間的訪問性

對象
生存周期
在哪可訪問
pageContext
到將response返回到使用者或將request傳遞到一個新頁面為止 當前頁面
request 到將response返回到使用者為止 當前頁面和所有被包含或被傳遞的頁面
session 與使用者的會話相同 當前請求和任何來自瀏覽器後續請求(在session存留時間內)
application Web應用生存周期 當前和所有後續向同一個Web應用發出的請求

(6)在作用範圍記憶體取對象

A、在對象作用範圍內提供以下方法存取對象:

  a、setAttribute(String,Object)將一個對象關聯到一個字串,之後可以讀取

  b、Object getAttribute(String)通過名字讀取該對象

  c、Enumeration getAttributeNames()取得在作用範圍中所有對象的名字

  d、void removeAttribute(String)刪除一個屬性

(7) 在JSP頁之間共用request

A、幾個JSP頁能通過使用request對象在JSP頁之間共用對象,從而處理一個請求。

在request上下文中儲存物件的樣本jsp1.jsp:

<% Employee employee1=new Employee();       employee1.setName("John Doe");       request.setAttribute("John",employee);%>  <jsp:forward page="jsp2.jsp"/>

從request上下文中取回對象的樣本jsp2.jsp:

<%=((Employee)request.getAttribute("John").getName())%>

(8)、在JSP中使用JavaBeans

A、在商務邏輯或模型資料能夠在JSP之外以JavaBean實現

B、JavaBeans遵循以下這些規則

  a、一個無變數的構造方法

  b、每個屬性都有ser和get方法

  c、應該可序列化

構造Employee的JavaBean簡單樣本:

public class EmployeeJavaBean implementsSerializable{String name;double salary;public EmployeeJavaBean(){name=null;salary=0.0}public void setName(String n){name=n;}public String getName(){return name;}public void setSalary(double s){salary=s;}public double getSalary(){return salary;}}

C、在JSP中使用useBean建立JavaBean執行個體

D、通過使用serProperty和getProperty訪問JavaBean的變數:

執行個體化,初始化和使用JavaBean標籤的樣本:

<jsp:useBean id="employee"  class="mypack.EmployeeJavaBean"> <jsp:setProperty name="employee" property="name"  value="John Doe"/></jsp:useBean><jsp:setProperty name="employee" property="salary"  value="20000"/>Employee:<jsp:getProperty name="employee"  property="name">

也可以像下面這樣使用get和set方法:

<% employee.setSalary(employee.getSalary()+10000);%>salary<%=employee.getSalary()%>

E、在預設情況下,你的JavaBean在page作用範圍記憶體放

F、可以使用scope屬性設定它的範圍為page,request,session或application

    儲存物件在request上下文中的樣本jsp1.jsp:   

<jsp:useBean id="employee"  class="myPack.EmployeeJavaBean"  scope="request"/><jsp:forward page="jsp2.jsp"/>

從request上下文中取回對象的樣本jsp2.jsp:

<jsp:useBean id="employee"class="mypack.EmployeeJavaBean"scope="request"/>

JSP的另外內容,我們在接下來的部落格中,繼續完善。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.