精华区 [关闭][返回]

当前位置:月光软件>>讨论区精华>>〖软件开发〗>>● ASP>>★ASP的同类★>>JSP>>jsp基础学习资料

主题:jsp基础学习资料
发信人: dongbao()
整理人: dongbao(2000-11-25 19:39:13), 站内信件
一、 JSP 技术概述
作 者 : 仙人掌工作室 

   在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 应用开发
技术很快引起了人们的关注。 JSP 为创建高度动态的 Web 应用提供了一个独特
的开发环境。按照 Sun 的说法, JSP 能够适应市场上包括 Apache WebServer 
、 IIS4.0 在内的 85% 的服务器产品。即使您对 ASP “一往情深”,我们认为
,关注 JSP 的发展仍旧很有必要。 

   ㈠ JSP 与 ASP 的简单比较 

   JSP 与 Microsoft 的 ASP 技术非常相似。两者都提供在 HTML 代码中混合
某种程序代码、由语言引擎解释执行程序代码的能力。在 ASP 或 JSP 环境下,
 HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普
通的 HTML 页面只依赖于 Web 服务器,而 ASP 和 JSP 页面需要附加的语言引擎
分析和执行程序代码。程序代码的执行结果被重新嵌入到 HTML 代码中,然后一
起发送给浏览器。 ASP 和 JSP 都是面向 Web 服务器的技术,客户端浏览器不需
要任何附加的软件支持。 

   ASP 的编程语言是 VBScript 之类的脚本语言, JSP 使用的是 Java ,这
是两者最明显的区别。此外, ASP 与 JSP 还有一个更为本质的区别:两种语言
引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码
被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执
行,这种编译操作仅在对 JSP 页面的第一次请求时发生。 

   ㈡运行环境 

   Sun 公司的 JSP 主页在 http://www.javasoft.com/products/jsp/index.
html ,从这里还可以下载 JSP 规范,这些规范定义了供应商在创建 JSP 引擎时
所必须遵从的一些规则。 

   执行 JSP 代码需要在服务器上安装 JSP 引擎。此处我们使用的是 Sun 的
 JavaServer Web Development Kit ( JSWDK )。为便于学习,这个软件包提供
了大量可供修改的示例。安装 JSWDK 之后,只需执行 startserver 命令即可启
动服务器。在默认配置下服务器在端口 8080 监听,使用 http://localhost:80
80 即可打开缺省页面。 

   在运行 JSP 示例页面之前,请注意一下安装 JSWDK 的目录,特别是“ wo
rk ”子目录下的内容。执行示例页面时,可以在这里看到 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 = str + i;
  } %>
  JSP 输出之前。 
  < P>
  < %= str %>
  < P>
  JSP 输出之后。 
  < /BODY>
  < /HTML>

   这个 JSP 页面可以分成几个部分来分析。 

首先是 JSP 指令。它描述的是页面的基本信息,如所使用的语言、是否维持会话
状态、是否使用缓冲等。 JSP 指令由 < %@ 开始, %> 结束。在本例中,指令“
 < %@ page language="java" %> ”只简单地定义了本例使用的是 Java 语言(
当前,在 JSP 规范中 Java 是唯一被支持的语言)。 
接下来的是 JSP 声明。 JSP 声明可以看成是定义类这一层次的变量和方法的地
方。 JSP 声明由 < %! 开始, %> 结束。如本例中的“ < %! String str="0";
%> ”定义了一个字符串变量。在每一项声明的后面都必须有一个分号,就象在
普通 Java 类中声明成员变量一样。 
位于 < % 和 %> 之间的代码块是描述 JSP 页面处理逻辑的 Java 代码,如本例
中的 for 循环所示。 
最后,位于 < %= 和 %> 之间的代码称为 JSP 表达式,如本例中的“ < %= str
%> ”所示。 JSP 表达式提供了一种将 JSP 生成的数值嵌入 HTML 页面的简单
方法。 


二、会话状态管理
作 者 : 仙人掌工作室 

   会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解
决这个问题,如使用 Cookies 、隐藏的表单输入域,或直接将状态信息附加到 
URL 中。 Java Servlet 提供了一个在多个请求之间持续有效的会话对象,该对
象允许用户存储和提取会话状态信息。 JSP 也同样支持 Servlet 中的这个概念
。 

   在 Sun 的 JSP 指南 中可以看到许多有关隐含对象的说明(隐含的含义是
,这些对象可以直接引用,不需要显式地声明,也不需要专门的代码创建其实例
)。例如 request 对象,它是 HttpServletRequest 的一个子类。该对象包含了
所有有关当前浏览器请求的信息,包括 Cookies , HTML 表单变量等等。 sess
ion 对象也是这样一个隐含对象。这个对象在第一个 JSP 页面被装载时自动创建
,并被关联到 request 对象上。与 ASP 中的会话对象相似, JSP 中的 sessio
n 对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。 

   为说明 session 对象的具体应用,接下来我们用三个页面模拟一个多页面
的 Web 应用。第一个页面( q1.html )仅包含一个要求输入用户名字的 HTML 
表单,代码如下: 

  < HTML>
  < BODY>
  < FORM METHOD=POST ACTION="q2.jsp">
 请输入您的姓名: 
  < INPUT TYPE=TEXT NAME="thename">
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>

   第二个页面是一个 JSP 页面( q2.jsp ),它通过 request 对象提取 q1
.html 表单中的 thename 值,将它存储为 name 变量,然后将这个 name 值保存
到 session 对象中。 session 对象是一个名字 / 值对的集合,在这里,名字 
/ 值对中的名字为“ thename ”,值即为 name 变量的值。由于 session 对象
在会话期间是一直有效的,因此这里保存的变量对后继的页面也有效。 q2.jsp 
的另外一个任务是询问第二个问题。下面是它的代码: 

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String name=""; %>
  < %
  name = request.getParameter("thename");
  session.putValue("thename", name);
  %>
 您的姓名是: < %= name %>
  < p>
  < FORM METHOD=POST ACTION="q3.jsp">
 您喜欢吃什么 ? 
  < INPUT TYPE=TEXT NAME="food">
  < P>
  < INPUT TYPE=SUBMIT VALUE="SUBMIT">
  < /FORM>
  < /BODY>
  < /HTML>

   第三个页面也是一个 JSP 页面( q3.jsp ),主要任务是显示问答结果。
它从 session 对象提取 thename 的值并显示它,以此证明虽然该值在第一个页
面输入,但通过 session 对象得以保留。 q3.jsp 的另外一个任务是提取在第二
个页面中的用户输入并显示它: 

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < %! String food=""; %>
  < %
  food = request.getParameter("food");
  String name = (String) session.getValue("thename");
  %>
 您的姓名是: < %= name %>
  < P>
 您喜欢吃: < %= food %>
  < /BODY>
  < /HTML>


三、引用 JavaBean 组件
作 者 : 仙人掌工作室 编译 

   JavaBean 是一种基于 Java 的软件组件。 JSP 对于在 Web 应用中集成 J
avaBean 组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用
经测试和可信任的已有组件,避免了重复开发),也为 JSP 应用带来了更多的可
伸缩性。 JavaBean 组件可以用来执行复杂的计算任务,或负责与数据库的交互
以及数据提取等。如果我们有三个 JavaBean ,它们分别具有显示新闻、股票价
格、天气情况的功能,则创建包含所有这三种功能的 Web 页面只需要实例化这三
个 Bean ,使用 HTML 表格将它们依次定位就可以了。 

   为说明在 JSP 环境下 JavaBean 的应用,我们创建了一个名为 TaxRate 的
 Bean 。它有两个属性,即 Product (产品)和 Rate (税率)。两个 set 方
法分别用来设置这两个属性,两个 get 方法则用于提取这两个属性。在实际应用
中,这种 Bean 一般应当从数据库提取税率值,此处我们简化了这个过程,允许
任意设定税率。下面是这个 Bean 的代码清单: 

  package tax;
  public class TaxRate {
  String Product;
  double Rate;
  public TaxRate() {
  this.Product = "A001";
  this.Rate = 5;
  }
  public void setProduct (String ProductName) {
  this.Product = ProductName;
  }
  public String getProduct() {
  return (this.Product);
  }
  public void setRate (double rateValue) {
  this.Rate = rateValue;
  }
  public double getRate () {
  return (this.Rate);
  }
  }

   在 JSP 页面中应用上述 Bean 要用到 < jsp:useBean> 标记。依赖于具体
使用的 JSP 引擎的不同,在何处配置以及如何配置 Bean 的方法也可能略有不同
。本文将这个 Bean 的 .class 文件放在 c:\jswdk-1.0\examples\WEB-INF\jsp
\beans\tax 目录下,这里的 tax 是一个专门存放该 Bean 的目录。下面是一个
应用上述 Bean 的示例页面: 

  < HTML>
  < BODY>
  < %@ page language="java" %>
  < jsp:useBean id="taxbean" scope="application" class="tax.TaxRate"
/>
  < % taxbean.setProduct("A002");
  taxbean.setRate(17);
  %>
 使用方法 1 : < p>
 产品 : < %= taxbean.getProduct() %> < br>
 税率 : < %= taxbean.getRate() %>
  < p>
  < % taxbean.setProduct("A003");
  taxbean.setRate(3);
  %>
  < b> 使用方法 2 : < /b> < p>
 产品 : < jsp:getProperty name="taxbean" property="Product" />
  < br>
 税率 : < jsp:getProperty name="taxbean" property="Rate" />
  < /BODY>
  < /HTML>

   在 < jsp:useBean> 标记内定义了几个属性,其中 id 是整个 JSP 页面内
该 Bean 的标识, scope 属性定义了该 Bean 的生存时间, class 属性说明了
该 Bean 的类文件(从包名开始)。 

   这个 JSP 页面不仅使用了 Bean 的 set 和 get 方法设置和提取属性值,
还用到了提取 Bean 属性值的第二种方法,即使用 < jsp:getProperty> 标记。
 < jsp:getProperty> 中的 name 属性即为 < jsp:useBean> 中定义的 Bean 的
 id ,它的 property 属性指定的是目标属性的名字。 


   事实证明, Java Servlet 是一种开发 Web 应用的理想构架。 JSP 以 Se
rvlet 技术为基础,又在许多方面作了改进。 JSP 页面看起来象普通 HTML 页面
,但它允许嵌入执行代码,在这一点上,它和 ASP 技术非常相似。利用跨平台运
行的 JavaBean 组件, JSP 为分离处理逻辑与显示样式提供了卓越的解决方案。
 JSP 必将成为 ASP 技术的有力竞争者。

--
ICQ:43395237 OICQ:126132  
我自豪我用正版,我骄傲我用盗版!!! 

※ 来源:.月光程序代码网 http://www.moon-soft.com.[FROM: 202.108.2.3]

[关闭][返回]






转载请注明:转载自 月光程序代码网 [ http://www.moon-soft.com ]