WebSphere快速入門(13)

發表于:2007-07-01來源:作者:點擊數: 標簽:
第五章 JSP技術 5.1 JSP簡介 JSP(JavaServer Pages)是一種基于Java的腳本技術。在JSP 的眾多優點之中,其中之一是它能將 HTML 編碼從 Web 頁面的業務邏輯中有效地分離出來。用 JSP 訪問可重用的組件,如 Servlet、JavaBean 和基于 Java 的 Web 應用程序。JS
第五章 JSP技術
5.1 JSP簡介
     JSP(JavaServer Pages)是一種基于Java的腳本技術。在JSP 的眾多優點之中,其中之一是它能將 HTML 編碼從 Web 頁面的業務邏輯中有效地分離出來。用 JSP 訪問可重用的組件,如 Servlet、JavaBean 和基于 Java 的 Web 應用程序。JSP 還支持在 Web 頁面中直接嵌入 Java 代碼??捎脙煞N方法訪問 JSP 文件:瀏覽器發送 JSP 文件請求、發送至 Servlet 的請求。
    1. JSP 文件訪問 Bean 或其它能將生成的動態內容發送到瀏覽器的組件。圖5-1說明了該 JSP 訪問模型。當 Web 服務器接收到一個 JSP 文件請求時,服務器將請求發送至 WebSphere應用服務器。WebSphere應用服務器 對 JSP 文件進行語法分析并生成 Java 源文件(被編譯和執行為 Servlet)。Java 源文件的生成和編譯僅在初次調用 Servlet 時發生,除非已經更新了原始的 JSP 文件。在這種情況下,WebSphere應用服務器 將檢測所做的更新,并在執行它之前重新生成和編譯 Servlet。
圖5-1:瀏覽器發送 JSP 文件請求
    2. 發送至 Servlet 的請求生成動態內容,并調用 JSP 文件將內容發送到瀏覽器。圖5-2說明了該訪問模型。該訪問模型使得將內容生成從內容顯示中分離出來更為方便。WebSphere應用服務器 支持 HttpServiceRequest 對象和 HttpServiceResponse 對象的一套新方法。這些方法允許調用的 Servlet 將一個對象放入(通常是一個 Bean)請求對象中,并將該請求傳遞到另一個頁面(通常是一個 JSP 文件)以供顯示。調用的頁面從請求對象中檢索 Bean, 并用 JSP 來生成客戶機端的 HTML。

圖5-2:發送至 Servlet 的請求
5.2 JSP示例
    瀏覽器通過一個Web 頁面中的HTML表單請求一個servlet(PopulateBeanServlet),該servlet創建一個名為 dataBean 的DataBean 實例,并調用 JSP 文件將內容發送到瀏覽器。Servlet 示例和 JSP 文件示例說明了啟用內容分離的 JSP 訪問模型。
A.    Servlet 是由下列Web 頁面中的 HTML 表單來調用的。
<HTML>
<BODY>
<H1>運行 PopulateBeanServlet</H1>
<P>您是否希望運行 PopulateBeanServlet?
<FORM action="/servlet/PopulateBeanServlet" method="GET">
<INPUT type="SUBMIT" value="Yes">
<INPUT type="SUBMIT" value="No">
</FORM>
</BODY>
</HTML>
B.    被請求的servlet為PopulateBeanServlet, 其源代碼如下:
/******************************************************************
*Servlet 示例:PopulateBeanServlet.java
*這個servlet創建一個名為 dataBean 的DataBean 實例,設置dataBean的若干個屬性,
*將dataBean放置在當前“請求”對象中,
*調用 JSP 文件(DisplayData.jsp)來格式化并顯示dataBean的數據
********************************************************************/
import java.io.*;
import java.beans.Beans;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ejb.CreateException;

public class PopulateBeanServlet extends HttpServlet {
   public void Service(HttpServletRequest req, HttpServletResponse res)
       throws ServletException, IOException {
   try {
         dataBean = (DataBean) Beans.instantiate(this.getClass().getClassLoader(), "DataBean");
      }
   catch (Exception ex) {
         throw new ServletException("Can@#t create BEAN of class DataBean: "
              metaData.setSQL(getSQLString());
   }
   // Set some Bean properties (content generation)
   dataBean.setProp1("Value1");
   dataBean.setProp2("Value2");
   dataBean.setProp3("Value3");
   // To send the Bean to a JSP file for content formatting and display
   // 1) 將dataBean放置在當前“請求”對象中,
   ((com.sun.server.http.HttpServiceRequest) req).setAttribute("dataBean", dataBean);
   // 2) 使用callPage 方法調用JSP文件,文件名為DisplayData.jsp,并把請求對象傳遞給JSP。
   ((com.sun.server.http.HttpServiceResponse) res).callPage("/DisplayData.jsp", req);
} //end of service mehtod
} /* end of class PopulateBeanServlet */

C.    被調用的JSP文件為DisplayData.jsp,其內容如下:
<!-- 該 JSP 文件獲得在請求對象中傳遞的 dataBean,并顯示該 Bean 的屬性。 -->
<html>
<head>
<title>Bean Data Display</title>
</head>

<!-- Get the Bean using the BEAN tag   -->
<bean name="dataBean" type="DataBean" introspect="no" create="no" scope="request">
</bean>
<body>
<!-- There are three ways to aclearcase/" target="_blank" >ccess Bean properties -->
<!--    Using a JSP scriptlet  -->
<% out.println("The value of Bean property 1 is " + dataBeans.getProp1());
%>

<!-- Using a JSP expression -->
<p>The value of Bean property 2 is
<%= dataBean.getProp2()  %> </p>

<!--Using the INSERT tag   -->
<p>The value of Bean property 3 is
<insert bean=dataBean property=prop3 default="No property value" >
</insert></p>

</body>
</html>

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97