|
|
第4课 利用JavaServer PagesTM(JSP) 技术,我们可以将servlet代码段直接转化 成静态的HTML页面。当使用浏览器装载JSP页面时, servlet代码就会生效,应用 服务器创建、编辑、装载和运行一个背景servlet,来执行servlet代码段,并返 回一个HTML页面或打印一个XML报告。 本课与第3课“Cooperating
Enterprise Bean”不同的是, 本课中使用的是JSP页面而不是 创建JSP页面
JSP页面看起来像HTML页面,servlet代码段嵌在各种类型的前导( 下面的JSP页面( <HTML>
<HEAD>
<TITLE>Bonus Calculation</TITLE>
</HEAD>
<%-- Comment
Scriptlet for import statements
<%@ indicates a jsp directive --%>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.rmi.PortableRemoteObject" %>
<%@ page import="Beans.*" %>
<%-- Comment
Scriptlet to get the parameters,
convert string to Integer to int for bonus
calculation, and declare/initialize bonus
variable. <% indicates a jsp scriptlet --%>
<%! String strMult, socsec; %>
<%! Integer integerMult; %>
<%! int multiplier; %>
<%! double bonus; %>
<%
strMult = request.getParameter("MULTIPLIER");
socsec = request.getParameter("SOCSEC");
integerMult = new Integer(strMult);
multiplier = integerMult.intValue();
bonus = 100.00;
%>
<%-- Comment
Scriptlet to look up session Bean --%>
<%
InitialContext ctx = new InitialContext();
Object objref = ctx.lookup("calcs");
CalcHome homecalc = (CalcHome)
PortableRemoteObject.narrow(
objref, CalcHome.class);
%>
<%-- Comment
Scriptlet to create session Bean,
call calcBonus method, and retrieve a database
record by the social security number
(primary key) --%>
<%
try {
Calc theCalculation = homecalc.create();
Bonus theBonus = theCalculation.calcBonus(
multiplier,
bonus,
socsec);
Bonus record = theCalculation.getRecord(socsec);
%>
<%-- Comment
HTML code to display retrieved data
on returned HTML page. --%>
<H1>Bonus Calculation</H1>
Social security number retrieved:
<%= record.getSocSec() %>
<P>
Bonus Amount retrieved: <%= record.getBonus() %>
<P>
<%-- Comment
Scriptlet to catch DuplicateKeyException --%>
<%
} catch (javax.ejb.DuplicateKeyException e) {
String message = e.getMessage();
%>
<%-- Comment
HTML code to display original data passed to JSP
on returned HTML page --%>
Social security number passed in: <%= socsec %>
<P>
Multiplier passed in: <%= strMult %>
<P>
Error: <%= message %>
<%-- Comment
Scriptlet to close try and catch block --%>
<%
}
%>
<%-- Comment
HTML code to close HTML body and page --%>
</BODY>
</HTML>
注释
注:
如果在JSP注释中加一个冒 号,如
<HTML> 指令
JSP指令是JSP页面转换成servlet时由JSP引擎处理的指令。 本实例中所采用 的指令指示JSP引擎包含某些数据包和类。指令被 <%@ page import="javax.naming.*" %> 声明
利用JSP声明可以以scriplet语言的形式设置变量,以便以后使用。在使用这 些变量的同时,还可以在表达式和scriplet中对变量进行声明。
其范围是整个 JSP页面,因此,没有实例变量的概念。也就是说,你无须声明在一个以上的表达 或scriplet中使用的实例变量。声明通常被 <%! String strMult, socsec; %>
<%! Integer integerMult; %>
<%! int multiplier; %>
<%! double bonus; %>
Scriptlets
JSPscriplet可以让你将Java代码段嵌入到JSP页面中。这个嵌入的代码直接被 插入到生成的servlet中。
这个scriplet使用以上提到的指令中声明的变量。 scriplet被 <<% 预定义变量
一个scriplet可以使用以下预先定义的变量: 预定义变量在scriplet中的使用方式同它们在servlet中的使用方式相同,不 同的是,你不用对它们进行声明。 <% 表达式
JSP表达式可以让你动态地检索和计算直接被插入到JSP页面中的值。 在这个 范例中,表达式从 <H1>Bonus Calculation</H1> JSP-Specific标签
JavaServer Pages 1.1 规范中对JSP-Specific标签进行了定义, JSP-Specific标签可以让你扩展JSP的新特性,为那些需要查看并修改JSP页面的 可视化设计人员省去了许多复杂的工作。本课中的JSP范例没有使用这些 JSP-SPECIFIC标签,但在下一课中你会看到关于这些标签的范例。1.1规程范对 JSP-Specific标签的定义如下:
修改bonus.html
对
启动平台和工具
在运行这个实例之前,需要启动J2EE服务器、部署工具和Cloudscape数据库。 在不同的窗口中,键入以下命令: j2ee -verbose
deploytool
cloudscape -start
如果该办法不成功,则从 Unix
j2sdkee1.2.1/bin/j2ee -verbose
j2sdkee1.2.1/bin/deploytool
j2sdkee1.2.1/bin/cloudscape -start
Windows
j2sdkee1.2.1\bin\j2ee -verbose
j2sdkee1.2.1\bin\deploytool
j2sdkee1.2.1\bin\cloudscape -start
移除WAR文件
由于JSP页面被添加到Web组件中,所以必须将前一课的WAR文件删除,用JSP页 面创建一个新的WAR文件。 本地应用:
创建新WAR文件
文件菜单:
介绍 :
WAR文件一般属性: 注 : 在部署 工具中出现一个小错误。确保你首先添加
WAR文件一般属性:
选择组件类型:
组件一般属性:
检查窗口:
验证和部署J2EE应用
在部署应用之前最好能够运行检验器。验证程序将挑出应用组件中的错误,如 编译器未曾捕捉到的丢失的enterprise bean方法。 验证:
部署:
注: 不要选择“Return Client Jar”选项。只有在为客户程序部署独立的应用时才选择这个选项。本实例使用了 一个servlet和HTML页面,因此,不应该选择这个选项。若选择这个选项,会生成 一个带有独立应用所需部署信息的JAR文件。
图16 : 部署应用
运行J2EE应用
web 服务器的运行端口默认为8000。 若要打开 注 : 部署工具将
Bonus Calculation
Social Security number retrieved: 777777777
Bonus Amount Retrieved: 200.0
如果两次提交的社会安全号码相同,会出现类似于以下的信息: Bonus Calculation
Soc Sec passed in: 777777777
Multiplier passed in: 2
Error: Duplicate primary key
多信息
另一种使用JavaServer页面技术的方法是与JavaBeansTM技术共同使用,此时, JSP页面会为用户显示一个格式,并调用JavaBean处理被输入到表格中的数据。可 以进入以下网址查看范例: java.sun.com/j2ee/j2sdkee/techdocs/guides/ejb/html/Client.fm.html" 进入下面的网址,你还会看到一篇有关JavaServer页面和JavaBeans技术详细 说明的文章: Building Your own JSP Components (创建自定义的JSP组件) [TOP] |
|
||||||||||||||||||||||||||||||||||||