⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsp1.htm

📁 一个不错JSP入门教程.
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>JSP技术简介</title>
</head>

<body>

<h5 align="center" style="text-align:center"><span lang="EN-US">JSP技术简介&nbsp;</span></h5>
<p>一、<span lang="EN-US"> JSP 技术概述<br>
作 者 : 仙人掌工作室<br>
<br>
   在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 
应用开发技术很快引起了人们的关注。 JSP 为创建高度动态的 
Web 应用提供了一个独特的开发环境。按照 Sun 的说法, JSP 
能够适应市场上包括 Apache WebServer 、 IIS4.0 在内的 85% 
的服务器产品。即使您对 ASP &quot;一往情深&quot;,我们认为,关注 
JSP 的发展仍旧很有必要。&nbsp;<br>
<br>
   ㈠ JSP 与 ASP 的简单比较&nbsp;<br>
<br>
   JSP 与 Microsoft 的 ASP 技术非常相似。两者都提供在 HTML 
代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。在 
ASP 或 JSP 环境下, HTML 
代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 
HTML 页面只依赖于 Web 服务器,而 ASP 和 JSP 
页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 
HTML 代码中,然后一起发送给浏览器。 ASP 和 JSP 都是面向 Web 
服务器的技术,客户端浏览器不需要任何附加的软件支持。&nbsp;<br>
<br>
   ASP 的编程语言是 VBScript 之类的脚本语言, JSP 使用的是 
Java ,这是两者最明显的区别。此外, ASP 与 JSP 
还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 
ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 
下,代码被编译成 Servlet 并由 Java 
虚拟机执行,这种编译操作仅在对 JSP 
页面的第一次请求时发生。&nbsp;<br>
<br>
   ㈡运行环境&nbsp;<br>
<br>
   Sun 公司的 JSP 主页在 http://www.javasoft.com/products/jsp/index.html 
,从这里还可以下载 JSP 规范,这些规范定义了供应商在创建 
JSP 引擎时所必须遵从的一些规则。&nbsp;<br>
<br>
   执行 JSP 代码需要在服务器上安装 JSP 
引擎。此处我们使用的是 Sun 的 JavaServer Web Development Kit ( 
JSWDK 
)。为便于学习,这个软件包提供了大量可供修改的示例。安装 
JSWDK 之后,只需执行 startserver 
命令即可启动服务器。在默认配置下服务器在端口 8080 
监听,使用 http://localhost:8080 即可打开缺省页面。&nbsp;<br>
<br>
   在运行 JSP 示例页面之前,请注意一下安装 JSWDK 
的目录,特别是&quot; work &quot;子目录下的内容。执行示例页面时,可以在这里看到 
JSP 页面如何被转换成 Java 源文件,然后又被编译成 class 
文件(即 Servlet )。 JSWDK 
软件包中的示例页面分为两类,它们或者是 JSP 
文件,或者是包含一个表单的 HTML 文件,这些表单均由 JSP 
代码处理。与 ASP 一样, JSP 中的 Java 
代码均在服务器端执行。因此,在浏览器中使用&quot;查看源文件&quot;菜单是无法看到 
JSP 源代码的,只能看到结果 HTML 
代码。所有示例的源代码均通过一个单独的&quot; examples &quot;页面提供。&nbsp;<br>
<br>
   ㈢ JSP 页面示例&nbsp;<br>
<br>
   下面我们分析一个简单的 JSP 页面。您可以在 JSWDK 的 
examples 
目录下创建另外一个目录存放此文件,文件名字可以任意,但扩展名必须为 
.jsp 。从下面的代码清单中可以看到, JSP 页面除了比普通 
HTML 页面多一些 Java 代码外,两者具有基本相同的结构。 Java 
代码是通过 &lt; % 和 %&gt; 符号加入到 HTML 
代码中间的,它的主要功能是生成并显示一个从 0 到 9 
的字符串。在这个字符串的前面和后面都是一些通过 HTML 
代码输出的文本。&nbsp;<br>
<br>
  &lt; HTML&gt;<br>
  &lt; HEAD&gt;&lt; TITLE&gt;JSP 页面 &lt; /TITLE&gt;&lt; /HEAD&gt;<br>
  &lt; BODY&gt;<br>
  &lt; %@ page language=&quot;java&quot; %&gt;<br>
  &lt; %! String str=&quot;0&quot;; %&gt;<br>
  &lt; % for (int i=1; i &lt; 10; i++) {<br>
  str = str + i;<br>
  } %&gt;<br>
  JSP 输出之前。&nbsp;<br>
  &lt; P&gt;<br>
  &lt; %= str %&gt;<br>
  &lt; P&gt;<br>
  JSP 输出之后。&nbsp;<br>
  &lt; /BODY&gt;<br>
  &lt; /HTML&gt;<br>
<br>
   这个 JSP 页面可以分成几个部分来分析。&nbsp;<br>
<br>
首先是 JSP 
指令。它描述的是页面的基本信息,如所使用的语言、是否维持会话状态、是否使用缓冲等。 
JSP 指令由 &lt; %@ 开始, %&gt; 结束。在本例中,指令&quot; &lt; 
%@ page language=&quot;java&quot; %&gt; &quot;只简单地定义了本例使用的是 
Java 语言(当前,在 JSP 规范中 Java 是唯一被支持的语言)。&nbsp;<br>
接下来的是 JSP 声明。 JSP 
声明可以看成是定义类这一层次的变量和方法的地方。 JSP 
声明由 &lt; %! 开始, %&gt; 结束。如本例中的&quot; &lt; %! String 
str=&quot;0&quot;; %&gt; &quot;定义了一个字符串变量。在每一项声明的后面都必须有一个分号,就象在普通 
Java 类中声明成员变量一样。&nbsp;<br>
位于 &lt; % 和 %&gt; 之间的代码块是描述 JSP 页面处理逻辑的 
Java 代码,如本例中的 for 循环所示。&nbsp;<br>
最后,位于 &lt; %= 和 %&gt; 之间的代码称为 JSP 
表达式,如本例中的&quot; &lt; %= str %&gt; &quot;所示。 JSP 
表达式提供了一种将 JSP 生成的数值嵌入 HTML 
页面的简单方法。<br>
<br>
<br>
   会话状态维持是 Web 
应用开发者必须面对的问题。有多种方法可以用来解决这个问题,如使用 
Cookies 、隐藏的表单输入域,或直接将状态信息附加到 URL 
中。 Java Servlet 
提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态信息。 
JSP 也同样支持 Servlet 中的这个概念。&nbsp;<br>
<br>
   在 Sun 的 JSP 指南 
中可以看到许多有关隐含对象的说明(隐含的含义是,这些对象可以直接引用,不需要显式地声明,也不需要专门的代码创建其实例)。例如 
request 对象,它是 HttpServletRequest 
的一个子类。该对象包含了所有有关当前浏览器请求的信息,包括 
Cookies , HTML 表单变量等等。 session 
对象也是这样一个隐含对象。这个对象在第一个 JSP 
页面被装载时自动创建,并被关联到 request 对象上。与 ASP 
中的会话对象相似, JSP 中的 session 
对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。&nbsp;<br>
<br>
   为说明 session 
对象的具体应用,接下来我们用三个页面模拟一个多页面的 
Web 应用。第一个页面( q1.html 
)仅包含一个要求输入用户名字的 HTML 表单,代码如下:&nbsp;<br>
<br>
  &lt; HTML&gt;<br>
  &lt; BODY&gt;<br>
  &lt; FORM METHOD=POST ACTION=&quot;q2.jsp&quot;&gt;<br>
 请输入您的姓名:&nbsp;<br>
  &lt; INPUT TYPE=TEXT NAME=&quot;thename&quot;&gt;<br>
  &lt; INPUT TYPE=SUBMIT VALUE=&quot;SUBMIT&quot;&gt;<br>
  &lt; /FORM&gt;<br>
  &lt; /BODY&gt;<br>
  &lt; /HTML&gt;<br>
<br>
   第二个页面是一个 JSP 页面( q2.jsp ),它通过 request 
对象提取 q1.html 表单中的 thename 值,将它存储为 name 
变量,然后将这个 name 值保存到 session 对象中。 session 
对象是一个名字 / 值对的集合,在这里,名字 / 
值对中的名字为&quot; thename &quot;,值即为 name 
变量的值。由于 session 
对象在会话期间是一直有效的,因此这里保存的变量对后继的页面也有效。 
q2.jsp 的另外一个任务是询问第二个问题。下面是它的代码:&nbsp;<br>
<br>
  &lt; HTML&gt;<br>
  &lt; BODY&gt;<br>
  &lt; %@ page language=&quot;java&quot; %&gt;<br>
  &lt; %! String name=&quot;&quot;; %&gt;<br>
  &lt; %&nbsp;<br>
  name = request.getParameter(&quot;thename&quot;);<br>
  session.putValue(&quot;thename&quot;, name);&nbsp;<br>
  %&gt;<br>
 您的姓名是: &lt; %= name %&gt;<br>
  &lt; p&gt;<br>
  &lt; FORM METHOD=POST ACTION=&quot;q3.jsp&quot;&gt;<br>
 您喜欢吃什么 ?&nbsp;<br>
  &lt; INPUT TYPE=TEXT NAME=&quot;food&quot;&gt;<br>
  &lt; P&gt;<br>
  &lt; INPUT TYPE=SUBMIT VALUE=&quot;SUBMIT&quot;&gt;<br>
  &lt; /FORM&gt;<br>
  &lt; /BODY&gt;<br>
  &lt; /HTML&gt;<br>
<br>
   第三个页面也是一个 JSP 页面( q3.jsp 
),主要任务是显示问答结果。它从 session 对象提取 thename 
的值并显示它,以此证明虽然该值在第一个页面输入,但通过 
session 对象得以保留。 q3.jsp 
的另外一个任务是提取在第二个页面中的用户输入并显示它:&nbsp;<br>
<br>
  &lt; HTML&gt;<br>
  &lt; BODY&gt;<br>
  &lt; %@ page language=&quot;java&quot; %&gt;<br>
  &lt; %! String food=&quot;&quot;; %&gt;<br>
  &lt; %<br>
  food = request.getParameter(&quot;food&quot;);<br>
  String name = (String) session.getValue(&quot;thename&quot;);<br>
  %&gt;<br>
 您的姓名是: &lt; %= name %&gt;<br>
  &lt; P&gt;<br>
 您喜欢吃: &lt; %= food %&gt;<br>
  &lt; /BODY&gt;<br>
  &lt; /HTML&gt;<br>
<br>
<br>
<br>
   JavaBean 是一种基于 Java 的软件组件。 JSP 对于在 Web 
应用中集成 JavaBean 
组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为 
JSP 应用带来了更多的可伸缩性。 JavaBean 
组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。如果我们有三个 
JavaBean 
,它们分别具有显示新闻、股票价格、天气情况的功能,则创建包含所有这三种功能的 
Web 页面只需要实例化这三个 Bean ,使用 HTML 
表格将它们依次定位就可以了。&nbsp;<br>
<br>
   为说明在 JSP 环境下 JavaBean 
的应用,我们创建了一个名为 TaxRate 的 Bean 
。它有两个属性,即 Product (产品)和 Rate (税率)。两个 
set 方法分别用来设置这两个属性,两个 get 
方法则用于提取这两个属性。在实际应用中,这种 Bean 
一般应当从数据库提取税率值,此处我们简化了这个过程,允许任意设定税率。下面是这个 
Bean 的代码清单:&nbsp;<br>
<br>
  package tax;<br>
  public class TaxRate {<br>
  String Product;<br>
  double Rate;<br>
  public TaxRate() {<br>
  this.Product = &quot;A001&quot;;<br>
  this.Rate = 5;<br>
  }<br>
  public void setProduct (String ProductName) {<br>
  this.Product = ProductName;<br>
  }<br>
  public String getProduct() {<br>
  return (this.Product);<br>
  }<br>
  public void setRate (double rateValue) {<br>
  this.Rate = rateValue;<br>
  }<br>
  public double getRate () {<br>
  return (this.Rate);<br>
  }<br>
  }<br>
<br>
   在 JSP 页面中应用上述 Bean 要用到 &lt; jsp:useBean&gt; 
标记。依赖于具体使用的 JSP 
引擎的不同,在何处配置以及如何配置 Bean 
的方法也可能略有不同。本文将这个 Bean 的 .class 文件放在 
c:\jswdk-1.0\examples\WEB-INF\jsp\beans\tax 目录下,这里的 tax 
是一个专门存放该 Bean 的目录。下面是一个应用上述 Bean 
的示例页面:&nbsp;<br>
<br>
  &lt; HTML&gt;<br>
  &lt; BODY&gt;<br>
  &lt; %@ page language=&quot;java&quot; %&gt;<br>
  &lt; jsp:useBean id=&quot;taxbean&quot; scope=&quot;application&quot; 
class=&quot;tax.TaxRate&quot; /&gt;<br>
  &lt; % taxbean.setProduct(&quot;A002&quot;);<br>
  taxbean.setRate(17);<br>
  %&gt;<br>
 使用方法 1 : &lt; p&gt;<br>
 产品 : &lt; %= taxbean.getProduct() %&gt; &lt; br&gt;<br>
 税率 : &lt; %= taxbean.getRate() %&gt;<br>
  &lt; p&gt;<br>
  &lt; % taxbean.setProduct(&quot;A003&quot;);<br>
  taxbean.setRate(3);<br>
  %&gt;<br>
  &lt; b&gt; 使用方法 2 : &lt; /b&gt; &lt; p&gt;<br>
 产品 : &lt; jsp:getProperty name=&quot;taxbean&quot; 
property=&quot;Product&quot; /&gt;<br>
  &lt; br&gt;<br>
 税率 : &lt; jsp:getProperty name=&quot;taxbean&quot; 
property=&quot;Rate&quot; /&gt;<br>
  &lt; /BODY&gt;<br>
  &lt; /HTML&gt;<br>
<br>
   在 &lt; jsp:useBean&gt; 标记内定义了几个属性,其中 id 
是整个 JSP 页面内该 Bean 的标识, scope 属性定义了该 Bean 
的生存时间, class 属性说明了该 Bean 
的类文件(从包名开始)。&nbsp;<br>
<br>
   这个 JSP 页面不仅使用了 Bean 的 set 和 get 
方法设置和提取属性值,还用到了提取 Bean 
属性值的第二种方法,即使用 &lt; jsp:getProperty&gt; 标记。 &lt; 
jsp:getProperty&gt; 中的 name 属性即为 &lt; jsp:useBean&gt; 中定义的 
Bean 的 id ,它的 property 属性指定的是目标属性的名字。&nbsp;<br>
<br>
<br>
   事实证明, Java Servlet 是一种开发 Web 应用的理想构架。 
JSP 以 Servlet 技术为基础,又在许多方面作了改进。 JSP 
页面看起来象普通 HTML 
页面,但它允许嵌入执行代码,在这一点上,它和 ASP 
技术非常相似。利用跨平台运行的 JavaBean 组件, JSP 
为分离处理逻辑与显示样式提供了卓越的解决方案。 JSP 
必将成为 ASP 技术的有力竞争者。&nbsp;<br>
<br>
原作者:仙人掌工作室</span></p>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -