下载此文档

JSP简介.pdf


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
该【JSP简介 】是由【我是开始】上传分享,文档一共【6】页,该文档可以免费在线阅读,需要了解更多关于【JSP简介 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。JSP(全称JavaServerPages)是由公司倡导和许多公司参与共同建立的一种使软件开
发者可以响应客户端请求,而动态生成、或其他格式文档的网页的技术标准。JSP技术
是以语言作为的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于的应
用程序。
JSP使Java代码和特定的预定义动作可以嵌入到静态页面中。JSP句法增加了被称为JSP
动作的XML标签,它们用来调用内建功能。另外,可以创建JSP标签库,然后像使用标
准HTML或XML标签一样使用它们。标签库提供了一种和平台无关的扩展服务器性能的
方法。
JSP被JSP编译器编译成JavaServlets。一个JSP编译器可以把JSP编译成JAVA
代码写的servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二
进制码。
JSP和Servlets
从架构上说,JSP可以被看作是从Servlets高级提炼而作为API的扩展而应用。
Servlets和JSPs最早都是由(升阳公司)开发的。从版本以来,JSP处于(有人译为:
JAVA社区组织)开发模式下。-53规定了JSP和Servlet的规范,-152规定了JSP的
规范。2006年5月,JSP的规范作为5的一部份,在-245中发布。
JSP句法
一个JSP页面可以被分为以下几部份:
静态数据,如HTML
JSP指令,如include指令
JSP脚本元素和变量
JSP动作
用户自定义标签
静态数据
静态数据在输入文件中的内容和输出给响应的内容完全一致。此时,该JSP输入文件会
是一个没有内嵌JAVA或动作的HTML页面。而且,客户端每次请求都会得到相同的响应
内容。
JSP指令
JSP指令控制JSP编译器如何去生成,以下是可用的指令:
包含指令include–包含指令通知JSP编译器把另外一个文件完全包含入当前
文件中。效果就好像被包含文件的内容直接被粘贴到当前文件中一样。这个功
能和C所提供的很类似。被包含文件的扩展名一般都是"jspf"(即JSPFragment,
JSP碎片):
<%***@includefile=""%>
页面指令page–页面指令有以下几个选项:
import使一个JAVA导入声明被插入到最终页面文件。
contentType规定了生成内容的类型。当生成非HTML内容或者当前
字符集并非默认字符集时使用。
errorPage处理HTTP请求时,如果出现异常则显示该错误提示信
息页面。
isErrorPage如果设置为TRUE,则表示当前文件是一个错误提示页
面。
isThreadSafe表示最终生成的servlet是否安全线程(safe)。
<%***@pageimport=".*"%>一种是声明标签,在JAVASERVLET的类体中放入
一个变量的定义。静态的数据成员也可以如此定义。
<%!intserverInstanceVariable=1;%>
一种是脚本标签,在JAVASERVLET的类的_jspService()方法中放入所包含的
语句。
<%intlocalStackBasedVariable=1;
(localStackBasedVariable);%>
一种是表达式标签,在JAVASERVLET的类中放入待赋值的表达式,表达式注意
不能以分号结尾。
<%="expandedinlinedata"+1%>
JSP动作
JSP动作是一系列可以调用内建于网络服务器中的功能的XML标签。JSP提供了以下动
作:
jsp:include和子过程类似,JAVASERVLET暂时接管对其它指定的
JSP页的请求和响应。当处理完该JSP页后就马上把控
制权交还当前JSP页。这样JSP代码就可以在多个JSP
页中共享而不用复制。
jsp:param可以在jsp:include,jsp:forward或jsp:params块之
间使用。指定一个将加入请求的当前参数组中的参数。
jsp:forward用于处理对另一个JSP或SERVLET的请求和响应。控制
权永远不会交还给当前JSP页。
jsp:plugin的老版本和使用不同的标签以嵌入一个。这个动作产生
为嵌入一个APPLET所需要的指定浏览器标签。
jsp:fallback如果浏览器不支持APPLETS则会显示的内容。
jsp:getProperty从指定的中获取一个属性值。
jsp:setProperty在指定的JavaBean中设置一个属性值。
jsp:useBean创建或者复用一个JavaBean变量到JSP页。
标签样例
jsp:include
<html>
<head></head>
<body>
<jsp:includepage="">
<jsp:paramname="extraparam"value="myvalue"/>
</jsp:include>
name:<%=("extraparam")%>
</body>
</html>
jsp:forward
<jsp:forwardpage="">
<jsp:paramname="forwardedFrom"value=""/>
</jsp:forward>
在本例中,请求被传递到"",而且请求的处理权不会再返回前者。
jsp:plugin
<jsp:plugintype=appletheight="100%"width="100%"
archive=","
codebase="/applets"
code="">
<jsp:params>
<jsp:paramname="enableDebug"value="true"/>
</jsp:params>
<jsp:fallback>
Yourbrowserdoesnotsupportapplets.
</jsp:fallback>
</jsp:plugin>
上述例子说明了一种在网页中嵌入的统一方法。在<OBJECT>标签出现之前,并没有一种
嵌入applets的通用方法。这个标签设计得并不好,但有希望在以后加入动态属性
(height="${}",code="${chart}"等)和动态参数的新功能。目前jsp:plugin标签不
允许动态调用applets。例如,你如果有一个图表applet需要数据点以参数形式被传入,
除非数据点的数量是一个常量,否则你就不能使用ResultSet循环来创建jsp:param标
签,你不得不手写每个jsp:param标签的代码。而每个上述jsp:param标签可以有一个
动态命名和动态值。
jsp:useBean
<jsp:useBeanid="myBean"class=""scope="request"/>
<jsp:getPropertyname="myBean"property="lastChanged"/>
<jsp:setPropertyname="myBean"property="lastChanged"value="<%=new
Date()%>"/>
scope属性可以是request,page,sessionorapplication,它有以下用意:
request—该属性在请求的生命周期内有效,一旦请求被所有的JSP页处理完
后,那么该属性就不可引用。
page—该属性只是当前页中有效。
session—该属性在用户会话的生命周期内有效。
application—该属性在各种情况下都有效,并且永远不会被变为不可引用,
和全局变量相同。
上述例子将会用一个创建一个类的实例,并且把该实例存储在属性中,该属性将在该请
求的生命周期内有效。它可以在所有被包含或者从主页面(最先接请求的页面收)转向
到的JSP页之间共享。
JSP标签库
除了JSP预定义动作之外,开发者还可以使用JSP标签扩展API添加他们自定义的动作。
开发者写一种实现一个标签的界面和一个标签库的XML描述文件的JAVA类,这就能指
定标签和实现标签的JAVA类请看如下JSP:
<%***@tagliburi=""prefix="myprefix"%>
...
<myprefix:myaction><%--thestarttag%>
...
</myprefix:myaction><%--theendtag%>
...
JSP编译器将会载入这个XML文件,然后可以看到标签myaction由JAVA类MyActionTag
实现。当该标签首次在文件中使用时,将会创建一个MyActionTag的实例。然后(而且
当每次该标签被使用时),当出现开始标签时,将会调用doStartTag()方法,根据开始
标签的结果,来决定如何处理标签的主体。主体是指开始标签和结束标签之间的文本。
这个doStartTag()方法将会返回如下之一:
SKIP_BODY-标签之间不做处理。
EVAL_BODY_INCLUDE-对标签之内主体进行赋值。
EVAL_BODY_TAG-对标签之内主体进行赋值并把结果输出到流(保存在标签的
主体内容属性中)。
注意:如果标签扩展了BodyTagSupport类,当主体被执行时会在调用doEndTag()
之前调用doAfterBody()方法。该方法用于实现循环结构。
当结束标签出现时,它会调用doEndTag()方法,该方法会返回如下两做之一:
EVAL_PAGE-表示JSP文件的剩余部份将会被执行。thisindicatesthatthe
restoftheJSPfileshouldbeprocessed.
SKIP_PAGE-表示将不会再有更多执行操作。当前JSP页交出控制权。就象在
转发动作中的作用一样。
上述myaction标签tag会有一个类似下面例子的用于实现的类:
publicclassMyActionTagextendsTagSupport{
publicvoidrelease(){...}
publicMyActionTag(){...}
.}
更快更简单的创建新标签的方法。
Hello,${}<%--sameas:Hello,<%=("visitor")%>--%>
模型-视图-控制器模式
为了把表现层从请求处理和数据存储中分离开来,公司推荐在JSP文件中使用一种
模型-视图-控制器模式。规范的SERVLET或者分离的JSP文件用于处理请求。当请求处
理完后,控制权交给一个只作为创建输出作用的JSP页。有几种平台都基于服务于网络
层的模-视图-控件模式(比如和)。
样例
不管JSP编译器是生成SERVLET的JAVA源码,或者是直接发布二进制码,了解一下JSP
编译器是如何把文件转换成一个JAVASERVLET,都是很有帮助的。例如,看一下如下输
入JSP和它最后生成的JAVASERVLET:
InputJSP
<%***@pageerrorPage=""%>
<%***@pageimport=""%>
<html>
<head>
<%!intserverInstanceVariable=1;%>
...
<%intlocalStackBasedVariable=1;%>
<table>
<tr><td><%="expandedinlinedata"+1%></td></tr>
...
Resultingservlet
packagejsp_servlet;
import.*;
import.*;
import.*;
import
import.
class_myserlvetimplements{
.
publicvoid_jspService(request,
response)
throws{
config=...;.;.
.
("<table>\r\n");
("<tr><td>");
.
}catch(Exception_exception){
//cleanupandredirecttoerrorpagein<%***@page
errorPage=""%>
}
}
}

JSP简介 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人我是开始
  • 文件大小289 KB
  • 时间2023-03-18