数字化技能提升教程,数字化时代生存宝典

数字化百科 / 词条 / JSP简介

JSP简介

查看全部词条命名空间:Main

JSP(IAVA SERVER PAGES)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其在动态网页的建设中有其强大而别特的功能,现介绍如下:

一、JSP的优点

1,将内容的生成和显示进行分离

使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。

在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。


2,生成可重用的组件

绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
3,采用标识简化页面开发

Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。

通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。

4, 将内容的生成和显示进行分离

与SERVLETS相比,JSP能提供所有SERVLETS功能,但它比用println书写和修改HTML更方便。此外,你可以更明确的进行分工,WEB页面设计人员编写HTML,只需要留出地方让SERVLETS程序员插入动态部分即可。

5, 由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。
6 作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。

二、JSP的运行环境的安装

1、要使WEB 服务器支持JSP首先需要装JAVA的开发环境JDK,现其最高版本为1.2.2,其可在java.sun.com下载。以Window平台下为例,下载jdk1.2.2 for win包,解压至c:\jdk1.2.2目录下即可。

2、 其次是支持jsp引擎的WEB服务器或jsp引擎,如Java Web Server 2.0,resin。现介绍如下:

GNU JSP http://www.klomp.org/gnuisp GPL

JavaServer Web Development kit http://java.sun.com/products/jws JavaSoft的Web Server系统

Resin http://www.caucho.com 支持javascript,java,servlet

Sjsp http//web.telecom.cz/sator/jsp/

JRUN http://www.livesoftware.com livesoftware是Servlet主要的技术领导

Orion http://orion.evermind.net

ServletExec http://www.newatlanta.com

websphpere http://www.software.ibm.com/webservers

JServ-Java Apache http://java.apache.org 必须与Apache Web Server配合

在这里我们使用免费servlet开发套件Resin,其最高版本为1.2。它的功能非常的强大支持javascript、java、servlet,在运行时能自动编译新的和修改过的java源程序.从http://www.caucho.com下载其压缩包解压,这里我把其解压于c:盘下。然后进入c:\resin1.2\bin中运行setup.exe设置resin的工作目录为c:\resin1.2。

最后运行httpd.exe启动Web服务器,打开浏览器,在地址栏输入:http://localhost:8080,你将看见到resin的欢迎界面。需要说明的是resin的web服务器的根目录是resin目录下的doc目录。

三、JSP指令和脚本元素

1,JSP指令是为JSP引擎而设计的。他们并不直接产生任何可见输出,而只是告诉引擎如何处理其余JSP页面。这些指令始终被括在 “$#@60;%@ ?%>”标记中。两个最重要的指令是“pagePage”和“Include”。几乎在所有JSP页面顶部都会看到“Page”指令。尽管不是必须的,但它可以让你指定:到何处查找起支持作用的Java类别:

$#@60;%@ page import="java.util.Date" %>,

出现Java运行问题时,将网上冲浪者引向何处:

$#@60;%@ page errorPage="errorPage.jsp" %>,

还有你是否需要管理用户的会话级信息,这些信息可能来自多个网页述:

$#@60;%@ page session="true" %>.

“Include”指令可以把你的内容分成更多可管理的元素,比如包括一个普通页面页眉或页脚的元素。包含的网页可以是一个固定的HTML 页面或更多的JSP内容:

$#@60;%@ include file="filename.jsp" %>

2 JSP声明用来让你定义页面级变量,以保存信息或定义JSP页面的其余部分可能需要的支持方法。如果你发现代码太多,通常最好把它们写成一个独立的Java类别。声明一般都在“$#@60;%! ?%>”标记中。一定要以分号(;)结束变量声明,因为任何内容都必须是有效的Java语句:

$#@60;%! int i=0; %>。

3,有了JSP表达式,表达式评估结果会被转换成一个字符串,并且被直接包括在输出页面之内。JSP 表达式包含在“$#@60;%= ?%>” 标记中,没有分号,除非在加引号的字符串部分使用分号。

$#@60;%= i %>

$#@60;%= "Hello" %> .

4 代码片段/脚本片段(Scriptlets) JSP代码片段或脚本片段是嵌在“$#@60;% ?%>”标记中的。这种Java代码在Web服务器响应请求时就会运行。在脚本片段周围可能是原始的HTML或XML语句,在这些地方,代码片段可以使你创建条件执行代码,或要用到另外一段代码的代码。例如,以下的代码组合使用表达式和代码片段,显示H1、H2、H3和H4标记中的字符串“Hello”。代码片段并不局限于一行源代码:

$#@60;% for (int i=1; i$#@60;=4; i++) { %>

$#@60;H$#@60;%=i%>>Hello$#@60;/H$#@60;%=i%>>

$#@60;% } %>.

5 在JSP中嵌入式注释。尽管你始终可以在文件中加入HTML注释,但用户在查看页面源代码时会看到这些注释。如果你不想让用户看到它,你就应该将其嵌入“$#@60;%-- ?--%>” 标记中:

$#@60;%-- comment for server side only --%>.

JSP还有三类主要的元素:Scripting elements,Directives,和 Actions.使用Scripting elements您可以定义最终转换为Servlet的部分,Directives 使您可以控制这个Servlet的整体结构,而Actions使您可以指定可重用的已有组件,另外,还可控制JSP引擎的运行。

四 简单应用

好现在以几个简单的例了来应用以上所介如的:

例一 hello.jsp在浏览器上输出"hello world".

$#@60;HTML>

$#@60;HEAD>

$#@60;TITLE>Simple Example$#@60;/TITLE>

$#@60;/HEAD>

$#@60;BODY>

$#@60;% out.println("Hello, world!"); %>

$#@60;/BODY>

$#@60;/HTML>


例二、dates.jsp在浏览器上输出服务器端取出的时间.

$#@60;HTML>

$#@60;HEAD>

$#@60;TITLE>JSP Date Demo Page$#@60;/TITLE>

$#@60;/HEAD>

$#@60;BODY>

$#@60;H1>JSP Date Demo Page$#@60;/H1>

The current date is

$#@60;%

java.util.Date date = new java.util.Date();

out.println(date);

%>.

$#@60;br>expression syle

$#@60;%=date%>

$#@60;/BODY>

$#@60;/HTML>

把hello.jsp和dates.jsp放入resin的doc目录下,然后在浏览器中运行

在JSP中包含有一些隐含了的对象,利用这些隐含对象与JSP页面的代码片段执行环境产生互动。以下为这些隐含对象的集合。


request 客户端请求,包括从GET/POST请求传递过来的参数

response 网页传回客户端的反应

pageContext 在此管理网页属性

session 与请求关联的会话

application 代码片段的运行环境

out 传送响应的输出流

config 代码片段配置对象

page JSP网页本身

exception 有错的网页中未被捕获的例外

这些都是用来做什么的,又如何来使用它们呢?基本上说,在你的脚本片段里,你可以用它们进入执行JSP代码的代码片段。用不着深入了解太多的Servlet API细节,我们来看看能用它们来做到的某些事情:

可以不用表达式,直接进入“Out”隐含对象,将某些内容输出到浏览器中:

$#@60;% out.println("Hello"); %>。

可以从请求对象获取参数值:

$#@60;%

String name=request.getParameter("name");

out.println(name);

%>.

现以一个表单应用来说明隐含对象应用。其完成的功能是从一个表单中提取表单中的字段值,并输出到浏览器上。

example1.html 文件如下:

$#@60;title>表单应用例子$#@60;/title>

$#@60;meta http-equiv="Content-Type" content="text/html; charset=gb2312">

$#@60;/head>

$#@60;body bgcolor="#FFFFFF">

$#@60;form method="post" action="example1.jsp">

$#@60;p>姓名:

$#@60;input type="text" name="name">

$#@60;/p>

$#@60;p> Email:

$#@60;input type="text" name="email">

$#@60;/p>

$#@60;p>意见:

$#@60;textarea name="yj">$#@60;/textarea>

$#@60;/p>

$#@60;p>

$#@60;input type="submit" name="Submit" value="发送">

$#@60;/p>

$#@60;/form>

$#@60;/body>

$#@60;/html>

example1.jsp

$#@60;html>

$#@60;head>

$#@60;title>表单应用例子$#@60;/title>

$#@60;/head>

$#@60;body>姓名:

$#@60;%out.println(request.getParameter("name"));%>

Email:

$#@60;%out.println(request.getParameter("email"));%>

意见:

$#@60;%out.println(request.getPara er("yj"));%>

$#@60;/body>

$#@60;/html>

把example1.html和example1.jsp放到resin的doc目录下,在浏览器的地址样输入:http://localhost:8080/example1.html 。在表单中输入内容,然后按发送按纽,即可见表单中的内容输出到了浏览器上

category:ASP category:PHP category:JSP