抓取jsp网页源代码(㈠JSP与ASP引擎的区别及发展趋势分析-乐题库)

优采云 发布时间: 2022-02-15 22:09

  抓取jsp网页源代码(㈠JSP与ASP引擎的区别及发展趋势分析-乐题库)

  一、 JSP 技术概述

  在 Sun 正式发布 JSP(JavaServer Pages)之后,这种新的 Web 应用程序开发技术迅速引起了人们的关注。JSP 为创建高度动态的 Web 应用程序提供了独特的开发环境。据Sun介绍,JSP可以适配市场上85%的服务器产品,包括Apache WebServer、IIS4.0。即使您“深深地爱上了” ASP,我们认为仍然值得关注 JSP 的演变。

  (1) JSP与ASP的简单对比

  JSP 与微软的 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 主页上,您还可以下载 JSP 规范,这些规范定义了供应商在创建 JSP 引擎时必须遵循的一些规则。

  执行 JSP 代码需要在服务器上安装 JSP 引擎。这里我们使用 Sun 的 JavaServer Web 开发工具包 (JSWDK)。为了便于学习,此软件包提供了许多可修改的示例。安装 JSWDK 后,只需执行 startserver 命令即可启动服务器。在默认配置中,服务器*敏*感*词* 8080 端口。使用 :8080 打开默认页面。

  在运行 JSP 示例页面之前,请注意 JSWDK 的安装目录,尤其是“work”子目录的内容。执行示例页面时,您可以在此处看到 JSP 页面如何转换为 Java 源文件,然后将其编译为类文件(即 servlet)。JSWDK 包中的示例页面分为两类,它们是 JSP 文件或收录由 JSP 代码处理的表单的 HTML 文件。与 ASP 一样,JSP 中的 Java 代码在服务器端执行。因此,在浏览器中使用“查看源代码”菜单无法看到 JSP 源代码,只能看到生成的 HTML 代码。所有示例的源代码均通过单独的“示例”页面提供。

  (iii) JSP 页面示例

  下面我们分析一个简单的JSP页面。您可以在 JSWDK 的示例目录下创建另一个目录来存储此文件。文件名可以是任意的,但扩展名必须是.jsp。从下面的代码清单可以看出,JSP 页面的结构基本相同,只是它们比普通的 HTML 页面多一些 Java 代码。Java代码是通过<%和%>符号添加到HTML代码中间的,它的主要作用是生成并显示一个从0到9的字符串。该字符串的前后是一些通过HTML代码输出的文本。

  <HTML>

  <HEAD><TITLE>JSP 页面</TITLE></HEAD>

  <身体>

  < %@ 页面语言="java" %>

  <%! 字符串 str="0"; %>

  < % for (int i=1; i < 10; i++) {

  str = str + i;

  } %>

  在 JSP 输出之前。

  <P>

  < %= 字符串 %>

  <P>

  JSP 输出后。

  </正文>

  </HTML>

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

  第一个是JSP 指令。它描述了页面的基本信息,例如使用的语言、是否保持会话状态、是否使用缓冲等。JSP 指令以<%@ 开头,以%> 结尾。在这个例子中,指令“< %@ page language="java" %> ”简单地定义了这个例子使用Java 语言(目前,Java 是JSP 规范中唯一支持的语言)。

  接下来是 JSP 声明。JSP 声明可以被认为是在类级别定义变量和方法的地方。JSP 声明以 <%! 并以 %> 结尾。如本例中的“<%!String str="0"; %>”定义了一个字符串变量。每个声明后面必须跟一个分号,就像在普通 Java 类中声明成员变量一样。

  <% 和 %> 之间的代码块是描述 JSP 页面处理逻辑的 Java 代码,如本例中的 for 循环所示。

  最后,< %= 和 %> 之间的代码称为 JSP 表达式,如本例中的“< %= str %>”。JSP 表达式提供了一种将 JSP 生成的值嵌入到 HTML 页面中的简单方法。

  会话状态维护是Web 应用程序开发人员必须面对的问题。有多种方法可以解决此问题,例如使用 cookie、隐藏表单输入字段或将状态信息直接附加到 URL。Java servlet 提供了一个跨多个请求持续存在的会话对象,它允许用户存储和检索会话状态信息。JSP 在 servlet 中也支持这个概念。

  在 Sun 的 JSP 指南中,您可以看到很多关于隐式对象的内容(隐式意味着这些对象可以直接引用而无需显式声明或特殊代码来创建它们的实例)。例如请求对象,它是 HttpServletRequest 的子类。此对象收录有关当前浏览器请求的所有信息,包括 cookie、HTML 表单变量等。会话对象也是这样一个隐含对象。该对象在第一个 JSP 页面加载时自动创建,并与请求对象相关联。与 ASP 中的会话对象类似,JSP 中的会话对象对于想要通过多个页面完成一个事务的应用程序非常有用。

  为了说明session对象的具体应用,接下来我们用三个页面来模拟一个多页面的Web应用。第一个页面( q1.html )只收录一个询问用户名的 HTML 表单,代码如下:

  <HTML>

  <身体>

  <FORM METHOD=POST ACTION="q2.jsp">

  请输入你的名字:

  <输入类型=文本>

  <输入类型=提交值=“提交”>

  </表格>

  </正文>

  </HTML>

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

  <HTML>

  <身体>

  < %@ 页面语言="java" %>

  <%! 细绳; %>

  < %

  name = request.getParameter("thename");

  session.putValue("名称", name);

  %>

  你的名字是:< %= name %>

  <p>

  <FORM METHOD=POST ACTION="q3.jsp">

  你喜欢吃什么?

  <输入类型=文本>

  <P>

  <输入类型=提交值=“提交”>

  </表格>

  </正文>

  </HTML>

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

  <HTML>

  <身体>

  < %@ 页面语言="java" %>

  <%! 字符串食物=""; %>

  < %

  food = request.getParameter("food");

  String name = (String) session.getValue("thename");

  %>

  你的名字是:< %= name %>

  <P>

  你喜欢吃:< %= food %>

  </正文>

  </HTML>

  JavaBean 是基于 Java 的软件组件。JSP 为在 Web 应用程序中集成 JavaBean 组件提供了完整的支持。这种支持不仅缩短了开发时间(通过直接利用经过测试和信任的现有组件,避免重复开发),而且还为 JSP 应用程序带来了更多的可扩展性。JavaBean 组件可用于执行复杂的计算任务,或负责与数据库交互和数据提取。如果我们有三个具有显示新闻、股票价格和天气状况的功能的 JavaBean,那么创建一个收录所有三个功能的 Web 页面只需要实例化这三个 bean 并使用 HTML 表按顺序定位它们。.

  为了说明 JavaBeans 在 JSP 环境中的应用,我们创建了一个名为 TaxRate 的 Bean。它有两个属性,Product 和 Rate。两个 set 方法用于设置这两个属性,两个 get 方法用于提取这两个属性。在实际应用中,这种bean一般应该从数据库中提取税率值。这里我们简化了流程,允许任意设定税率。下面是这个 bean 的代码清单:

  包裹税;

  公共课税率 {

  字符串产品;

  双倍率;

  公共税率(){

  this.Product = "A001";

  this.Rate = 5;

  }

  公共无效集产品(字符串产品名称){

  this.Product = 产品名称;

  }

  公共字符串 getProduct() {

  返回(this.Product);

  }

  公共无效setRate(双倍率值){

  this.Rate = rateValue;

  }

  公共双getRate(){

  返回(this.Rate);

  }

  }

  <jsp:useBean> 标记用于在 JSP 页面中应用上述 bean。根据所使用的特定 JSP 引擎,bean 的配置位置和方式可能略有不同。本文将这个bean的.class文件放在c:jswdk-1.0examplesWEB-INFjspeans ax目录下,其中tax是专门存放bean的目录。这是应用上述 bean 的示例页面:

  <HTML>

  <身体>

  < %@ 页面语言="java" %>

  <jsp:useBean scope="application" />

  < % taxbean.setProduct("A002");

  taxbean.setRate(17);

  %>

  方法一:<p>

  产品:< %= taxbean.getProduct() %> < br>

  税率:< %= taxbean.getRate() %>

  <p>

  < % taxbean.setProduct("A003");

  taxbean.setRate(3);

  %>

  <b>使用方法二:</b> <p>

  产品:< jsp:getProperty property="Product" />

  <br>

  速率:< jsp:getProperty property="Rate" />

  </正文>

  </HTML>

  <jsp:useBean> 标签中定义了几个属性,其中 id 是 bean 在整个 JSP 页面中的标识,scope 属性定义了 bean 的生命周期,class 属性描述了 bean 的类文件(开始来自包名))。

  这个 JSP 页面不仅使用 bean 的 set 和 get 方法来设置和检索属性值,而且还使用了第二种检索 bean 属性值的方法,即使用 <jsp:getProperty> 标记。<jsp:getProperty> 中的name 属性是<jsp:useBean> 中定义的bean 的id,其property 属性指定了目标属性的名称。

  事实证明,Java servlet 是开发 Web 应用程序的理想框架。JSP 基于 Servlet 技术,并在很多方面进行了改进。JSP 页面看起来像一个普通的 HTML 页面,但它允许嵌入执行代码,在这方面它与 ASP 技术非常相似。使用跨平台运行的 JavaBean 组件,JSP 为分离处理逻辑和表示样式提供了出色的解决方案。JSP必将成为ASP技术的有力竞争者。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线