xxxx大学高新学院毕业设计(论文)外文翻译学生姓名:院(系):专业班级:指导教师:完成日期:JSP基础学习资料一、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 主页在/products/jsp/index.html ,从这里还可以下载JSP 规范,这些规范定义了供应商在创建JSP 引擎时所必须遵从的一些规则。
执行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 = 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 表单变量等等。
session 对象也是这样一个隐含对象。
这个对象在第一个JSP 页面被装载时自动创建,并被关联到request 对象上。
与ASP 中的会话对象相似,JSP 中的session 对象对于那些希望通过多个页面完成一个事务的应用是非常有用的。
为说明session 对象的具体应用,接下来我们用三个页面模拟一个多页面的Web 应用。
第一个页面(q1.html )仅包含一个要求输入用户名字的HTML 表单,代码如下:< HTML>< BODY>< FORM METHOD=POST ACTION="q2.jsp">请输入您的姓名:< INPUT TYPE=TEXT NAME="thename">< INPUT TYPE=SUBMIT V ALUE="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 V ALUE="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 应用中集成JavaBean 组件提供了完善的支持。
这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP 应用带来了更多的可伸缩性。
JavaBean 组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。