本章將演示如何開發、部署和運行由主流轉換JavaBeans 組件和用JavaServer Pageh(JSP)創建的Web頁面客戶端組成的簡單Web應用。該應用首先部署并運行在Apache Software Foundation(www.apache.org)開發出來的Java Servlet和JSP容器,即Tomcat上,且與Java Web Services Developer Pack(Java WSDP)包含在一起。本章作為引言,介紹了如何利用Tomcat部署Web服務和Web應用。本章中的材料為該教程中其他章節提供了基礎。
設置
注意:在開始開發示例應用前,將先閱讀關于該教程中的說明,然后繼續本節的學習。
獲取示例代碼
該示例的源代碼可以在<JWSDP_HOME>/docs/tutorial/examples/gs/,即解壓該教程的捆綁包時所創建的一個目錄中找到。如果想在線閱讀該教程,可以從下面的地址下載教程捆綁包:
示例代碼的布局
在該示例應用中,源代碼目錄按照“實現Web服務程序設計的最佳做法”來組織,這些最佳做法的更多細節描述在<JWSDP_HOME>/docs/tomcat/appdev/deployment.html文件中。基本上而言,這個文檔說明了在創建Web應用時檢查它的運行時結構很有用。Web應用被定義為標準布局中目錄和文件的分層結構。這樣的分層結構可以通過它的未包裝格式訪問,其中在這種格式中每一個目錄和文件分別位于單獨的文件系統中,或者以Web應用檔案(或WAR)文件這樣的包裝格式存在。前一種格式在開發期間更有用,而后者通常用在分發應用以便安裝時。
為了便于創建所需格式的WAR文件,最好布置一下Tomcat在執行與WAR格式本身所需結構相同的應用時所使用的文件。在該示例應用中,<JWSDP_HOME>/docs/tutorial/examples/gs/是該應用源代碼的根目錄。該應用由如下文件組成,其中這些文件位于/gs目錄或者/gs的子目錄中。
-
/src/converterApp/ConverterBean.java——包含
yenAmount
和euroAmount屬性的get和set方法的
JavaBeans組件,其中這兩個屬性用來將美元轉換為日元并將日元轉換到歐元。 -
/web/index/jsp——Web客戶端,它是一個接受將被轉換的值的JavaServlet頁面、提交該值的按鈕,以及該轉換的結果。
Tomcat應用開發指南中一個關鍵的建議是從包含可部署應用的目錄分層中分離出包含源代碼的目錄分層。進行這種分離有以下優點:
如 創建Ant的生成和部署文件一節中所述,Ant開發工具使得這種目錄分層的創建和處理變得相對簡單。
該文檔的其余部分演示了如何創建、構建、部署和運行該示例應用。
設置路徑變量
在PATH環境變量的前面添加Java WSDP、Java2軟件開發工具包和標準版(J2SE,SDK)的bin目錄,以便Tomcat的Java WSDP啟動腳本覆蓋其他的安裝,這一點非常重要。
另外,大多數例子是和Ant 1.5.1版的配置文件一起分發的,其中Ant是包含在Java WSDP中的一個可移植的生成工具。這個與Java WSDP一起發布的Ant的版本設置了jwsdp.home環境變量,這是示例生成文件所必須的。為保證能使用該Ant版本,必須在
PATH前面添加
<
JWSDP_HOME
>/jakarta-ant-1.5.1/bin
。
創建生成屬性文件
為了調用更多的Ant任務,需要在主目錄內布置命名為build.properties文件。在Solaris操作系統上,主目錄的格式通常為/home/your_login_name。在Windows操作環境中(例如Windows 2000)主目錄一般是c:\Document and Settings\yourProfile。
Build.properties文件包含的純文本格式的用戶名和密碼與安裝期間設置的用戶名和密碼匹配。在Java WSDP的安裝期間輸入的用戶名和密碼存儲在<JWSDP_HOME>/conf/tomcat-users.xml中。
出于安全目的,Tomcat Manager在同意你訪問服務器之前,首先要驗證你(定義在build.properties文件中)是否有權安裝和重載這些應用(定義在tomcat-user.xml中) 。
如果還沒有在主目錄中創建build.properties文件,那么可以這么做。文件將如下所示:
username=
your_username
注意:出于安全目的,需要創建只有你自己才能讀取的build.properties文件。
安裝程序創建的Tomcat-users.xml文件如下所示:
<?xml version='1.0'?>
<tomcat-users>
<role rolename="admin"/>
<role rolename="manager"/>
<role rolename="provider"/>
<user username="your_username
" password="your_password
"
?????roles="admin,manager,provider"/>
既然已經為運行該示例應用而下載了應用程序并得到了環境設置,本小節將簡單地介紹運行該應用程序所需的步驟。每步討論的詳細細節可在相關頁面中找到。
1.遵循 設置 中的步驟。
2.改變該應用的目錄<JWSDP_HOME>/docstutorial/examples/gs(見 創建Getting Started應用 )。
3.通過在終端提示窗口中輸入下列命令編譯源文件(見 使用Ant構建Getting Started應用 ):
?? 編譯錯誤 一節中列出了其中可能出現的編譯錯誤。
?????? ?????4.通過在終端提示窗口中輸入下列命令啟動Tomcat(見 啟動Tomcat )
??????????????? <JWSDP_HOME>/bin/startup.sh????????(Unix platform)
<JWSDP_HOME>\bin\startup???????????(Microsoft Windows)
??????????? 5.通過在終端提示窗口中輸入下列命令來利用Ant部署Web應用(見 使用Ant安裝應用程序 )
?????????????? ant install
?????????????? 部署中出現的錯誤見 部署錯誤 。
??????????? 6.啟動Web瀏覽器,輸入下列URL運行示例應用程序(見 運行Gerzring Started應用程序 ):
??????? ????????http://localhost:8080/GSApp
?????????? 7.通過在終端提示窗口中輸入下列命令關閉Tocmat:(見 關閉Tomcat )
????????????? <JWSDP_HOME>/bin/shutdown.sh????????(Unix platform)
<JWSDP_HOME>\bin\shutdown???????????(Microsoft Windows)
創建Getting Started應用
示例應用程序包含ConverterBean類、Web組件、用來構建并運行應用程序的文件,以及部署描述符。對于本示例,我們將創建一個命名為gs/的頂級項目源目錄。該示例應用程序中的所有文件都創建自這個根目錄。
ConverterBean組件
該示例程序中ConverterBean組件通常與JSP頁面結合起來使用,其結果應用是一個能夠將美元轉換成日元并將日元轉換成歐
元的表單。ConverterBean組件的源代碼在<JWSDP_HOME>/doca/tutorial/example/gs/src/converterApp/目錄內。
ConverterBean組件編碼
該示例中的ConverterBean組件包含兩個屬性,yenAmount和euroAmount,以及這些屬性的set和get方法。ConverterBean組件的源代碼如下:
//ConverterBean.java
package converterApp;
?
import java.math.*;
?
public class ConverterBean{
?
??private BigDecimal yenRate;
??private BigDecimal euroRate;
??private BigDecimal yenAmount;
??private BigDecimal euroAmount;
?
??/** Creates new ConverterBean */
??public ConverterBean() {
????yenRate = new BigDecimal ("138.78");
????euroRate = new BigDecimal (".0084");
????yenAmount = new BigDecimal("0.0");
????euroAmount = new BigDecimal("0.0");
??}
??public BigDecimal getYenAmount () {
????return yenAmount;
??}
??public void setYenAmount(BigDecimal amount) {
????yenAmount = amount.multiply(yenRate);
????yenAmount =? yenAmount.setScale(2,BigDecimal.ROUND_UP);
??}
??public BigDecimal getEuroAmount () {
????return euroAmount;
??}
??public void setEuroAmount (BigDecimal amount) {
????euroAmount = amount.multiply(euroRate);
????euroAmount =
??????euroAmount.setScale(2,BigDecimal.ROUND_UP);
??}
Web客戶端
Web客戶端包含在JSP頁面<JWSDP_HOME>/docs/tutorial/examples/gs/web/index.jap中。JSP頁面是包含靜態和動態內容的基于文本的文檔。靜態內容能表示成基于任何文本格式的模板數據,比如HTML、WML、或者XML格式。JSP元素構成了動態內容。
Web客戶端編碼
JSP頁面index.jsp用來創建表單,該表單在應用的客戶端運行時出現在Web瀏覽器中。JSP頁面是靜態HTML標記和JSP元素的典型混合體。如果開發過Web頁面,應該熟悉創建表單<form>和菜單<select>的HTML文檔結構聲明(<head>,<body>,等等)和HTML聲明。示例中的這些突出行包含了下列JSP結構類型:
·?? 指示(
<%@page ... %>
)ConverterBean類中的導入類,并且設置頁面返回的內容類型。
·?? 這個jsp:usebean元素聲明頁面將使用存儲在指定作用域內并可從該作用域訪問的一個bean。默認的作用域是頁面,因此
我們就不明確在示例中設置它。
·?? jsp:setProperty元素 用來設置JSP頁面中的JavaBean組件屬性。
·?? Jsp.getProperty元素用來檢索JSP頁面中的JavaBean組件。
·?? Scriplets(<%
...%
>)檢索amount請求參數的值,將其轉換成BigDecimal,并且將該值轉換為日元或者歐元。
·?? 表達式(<%
= ...%
>)將amount的值插入到響應中。
<%-- index.jsp --%>
<%@ page import="converterApp.ConverterBean,java.math.*" %>
<%@ page contentType="text/html; charset=ISO-8859-5" %>
?
<html>
<head>
<title>Currency Conversion Application</title>
</head>
?
<body bgcolor="white">
"<jsp:useBean id="converter"
class="converterApp.ConverterBean"/>
?
<h1><FONT FACE="ARIAL" SIZE=12>Currency Conversion Application
</FONT></h1>
<hr>
<p><FONT FACE="ARIAL" SIZE=10>Enter an amount to convert:</p>
</FONT>
<form method="get">
<input type="text" name="amount" size="25">
<br>
<p>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
<%
String amount = request.getParameter("amount");
?
if ( amount != null && amount.length() > 0 ) {
?
%>
<p><FONT FACE="ARIAL" SIZE=10><%= amount %> dollars are?
?
<jsp:setProperty name="converter" property="yenAmount"
value="<%= new BigDecimal(amount)%>" />
<jsp:getProperty name="converter" property="yenAmount"? /> Yen.
?
<p><%= amount %> Yen are
?
<jsp:setProperty name="converter" property="euroAmount"
value="<%= new BigDecimal(amount)%>" />
<jsp:getProperty name="converter" property="euroAmount"? />
Euro. </FONT>
?
<%
}
%>
?
</body>
</html>
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
