抓取jsp网页源代码(㈠JSP与ASP还有一个更为的本质的区别??)
优采云 发布时间: 2021-12-15 19:15抓取jsp网页源代码(㈠JSP与ASP还有一个更为的本质的区别??)
一、 JSP 技术概述
Sun正式发布JSP(JavaServer Pages)后,这种全新的Web应用开发技术迅速引起了人们的关注。JSP 为创建高度动态的 Web 应用程序提供了独特的开发环境。Sun表示,JSP可以适应市场上85%的服务器产品,包括Apache WebServer和IIS4.0。即使你对 ASP 有很深的热爱,我们认为关注 JSP 的开发还是很有必要的。
(一)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 页面时发生。
(2) 运行环境
Sun 的 JSP 主页在这里。您还可以从这里下载 JSP 规范。这些规范定义了供应商在创建 JSP 引擎时必须遵循的一些规则。
JSP 代码的执行需要在服务器上安装 JSP 引擎。这里我们使用 Sun 的 JavaServer Web Development Kit (JSWDK)。为方便学习,本软件包提供了大量可修改的示例。安装 JSWDK 后,只需执行 startserver 命令即可启动服务器。默认配置下,服务器*敏*感*词*8080端口。使用:8080打开默认页面。
在运行 JSP 示例页面之前,请注意 JSWDK 的安装目录,尤其是“work”子目录下的内容。在执行示例页面时,您可以在此处看到 JSP 页面如何转换为 Java 源文件,然后编译为类文件(即 Servlet)。JSWDK 软件包中的示例页面分为两类。它们是收录表单的 JSP 文件或 HTML 文件。这些表单由 JSP 代码处理。与ASP 一样,JSP 中的Java 代码在服务器端执行。因此,您无法通过浏览器中的“查看源文件”菜单看到 JSP 源代码,只能看到生成的 HTML 代码。所有示例的源代码都在单独的“示例”页面上提供。
(3) JSP页面示例
我们来分析一个简单的JSP页面。您可以在JSWDK 的examples 目录中创建另一个目录来存储此文件。文件名可以是任何名称,但扩展名必须是 .jsp。从下面的代码清单中可以看出,JSP 页面的结构基本相同,只是 Java 代码比普通 HTML 页面多。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输出后。
</BODY>
</HTML>
这个JSP页面可以分成几个部分进行分析。
首先是JSP指令。它描述了页面的基本信息,如使用的语言、是否保持会话状态、是否使用缓冲等。JSP指令以<%@开头,以%>结尾。在这个例子中,指令“<%@ page language="java" %>”简单地定义了这个例子使用Java语言(目前,Java是JSP规范中唯一支持的语言)。
接下来是 JSP 声明。JSP 声明可以看作是在类级别定义变量和方法的地方。JSP 声明以 <%! 并以 %> 结尾。例如,本例中的“<%!String str="0"; %>”定义了一个字符串变量。每个声明后必须有一个分号,就像在普通Java类中声明成员变量一样。
<% 和 %> 之间的代码块是 Java 代码,描述了 JSP 页面的处理逻辑,如本例中的 for 循环所示。
最后,<%= 和 %> 之间的代码称为 JSP 表达式,如本示例中的“<%= str %>”所示。JSP 表达式提供了一种将 JSP 生成的值嵌入 HTML 页面的简单方法。
二、会话状态管理
作者:仙人掌工作室
会话状态维护是 Web 应用程序开发人员必须面临的问题。解决这个问题的方法有很多,比如使用Cookies、隐藏表单输入字段,或者直接在URL中附加状态信息。Java Servlet 提供了一个在多个请求之间持久化的会话对象,它允许用户存储和检索会话状态信息。JSP 在 Servlet 中也支持这个概念。
在 Sun 的 JSP 指南中,可以看到很多关于隐式对象的解释(隐式的意思是这些对象可以直接引用,无需显式声明,也不需要特殊的代码来创建它们的实例)。比如请求对象,它是HttpServletRequest的子类。该对象收录当前浏览器请求的所有信息,包括 Cookies、HTML 表单变量等。session对象也是这样一个隐式对象。该对象在加载第一个 JSP 页面时自动创建,并与请求对象相关联。与ASP 中的会话对象类似,JSP 中的会话对象对于希望通过多个页面完成一个事务的应用程序非常有用。
为了说明session对象的具体应用,接下来我们用三个页面来模拟一个多页面的Web应用。第一个页面(q1.html)只收录一个要求用户名的HTML表单,代码如下:
<HTML>
<身体>
<FORM METHOD=POST ACTION="q2.jsp">
请输入你的名字:
<输入类型=文本>
<输入类型=提交值="提交">
</FORM>
</BODY>
</HTML>
第二个页面是一个JSP页面(q2.jsp),通过request对象提取q1.html表单中的name值,存储为name变量,然后保存name值到会话对象。会话对象是一个名称/值对的集合,其中名称/值对中的名称是“thename”,值是名称变量的值。由于会话对象在会话期间始终有效,因此这里保存的变量对于后续页面也有效。q2.jsp 的另一个任务是问第二个问题。这是它的代码:
<HTML>
<身体>
<%@ 页面语言="java" %>
<%! 细绳; %>
<%
name = request.getParameter("thename");
session.putValue("thename", name);
%>
你的名字是:<%=名字%>
<p>
<FORM METHOD=POST ACTION="q3.jsp">
你喜欢吃什么?
<输入类型=文本>
<P>
<输入类型=提交值="提交">
</FORM>
</BODY>
</HTML>
第三个页面也是一个JSP页面(q3.jsp),主要任务是展示问答的结果。它从 session 对象中提取出 thename 的值并显示出来,这就证明了虽然这个值是在第一页输入的,但是它被 session 对象保留了。q3.jsp 的另一个任务是提取第二页中的用户输入并显示出来:
<HTML>
<身体>
<%@ 页面语言="java" %>
<%! 字符串食物=""; %>
<%
食物 = request.getParameter("食物");
String name = (String) session.getValue("thename");
%>
你的名字是:<%=名字%>
<P>
你喜欢吃吗:<%=食物%>
</BODY>
</HTML>
三、参考JavaBean组件
作者:Cactus Studio 编译
JavaBean 是一个基于 Java 的软件组件。JSP 为在 Web 应用程序中集成 JavaBean 组件提供了完整的支持。这种支持不仅缩短了开发时间(您可以直接使用经过测试和信任的现有组件,避免重复开发),还为 JSP 应用程序带来了更多的可扩展性。JavaBean 组件可用于执行复杂的计算任务,或负责与数据库交互和数据提取。如果我们有三个JavaBean,分别具有显示新闻、股票价格和天气状况的功能,那么创建一个收录所有这三个功能的网页只需要实例化这三个Bean,并使用HTML表格依次定位它们。.
为了说明JavaBean 在JSP 环境中的应用,我们创建了一个名为TaxRate 的Bean。它有两个属性,即产品和费率。两个set方法用于设置这两个属性,两个get方法用于提取这两个属性。在实际应用中,这种Bean一般应该是从数据库中提取税率值。在这里,我们简化了这个过程,并允许设置任意税率。下面是这个Bean的代码清单:
包裹税;
公共课税率{
字符串产品;
双倍率;
公共税率(){
this.Product = "A001";
this.Rate = 5;
}
public void setProduct (String ProductName) {
this.Product = 产品名称;
}
公共字符串 getProduct() {
返回 (this.Product);
}
public void setRate (double rateValue) {
this.Rate = rateValue;
}
公共双getRate(){
返回 (this.Rate);
}
}
<jsp:useBean> 标签用于在JSP 页面中应用上述Bean。根据所使用的具体 JSP 引擎,在何处配置 Bean 以及如何配置 Bean 的方法也可能略有不同。本文将Bean的.class文件放在c:jswdk-1.0examplesWEB-INFjspbeanstax目录下,其中tax是专用于存放Bean的目录。这是使用上述 Bean 的示例页面:
<HTML>
<身体>
<%@ 页面语言="java" %>
<jsp:useBean scope="应用程序" />
<% taxbean.setProduct("A002");
taxbean.setRate(17);
%>
使用方法一:<p>
产品:<%= taxbean.getProduct() %> <br>
税率:<%= taxbean.getRate() %>
<p>
<% taxbean.setProduct("A003");
taxbean.setRate(3);
%>
<b>如何使用2:</b> <p>
产品:<jsp:getProperty property="Product" />
<br>
税率:<jsp:getProperty property="Rate" />
</BODY>
</HTML>
<jsp:useBean>标签定义了几个属性,其中id是整个JSP页面中Bean的ID,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 技术非常相似。JSP利用跨平台运行的JavaBean组件,为分离处理逻辑和显示样式提供了一个很好的解决方案。JSP势必成为ASP技术的有力竞争者。