|
|
| IBM WSAD 创建WEB应用程序 |
作者:
文章来源:
访问次数:94次
加入时间:2007年04月07日
|
|
IBM WebSphere Studio Application Developer Workshop ?C 上机练习
创建WEB 应用程序
关于本次练习
WebSphere Studio Application Developer 提供了一个集成且易用的开发环境。该环境完全遵循J2EE标准。Workbench提供了向导与大量的工具,以快速的建立与测试包含HTML, JSPS, Servlets, EJBs, 和数据库连接的WEB应用程序。
必备知识
Lab1:在开始本练习之前,用户必须完成练习1。请参照练习1。用户必须安装了DB2(Version 7.2)和WebSphere Studio Application Developer。同时必须对JSPS, Servlets, EJBs有一个基本的了解。源代码文件放置在C:yourbanklab2.
收获
通过本次练习,您将理解利用WebSphere Studio Application Developer创建和测试包含TML, JSP, Servlet, 和JavaBean资源的WEB应用程序的基本步骤。您也将学会以下的WEB工具:Web Project creator, JavaBean (Java class) creator, 生成getters and setters的基本过程,JavaBean Web Pages 向导, JSP creation向导, Servlet creation向导, 导入一个压缩文件, 添加代码的编辑器, 添加Tables: list boxes; buttons JavaBeans的网页设计工具;与本地历史的文件比较,应用程序的发布,在Application Server.上运行WEB资源。
介绍
WebSphere Studio Application Developer 提供了各种工具以创建和集成各种资源。本次练习是创建和测试一个web 银行的应用程序。你将创建一个Web 工程 YourBankWebModule 包含了大量的资源。使用Java工具,你将建立一个名字为AccountHelper的JavaBean. 随后你将导入HTML input forms, Servlets, and JSPs 。通过利用JavaBean Web Pages向导,你将设计一个 HTML input forms 和一个放置结果的JSPs。本工程需要的WorkWithAccount JSP 和 InitialTransfer JSP均从外部导入。使用 Servlet 向导,你将创建TransferServlet. 利用Page Designer 完成以下的工作: 1)升级CreateAccountInputForm.html 2)创建TransferFunds.jsp. 你将导入一个提供框架的index.html和其他资源以测试该应用程序。
创建帐户
创建帐户包含一个HTML 网页以接受输入信息。当提交以后,调用 CreateAccountServletResults servlet,该servlet 调用 Account entity
bean 以创建一个帐户。通过一个JSP,创建成功的信息返回到浏览器。
转帐
转帐过程有点复杂,首先必须要将转帐的帐户输入到网页上,此网页调用WorkWithAccountServletResults servlet。该servlet使用Transfer session
EJB 来获取帐户的信息,帐户的信息通过一个JSP来显示。 添加一个按钮,当该按钮按下时,表明转帐过程开始,该按钮调用InitialTransfer JSP(显示转帐的目标帐户和转帐的数量)。当Transfer按钮按下时,TransferServlet servlet 被调用,转帐过程结束,同时,通过一个JSP,转帐的结果信息显示出来。
** 注 意 **解决方案在第九章的末尾部分。
练习教程
第一部分: Setup
__1. 从开始菜单启动 IBM WebSphere Studio Application Developer 。(开始 -> 程序 -> IBM WebSphere Studio Application Developer ->IBM WebSphere Studio Application Developer)。
__2. 单击窗口左部的Web Perspective窗口 (若Web Perspective没有打开,Perspective-->Open-->Other-->Web以打开它)。Web Perspective提供了大量的
菜单和图标以创建Web 部件。(注意:在窗口的左部,可以利用 ALT + Up Arrow 或 ALT +Down Arrow 切换到不同的打开的Perspectives.)
__3. 所有的web部件将被包含在一个Web工程文件里。 通过单击File -> New -> Web Project创建Web Project。(也可以通过单击工具栏上相应的按钮完成。)
__ 输入工程名: YourBankWebModule.;
__ 输入EAR工程名: YourBankEAR 然后单击Next;.
__ 选中 YourBankEJBModule 然后单击Next;
__ 单击Projects tab 可以发现 YourBankEJBModule 已经被选中,这意味着练习一中建立的Enterprise JavaBeans 也包含在Web工程的路径中;
__ 单击Finish。
第二部分:建立AccountHelper JavaBean
__1. 建立一个用来从servlet 到 JSP传递信息的JavaBean;.
__ 单击File --> New --> Other.... 在窗口中选择 Java 然后选择Java Class;
__ 单击Next;
__ 输入 /YourBankWebModule/source 作为Folder;
__输入com.ibm.yourbank.web.helper 作为Package;
__输入名字: AccountHelper;
__ 在Extended interface部分,单击Add....
__ 在Extended Interfaces 窗口中,输入serializable。 接口Serializable 显示出来;
__ 在Packages view中, 单击java.io - C:/Program Files/IBM/WebSphere StudioApplication Developer/plugins/com.ibm.etools.server.jdk/jre/lib/rt.jar.
__ 单击Add (将被添加到Extended Interface列表中) 然后单击OK;
__ 回到New Java Class窗口,单击Finish;
__2. 文件AccountHelper将被显示在Web Perspective的Editor view 中。你将需要添加一些私有的变量和方法;
__ 添加如下的变量到AccountHelper文件中;(注意:为了节省时间可以从 c:yourbanklab2snippet5.java中拷贝。)
private long accountNumber;
private float balance;
private String message;
private boolean success;
__ 单击Outline tab,转到JavaBean的Outline view;
__ 右键单击accountNumber 然后单击Generate Getter and Setter. 注意观察
getAccountNumber和setAccountNumber 是如何加到Javabean ;
__ 为其他三个变量(balance, message,success)生成Getter and Setter方法;
__ 保存并关掉该文件。 ( 应该总共生成四次Getter和Setter 方法);
__3. 生成test Client
__ 单击File -> New -> Other -> Web ->JavaBean Web Pages;(或者你可以单击Web Perspective工具栏上的Java Bean Web Pages wizard图标)
__ 在Create JavaBeans Web Pages窗口,单击Browse... ;
__ 展开YourBankWebModule单击webApplication,单击OK;
__ 在Java package field的右侧,单击Browse....;
__ 选中com.ibm.yourbank.web,然后单击 OK;
__ 在Store results部分,单击Session。在应用程序中,该Java bean将永远保持不变;
__ 单击Next;
__ 在Choose JavaBeans和Methods to Invoke window中,单击Browse...;
__ 在输入栏中输入AccountHelper;
__ 单击OK;
__ 单击Next ,在窗口中列出了不同的被触发的方法;
__ 在Design the Input Form窗口中,去掉success和message方法;注意到右边视图的变化;
__ 单击Page tab,改变网页标题为Create Account;
(同时,可以根据需要改变背景色、标题颜色和输入域的颜色)
__ 单击Fields tab,单击accountNumber 方法,改变标签为Account Number;
__ 单击Next;
__ 在Design the Result Form窗口中,去掉选中的方法success;
__ 单击Next;
__ 在Web page prefix域中,输入CreateAccount;
__在Design the Result Form窗口中,单击Finish;
__4. 转到Server Perspective,然后选中Servers view;
__ 右击YourBankServer 后单击Start;注意到在server 启动之前, YourBankWebModule 发布到server 的信息提示弹出;
__ 在Server Perspective 的Navigator视图中,展开YourBankWebModule, webApplication,WEB-INF。右击CreateAccountInputForm.html 后单击Run on Server;
__ Web Browser显示在Editor视图中,同时文件CreateAccountInputForm.html也将被显示。输入如下的值后单击提交。
__提交触发对servlet CreateAccountController的调用, 该servlet调用JavaBean AccountHelper 以 传值到Result JSP打印输入的数值;完成了对该JavaBean 测试;
__ 关闭Web Browser ;
__在Servers 视图中,右击YourBankServer instance后单击Stop;
第三部分:为Account EJB添加支持
__1. 随着以上功能的完成,我们可以为Account EJB添加支持
__ 转到Web perspective.
__ 展开YourBankWebModule --> source --> com --> ibm --> yourbank --> web;
__ 打开文件CreateAccountController.java;
__ 添加如下的import 语句到文件reateAccountController (注意:为节省时间可以从c:yourbanklab2snippet6.java中拷贝)
import java.rmi.RemoteException;
import javax.ejb.DuplicateKeyException;
import javax.naming.*;
import com.ibm.yourbank.ejb.Account;
import com.ibm.yourbank.ejb.AccountHome;
import com.ibm.yourbank.web.helper.AccountHelper;
__ 添加如下的声明到类CreateAccountController (注意:为节省时间可以从c:yourbanklab2snippet7.java中拷贝)
private AccountHome accountHome;
private String message;
private boolean createFlag;
static String failuredupkey = "Create failure - account already
exists:";
static String failureinternal = "Internal failure on server -
could not create account:";
static String failuredefault = "Exception occured:";
__ 添加如下的代码到类CreateAccountController中的方法performServices 开头 (注意:为节省时间可以从c:yourbanklab2snippet8.java中拷贝)。单击outline视图,可以快速的找到该方法;
try
{
Account account = AccountHome.create(Long.valueOf(
(String)request.getParameter ("accountNumber")).longValue());
Account.accountInitialize(Integer.valueOf ((String)request.getParameter
("AccountType")).intValue(), Float.valueOf
((String)request.getParameter("balance")).floatValue(),
(String)request.getParameter("accountOwner"));
message = "Account " +(String)request.getParameter("accountNumber") + "
created with a balance of " + (String)request.getParameter("balance") +
".";
}
catch (RemoteException e) {
message = failureinternal + e.getMessage();
createFlag = false;
System.out.println(failureinternal + e.getMessage() );
e.printStackTrace();
}
catch (DuplicateKeyException e) {
createFlag = false;
message = failuredupkey + e.getMessage();
System.out.println(failuredupkey + e.getMessage() );
e.printStackTrace();
}
catch (Exception e) {
createFlag = false;
message = failuredefault + e.getMessage();
System.out.println(e.getMessage() );
e.printStackTrace();
}
HttpSession session = request.getSession(true);
//Create Bean
com.ibm.yourbank.web.helper.AccountHelper bean = new
com.ibm.yourbank.web.helper.AccountHelper();
//Set Properties
bean.setMessage(message);
//Execute Bean Methods
//Place method results in the session
//Place Bean results in the session
session.setAttribute("CreateAccountBean", bean);
__用如下的代码替代CreateAccountController类中的init方法: (注意:为节省时间可以从c:yourbanklab2snippet9.java中拷贝)
public void init (ServletConfig config) throws ServletException
{
super.init(config);
try {
Context ctx = new InitialContext();
Object homeObject = ctx.lookup("ejb/Account");
accountHome = (AccountHome) javax.rmi.PortableRemoteObject.nar_
row(homeObject, AccountHome.class );
} catch (NamingException e) {
System.out.println("Account not Found!" + e.getMessage() );
e.printStackTrace();
throw new ServletException(e.getMessage());
} catch (Exception e) {
System.out.println( e.getMessage() );
e.printStackTrace();
throw new ServletException(e.getMessage());
}
}
__ 保存并关掉该文件;
注意: 此时在task视图中,应该有如下的exception :setMessage方法未定义;
__ 在类CreateAccountViewBean 添加setMessage方法 (注意:为节省时间可以从c:yourbanklab2snippet17.java中拷贝)
/**********************************************/
public void setMessage(String message) {
getBean().setMessage(message);
}
__保存并关掉该文件;此时该exception应该消失;
__ 打开文件Create AccountResults.jsp 单击source tab,去掉如下代码:
<%@ page import="com.ibm.yourbank.web.CreateAccountViewBean" %>
__保存并关掉该文件;
__2. 在测试与Account EJB的交互之前, 首先修改文件CreateAccountInputForm.html.;
__ 打开文件CreateAccountInputForm.html;
__ 把光标放在放置balance 标签的单元格中;
__ 单击Table --> Add Row --> Add Below 为该表格添加一行;
__ 通过快捷键 Ctrl+Alt+Z为表格添加另外一行;
__ 在第一列的第三行与第四行分别添加如下的标签:Type和Account Owner;
. __ 把光标放置在Type的右侧然后单击Insert --> Form and Input Fields--> List Box。你也可以通过单击工具栏上的相应的图标来完成;
__ List Box的attributes 窗口将被显示出来,指定名字为:AccountType;
__ 设置number 行为1;
__ 在Item域中指定为Savings;
__ 在Value域中指定为1;
__ 单击 Add;
__ 添加Checking 项并指定值为2;
__单击Clear. 完成了对list box 的设置;
__ 单击OK;
__ 把光标放置在Account Owner的右侧然后单击Insert --> Forms and
Input Fields --> Text Field;你也可以通过单击工具栏上的相应的图标来完成;__ attributes 窗口将被显示出来,指定名字为:accountOwner;
__ 单击OK.
__保存并关掉该文件;
__3. 至此,可以完全测试新建帐户过程;
__ 转到Server perspective;
__ 右击CreateAccountInputForm.html后单击Run on Server;
__ 刚才修改的Create Account窗体将显示在浏览器中;
__输入如下的值后单击提交;
__ 单击提交后,调用CreateAccountServletResults servlet ,该servlet查找 Account EJB对象,并生成一新的帐户,新的accountnumber, balance, 和建立成功的信息存储在一个bean中,然后由CreateAccountResults JSP生成如下的结果;
__ 关闭浏览器;
第四部分:生成转帐部分
__1. 下一步将生成一servlet以完成转帐功能,单击File --> New --> Other -> Web -> Servlet 或单击工具栏上的相应的图标;
__2. 在Folder 域中,单击browse 选择/YourBankWebModule/source.
__3. 在Package域中,单击browse 选择com.ibm.yourbank.web.
__4. 输入Servlet 名字为:TransferServlet.
__ 单击Next;
__ 单击Finish;
__5. 文件TransferServlet.java 显示在编辑视图中,加入如下的import语句:
(注意:为节省时间可以从c:yourbanklab2snippet13.java中拷贝)
import com.ibm.yourbank.web.helper.AccountHelper;
import com.ibm.yourbank.ejb.Transfer;
import com.ibm.yourbank.ejb.TransferHome;
import com.ibm.yourbank.exception.InsufficientFundsException;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
// JNDI (naming).
import javax.naming.*;
import java.io.*;
import java.servlet.*;
import javax.servlet.http.*;
__6. 在TransferServlet.java中加入如下的声明与方法:. (注意:为节省时间可以从c:yourbanklab2snippet14.java中拷贝)
private TransferHome transferHome = null;
static String successtransfer = " Transfer Successful.";
static String failureinsufficient = "Insufficient funds - no transfer";
static String failuredefault = "Exception";
static String failurefinder = "Finder Failure";
public void init(ServletConfig config) throws ServletException {
super.init(config);
try {
Context ctx = new InitialContext();
Object homeObject = ctx.lookup("ejb/Transfer");
transferHome =
(TransferHome)javax.rmi.PortableRemoteObject.narrow(homeObject,
TransferHome.class);
}
// Determine approximate cause of failure.
catch (NamingException e) {
System.out.println("init Naming Exception: " + e.getMessage());
e.printStackTrace();
throw new ServletException(e.getMessage());
} catch (Exception e) {
System.out.println("init Exception: "+ e.getMessage() );
e.printStackTrace();
throw new ServletException(e.getMessage());
}
}
public void performTask(HttpServletRequest request, HttpServletResponse
response) throws ServletException
{
String message = null;
Transfer transfer = null;
float toTransferBalance = 0;
float fromTransferBalance = 0;
CreateAccountViewBean jspbeanToAccount = new CreateAccountViewBean();
CreateAccountViewBean jspbeanFromAccount = new CreateAccountViewBean();
try
{
javax.servlet.http.HttpSession session = request.getSession(true);
jspbeanFromAccount =
(CreateAccountViewBean)session.getAttribute("CreateAccountBean");
try {
// Create a Transfer object.
transfer = transferHome.create();
// Based on user request type, invoke appropriate transfer methods.
Transfer.TransferFunds( Long.valueOf(
JspbeanFromAccount.getAccountNumber())
.longValue(),Long.valueOf(
(String)request.getParameter("toAccount")).longValue(),
Float.valueOf( (String )
request.getParameter("transferAmount")).floatValue());
fromTransferBalance = transfer.getBalance
( Long.valueOf(jspbeanFromAccount.getAccountNumber()).longValue());
toTransferBalance = transfer.getBalance(Long.valueOf
((String)request.getParameter("toAccount")).longValue());
message = (String)request.getParameter("transferAmount") +
successtransfer;
}
// Determine approximate cause of failure.
catch (InsufficientFundsException e) {
message = failureinsufficient + e.getMessage();
System.out.println( message );
e.printStackTrace();
} catch (FinderException e) {
message = failurefinder + e.getMessage();
System.out.println( failurefinder );
e.printStackTrace();
} catch (Exception e) {
message = failuredefault + e.getMessage();
System.out.println( message );
e.printStackTrace();
}
JspbeanToAccount.setAccountNumber
(Long.valueOf((String)request.getParameter("toAccount")) .longValue());
jspbeanFromAccount.setBalance(fromTransferBalance);
jspbeanToAccount.setBalance(toTransferBalance);
jspbeanFromAccount.setMessage(message);
session.setAttribute("CreateAccountBean", jspbeanFromAccount);
request.setAttribute("ToAccountBean", jspbeanToAccount);
RequestDispatcher rd =
getServletContext().getRequestDispatcher("TransferFundsJSP.jsp");
rd.forward(request,response);
}
catch (Throwable theException)
{
theException.printStackTrace();
throw new ServletException(theException);
}
}
}
__7. 添加如下的方法调用到 (黑体字) doPost 和doGet方法中, 若POST或者GET由用户提交,doPost和doGet方法都调用perform task方法;
public void doPost(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
try{
performTask(request, response);
} catch (Throwable e) {
}
}
public void doGet(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException, java.io.IOException {
try{
performTask(request, response);
} catch (Throwable e) {
}
}
__8.保存并关掉文件;
__9. 现在开始创建TransferFunds JSP;
__10. 转到Web perspective;随后的转帐部分将建立一个JSP以接受用户输入的转帐帐户与转帐数目;
__11. __ 转到Web perspective 并单击File --> New --> JSP File. (或单击工具栏上的相应的图标;)
__12. __ 在生成JSP文件的窗口(动态网页)中, 展开YourBankWebModule 后
单击webApplication;
__13. __ 输入TransferFundsJSP.jsp作为文件名;
__14. __ 单击Finish;
__15. TransferFundsJSP.jsp的源代码将显示在编辑窗口中,为生成的JSP添加一些属性和方法;
__16. __ 删除“Place TransferFundsJSP.jsp’s content here.”;
__17. __ 单击JSP --> Insert Bean或单击工具栏上的相应的图标;
来添加一个Java bean到JSP文件中, 该Java bean为CreateAccountBean Java bean, 通过WorkWithAccountServletResult servlet 添加到session中去;
__18. __ JSP的Attributes 窗口现实出来,在ID域中输入CreateAccountBean;
__19. __ 在类域中输入com.ibm.yourbank.web.CreateAccountViewBean;
__20. __ 在Type域中输入 com.ibm.yourbank.web.CreateAccountViewBean;
__21. __ 在Scope域中选择session;
__22. __ 单击OK.
__23. 单击Insert --> Table. 接受行与列的默认值,单击OK;
__24. __ 在左上角单元格中输入From Account;
__25. __ 在左下角单元格中输入Balance:.
__26. __ 文件TransferFundsJSP.jsp 应该如下所视:
__27. __ 把光标放置在右上单元格中然后单击JSP --> Insert Expression;
__28. __ 展开左?鹊?CreateAccountBean ,Properties 然后双击 accountNumber;
__ 单击OK
__ 把光标放置在右下单元格中然后单击JSP --> InsertExpression.
__ 展开左?鹊?CreateAccountBean ,Properties 然后双击balance.
__ 单击OK
__6. 把光标放在表格的下侧;
__7. 在现有表格的下部, 加入一横线;单击Insert --> Horizontal Rule.(或者按下control-k);
__8. 把光标放在当前Java bean旁边,在左上部添加另一个Java Bean.该Java bean 保存接受转帐的帐户信息;
__ 单击JSP -> Insert Bean
__ 在Attributes窗口中,在ID 域中输入ToAccountBean;
__ 在Class域中输入com.ibm.yourbank.web.CreateAccountViewBean
__ 在Type域中输入com.ibm.yourbank.web.CreateAccountViewBean.
__ 在Scope 项中选择request;
__ 单击 OK
__9. 把光标放在水平线的下方,生成另外一表格,接受默认值;
__ 在左上单元格中输入To Account:.
__ 在左下单元格中输入Balance:.
__ 把光标放在右上单元格中, 单击JSP --> InsertExpression.
__ 在左侧展开ToAccountBean ,Properties 并双击accountNumber;
__ 单击OK.
__ 把光标放在右下单元格中, 单击JSP --> InsertExpression.
__ 展开左?鹊?CreateAccountBean ,Properties 然后双击balance;
__单击OK
__ 把光标放置在下部表格的下方,选择JSP -> Insert Get Property;
__ 单击Browse选择CreateAccountBean -> message;
__ 单击OK;
__单击OK;
__10. 创建一窗体以提交转帐信息;
__ 把光标放在刚刚创建的get property然后单击Insert --> Formand Input Fields --> Form 或者按下(Control-O);
__ 这样创建了一个窗体,右键单击窗体并选中Attributes;
__ 在Action 域中输入InitialTransfer.;
__ 选中Post方法;
__ 单击OK;
__11. 当前的窗体只有一行,按下回车键使窗体的大小变为两行;
__12. 为了完成InitialTransfer JSP,需要添加以调用实现转帐的servlet。把光标放在当前窗体的第二行,单击Insert --> Form and Input Fields --> Submit 按钮;
__ 输入名字:transfer;
__ 在标签项label 输入Transfer More Funds;
__ 按钮类型为Submit;
__ 单击OK;
__ 右击Transfer More Funds 按钮选择copy,该按钮将在其他文件中使用;
__ 保存并关闭文件;
第五部分: 整个工程文件完成
__1. 打开文件CreateAccountResults.jsp;
__ 在窗体中表格的下部添加一直线;
__ 在此直线的下部粘贴Transfer More Funds按钮;
__ 右键单击Transfer More Funds按钮,选择Attributes并改变label属性为Transfer后单击OK;
__ 右键单击窗体并选择属性;
__ 在Action字段输入InitialTransfer;
__单击OK.
__ 保存并关闭文件。 转帐过程已经全部完成。
注意:忽略任务视图中的警告,当装载nitialTransfer.jsp以后,可以消除。
__2. 在该步中,将导入WorkWithAccountServlet,WorkWithAccountImportForm.html,WorkWithAccountResults.jsp,Initial Transfer JSP,同时导入提供边框的index.html, Title.html, Menu.html,Welcome.html,导入的这些资源以后可以测试YourBank 应用程序;
__3. 选择File -> Import 单击zip 文件;
__ 单击Next;
__ 单击Browse,选择C:yourbanklab2Lab2Part4and5.zip
__选择目标文件夹为YourBankWebModule,单击OK. 单击Finish;
__4. 对于其他页面调用的InitialTransfer.jsp ,应该添加Web模块的映射信息到文件web.xml;
__ 展开YourBankWebModulewebApplicationWEB-INF打开文件web.xml;
__ 单击Servlets tab;
__ 单击Add 按钮并选中WorkWithAccountController;
__ 单击OK;
选择与URL 映射相邻的Add按钮然后输入/WorkWithAccountController;
__ 单击OK 并保存;
__ 单击Add 按钮并选择顶部的JSP单选按钮;
__ 选择InitialTransfer.jsp 并单击OK;
__选择与URL 映射相邻的Add按钮然后输入/InitialTransfer;
__ 保存并关闭文件web.xml;
__ 到现在为止,在任务视图中应该只有一个警告信息;
__5. 在菜单项中固定Create Account 与CreateAccountInputForm的链接;
__ 选择链接视图;
__ 在YourBankWebModule 的Navigator视图中单击index.html,在链接视图中可以看到与index.html资源的链接。如果看到虚线,双击链接视图中的文件并打开它,固定在响应的行<A href=”;
__ 单击Menu.html 文件前面的+ ;
__单击WorkWithAccountInputForm.html文件前面的+ ;
在链接视图中,不同的链接有不同的表示方法:有两跟短线穿过的箭头线表明其为虚链接,带数字的箭头线标明Menu.html与该文件的链接次数; 与图片的
链接表明有时其为内链接,因为它们作为相同的HTTP request 的一部分,(看起来象同一张网页), 带有问号的箭头线表明该链接的有效性不能被确认,在GetResults前面的图标表明其为工业标准链接的一种。
__ 在链接视图中,看到Menu.html与CreateAccountInputForm 的虚链接,现在可以解决。在菜单文件夹中单击Menu.html 并在编辑器中打开。(注意: Menu.html) 单击源代码视图,带有!的黄色三角形图标表明了虚链接,在../CreateAccountInputForm后面加入.html以解决该问题。
__ 保存并关闭文件 Menu.html;
__6. 现在开始测试转帐过程;
__ 转到Server perspective, 展开YourBankWebModule 和webApplication,右键单击文件WorkWithAccountInputForm.html然后单击Run onServer.;
__ 输入Account Number 为3 然后单击Submit;
__ 帐号为3的balance将显示出来;
__7. 在继续进行转帐过程之前, 单击Perspective --> Open --> Other...选择Java. 单击OK;
__8. 这将打开Java perspective. 当使用的类位于不同的包内时,Java perspective 使用树结构打开每一个包;
__9. 展开YourBankWebModulesource,同jar文件(j2ee.jar, webcontainer.jar)中的支持类一起,不同的包被分别的列出;
__ 单击Perspective --> Close 关闭Java perspective;
第九部分: 测试YourBank 应用程序
__1. 首先添加页面index.html 到web.xml中的Pages tab;
展开文件夹WEB-INF打开文件web.xml,单击Pages tab. 在欢迎文件面板里单击,输入/index.html,保存并关闭该文件;
__2. 在YourBankWebModule的Web Perspective Navigator 视图里,右键单击YourBankWebModule 并选择Run on Server,页面index.html page开始在浏览器中运行;
__3. 在左侧的菜单中单击Create Account ,生成帐户的窗口显示出来;
__4. 输入帐户号码, 开始的balance, 类型和户主;
__5. 单击submit. 通过Account EJB ,CreateAccountServletResults servlet 将以CreateAccountInputForm.html为入口生成帐户;
__6. 开始测试帐户的菜单项; 单击Work With Account ;
__7. 输入已经存在的帐户号码4;
__8. 单击submit. WorkWithAccountResults JSP 显示已经存在的帐户号码和余额,单击Transfer Funds. InitialTransfer JSP 显示出来;
__9. 单击转帐按钮;
__10. 输入转帐号码;
__11. 输入转帐的数量;
__12. 单击Transfer Funds. TransferResults JSP 将显示转帐的帐号,数量与转帐成功的信息;
总结
在本练习中生成了一个Web工程, 一个 JavaBean, 使用JavaBean Web Pages向导生成了几个HTML, JSP, 和Servlet资源. 使用页面设计器生成了和更新了HTML and JSPs 并向JSPs中加入了JavaBean(s), 列表框,文本框,表格,按钮。使用JSP 和Servlet 向导. 向servlets 中添加代码以实现和Enterprise JavaBeans的通信. 文件与该文件本地历史的比较;
导入了一个压缩文件Zip. 使用了连接视图,在WebSphere应用程序服务器中发布与运行web 应用程序。
Solution Files:
跳过练习一直接开始本次练习的方法:
1) 执行文件C:yourbanksolutionslab1CfgLab1.bat
在打开的DB2CMD窗口中执行cfgdb.bat;
2) 导入服务器配置;
a) 单击 File->New->Project... Server, Server Project, 单击Next;
b) 输入项目名称TestServer, 单击Finish;
c) File->Import. 选择Zip file, 单击Next;
d) 单击Browse,选择C:YourBankSolutionsLab1TestServers.zip
e) 输入"TestServer" 作为文件夹的名字;
f) 单击"Finish"
*注意* 导入的测试服务器假定为默认的目录结构,如果使用了不同的目录结构, 则需要按照实验一的第三部分手工配置服务器;
3) 在Application Developer中导入EAR;
a) 单击File->Import;
b) 选择EAR file, 单击NEXT;
c) 单击Browse,选择c:YourBankSolutionsLab2YourBankAfterLab2.ear;
d) 输入Enterprise Application 工程名称为:YourBankEAR;
e) 单击"Finish"
4) 在Navigator视图中,右键单击YourBankWebModule. 选择Properties,
Server Preferences, YourBankServer, 单击Apply, 然后单击OK;
5) 在Navigator视图中,右键单击YourBankEJBModule in the Navigator view. 选择Properties,Server Preferences, YourBankServer, 单击Apply, 然后单击OK。
|
|
|