计算机专业 Java外文翻译 外文文献 英文文献Word文件下载.docx
《计算机专业 Java外文翻译 外文文献 英文文献Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机专业 Java外文翻译 外文文献 英文文献Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
执行JSP代码需要在服务器上安装JSP引擎。
此处我们使用的是Sun的JavaServer
Web
Development
Kit(JSWDK)。
为便于学习,这个软件包提供了大量可供修改的示例。
安装JSWDK之后,只需执行startserver命令即可启动服务器。
在默认配置下服务器在端口8080监听,使用http:
//localhost:
8080即可打开缺省页面。
在运行JSP示例页面之前,请注意一下安装JSWDK的目录,特别是“work”
子目录下的内容。
执行示例页面时,可以在这里看到JSP页面如何被转换成Java源文件,然后又被编译成class文件(即Servlet)。
JSWDK软件包中的示例页面分为两类,它们或者是JSP文件,或者是包含一个表单的HTML文件,这些表单均由JSP代码处理。
与ASP一样,JSP中的Java代码均在服务器端执行。
因此,在浏览器中使用“查看源文件”菜单是无法看到JSP源代码的,只能看到结果HTML代码。
所有示例的源代码均通过一个单独的“examples”页面提供。
㈢
JSP页面示例
下面我们分析一个简单的JSP页面。
您可以在JSWDK的examples目录下创建另外一个目录存放此文件,文件名字可以任意,但扩展名必须为.jsp。
从下面的代码清单中可以看到,JSP页面除了比普通HTML页面多一些Java代码外,两者具有基本相同的结构。
Java代码是通过<
%和%>
符号加入到HTML代码中间的,它的主要功能是生成并显示一个从0到9的字符串。
在这个字符串的前面和后面都是一些通过HTML代码输出的文本。
<
HTML>
HEAD>
TITLE>
JSP页面<
/TITLE>
/HEAD>
BODY>
%@
page
language="
java"
%>
%!
String
str="
0"
;
%for
(int
i=1;
i
10;
i++)
{
str
=
+
i;
}%>
JSP输出之前。
P>
%=
str%>
JSP输出之后。
/BODY>
/HTML>
这个JSP页面可以分成几个部分来分析。
首先是JSP指令。
它描述的是页面的基本信息,如所使用的语言、是否维持会话状态、是否使用缓冲等。
JSP指令由<
%@开始,%>
结束。
在本例中,指令“<
”只简单地定义了本例使用的是Java语言(当前,在JSP规范中Java是唯一被支持的语言)。
接下来的是JSP声明。
JSP声明可以看成是定义类这一层次的变量和方法的地方。
JSP声明由<
开始,%>
如本例中的“<
”
定义了一个字符串变量。
在每一项声明的后面都必须有一个分号,就象在普通Java类中声明成员变量一样。
位于<
之间的代码块是描述JSP页面处理逻辑的Java代码,如本例中的for循环所示。
最后,位于<
%=和%>
之间的代码称为JSP表达式,如本例中的“<
”所示。
JSP表达式提供了一种将JSP生成的数值嵌入HTML页面的简单方法。
二、会话状态管理
会话状态维持是Web应用开发者必须面对的问题。
有多种方法可以用来解决这个问题,如使用Cookies、隐藏的表单输入域,或直接将状态信息附加到URL中。
Java
Servlet提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态信息。
JSP也同样支持Servlet中的这个概念。
在Sun的JSP指南中可以看到许多有关隐含对象的说明(隐含的含义是,这些对象可以直接引用,不需要显式地声明,也不需要专门的代码创建其实例)。
例如request对象,它是HttpServletRequest的一个子类。
该对象包含了所有有关当前浏览器请求的信息,包括Cookies,HTML表单变量等等。
session对象也是这样一个隐含对象。
这个对象在第一个JSP页面被装载时自动创建,并被关联到request对象上。
与ASP中的会话对象相似,JSP中的session对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。
为说明session对象的具体应用,接下来我们用三个页面模拟一个多页面的Web应用。
第一个页面(q1.html)仅包含一个要求输入用户名字的HTML表单,代码如下:
FORM
METHOD=POST
ACTION="
q2.jsp"
>
请输入您的姓名:
INPUT
TYPE=TEXT
NAME="
thename"
TYPE=SUBMIT
VALUE="
SUBMIT"
/FORM>
第二个页面是一个JSP页面(q2.jsp),它通过request对象提取q1.html表单中的thename值,将它存储为name变量,然后将这个name值保存到session对象中。
session对象是一个名字/值对的集合,在这里,名字/值对中的名字为“thename”,值即为name变量的值。
由于session对象在会话期间是一直有效的,因此这里保存的变量对后继的页面也有效。
q2.jsp的另外一个任务是询问第二个问题。
下面是它的代码:
name="
"
%
name
request.getParameter("
);
session.putValue("
name);
您的姓名是:
name%>
p>
q3.jsp"
您喜欢吃什么?
food"
第三个页面也是一个JSP页面(q3.jsp),主要任务是显示问答结果。
它从session对象提取thename的值并显示它,以此证明虽然该值在第一个页面输入,但通过session对象得以保留。
q3.jsp的另外一个任务是提取在第二个页面中的用户输入并显示它:
food="
food
(String)
session.getValue("
您喜欢吃:
food%>
三、引用JavaBean组件
JavaBean是一种基于Java的软件组件。
JSP对于在Web应用中集成JavaBean组件提供了完善的支持。
这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。
JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。
如果我们有三个JavaBean,它们分别具有显示新闻、股票价格、天气情况的功能,则创建包含所有这三种功能的Web页面只需要实例化这三个Bean,使用HTML表格将它们依次定位就可以了。
为说明在JSP环境下JavaBean的应用,我们创建了一个名为TaxRate的Bean。
它有两个属性,即Product(产品)和Rate(税率)。
两个set方法分别用来设置这两个属性,两个get方法则用于提取这两个属性。
在实际应用中,这种Bean一般应当从数据库提取税率值,此处我们简化了这个过程,允许任意设定税率。
下面是这个Bean的代码清单:
package
tax;
public
class
TaxRate
Product;
double
Rate;
TaxRate()
this.Product
A001"
this.Rate
=5;
}
void
setProduct
(String
ProductName)
{
ProductName;
getProduct()
return
(this.Product);
setRate
(double
rateValue)
rateValue;
getRate
()
(this.Rate);
在JSP页面中应用上述Bean要用到<
jsp:
useBean>
标记。
依赖于具体使用的JSP引擎的不同,在何处配置以及如何配置Bean的方法也可能略有不同。
本文将这个Bean的.class文件放在c:
jswdk-1.0examplesWEB-INFjsp?
eans
ax目录下,这里的tax是一个专门存放该Bean的目录。
下面是一个应用上述Bean的示例页面:
useBean
id="
taxbean"
scope="
application"
class="
tax.TaxRate"
/>
%taxbean.setProduct("
A002"
taxbean.setRate(17);
使用方法1:
产品:
taxbean.getProduct()%>
br>
税率:
taxbean.getRate()%>
A003"
taxbean.setRate(3);
b>
使用方法2:
/b>
getProperty