JSP 三个指令七个动作九个对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq975309666/article/details/51737066
每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。 

 Jsp包含三个编译指令和七个动作指令。
三个编译指令为:page、include、taglib。


七个动作指令为:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty。


一、编译指令


1、 page指令


a. 通常位于jsp页面的顶端,同一个页面可以有多个page指令。语法格式如下: 


〈% @page


[language="Java"]


[extends="package.class"]


[import= "package. class I package. *},…"]


[session="true I false"]


[buffer="none I 8kb I size kb" 1


[autoFlush="true I false"]


[isThreadSafe="true I false"]


[info="text"]


[errorPage="relativeURL"]


[contentType="mimeType[ ;charset=characterSet]" I"text/html;charset= "808859-1"]


[isErrorPage=" true I false"]


%〉


1)language属性,一般情况就是java,代表jsp页面使用的脚本语言。


2)Extends属性,确定 JSP 程序编译时所产生的 Java 类,需要继承的父类,或者需要实现的接口的全限定类名。


1.import属性,用来导入包,下面几个包是默认自动导入的,不需要显式导入。默认导入的包有: 


java.lang.* 


javax.servlet.* 


javax.servlet.jsp.* 


javax.servlet.http.*


2.Session属性,设定这个 JSP 页面是否需要 HTIP session 。


3.buffer属性,指定输出缓冲区的大小。输出缓冲区的 JSP 内部对象: out 用于缓存 JSP页面对客户浏览器的输出,默认值为 8kb,可以设置为 none ,也可以设置为其他值,单位为kb


4.autoFlush属性,当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。设置为true 时为正常输出;如果设置为 false ,会在 buffer 溢出时产生一个异常。


5.Info属性,设置该 JSP 程序的信息,也可以看做其说明,可以通过 Servlet. getServletInfo()方法获取该值。如果在 JSP 页面中,可直接调用 getServletInfoO方法获取该值,因为 JSP 页面的实质就是 Servlet 。


errorPage属性,指定错误处理页面。如果本程序产生了异常或者错误,而该 JSP 页面没有对应的处理代码,则会自动调用该指令所指定的 JSP 页面。使用 JSP 页面时,可以不处理异常,即使是 checked 异常。(重定向到对应的错误处理页面,但是URL还是原来的URl,并不发生变化)如果这个页面不存在这个属性,那么一旦代码出现问题,就会在开发环境和IE浏览器上提示错误。可见这条属性控制异常处理的效果在表现形式上要好的多。


6.IsErrorPage属性,设置本 JSP 页面是否为错误处理程序。如果该页面本身己是错误处理页面,则无须使用 errorPage 属性。


7.ContentType属性,用于设定生成网页的文件格式和编码方式,即 MIME 类型和页面字符集类型,默认的 MIME 类型是 text/html; 默认的字符集为 ISO-8859-1 。


2、 include指令


    使用 include 指令,可以将一个外部文件嵌入到当前 JSP 文件中,同时解析这个页面中的 JSP 语句(如果有的话)。这是个静态的 include 语旬,不会检查所包含 JSP 页面的变化。


    include 既可以包含静态的文本,也可以包含动态的 JSP 页面。静态的编译指令include ,是将被包含的页面加入进来,生成一个完整的页面。


include 编译指令的语法:


〈% @include file="relativeURLSpec" %〉


    如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的 include 语句。


    包含include指令的jsp页面在部署后,经过访问编译生成java文件,在tomcat的 work\Catalina\localhost\project\org\apache\jsp目录下会生成对应的java文件,这些文件与jsp的名字相同,他包含了编译后的代码,甚至include包含的另外一个jsp的代码也被相应的加入了进来。


二、 动作指令


1、 forward指令:forward 指令用于将页面响应控制转发给另外的页面。既可以转发给静态的 HTML页面,也可以转发到动态的 JSP 页面,或者转发到容器中的 Servlet。


JSP 的 forward 指令的格式如下:


对于 JSP 1. 0 ,使用如下语法: 


<jsp:forward page=”{relativeURL |<%=expression%>}” />


可使用如下语法:


<jsp:forward page=”{relativeURL |<%=expression%>}”>


{<jsp:param…/>}


</jsp:forward>


第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest 类的 getParameter方法获取。


2、 include指令,它是一个动态的指令,可以用于导入某个页面。它的导入会每次检查被导入页面的改变。下面是include指令的使用格式:


<jsp:include page=”{relativeURL |<%=expression%>}” flush=”true” />


或者:


<jsp:include page=”{relativeURL |<%=expression%>}” flush=”true”>


<jsp:param name=”paramName” value=”paramValue”/>


</jsp:include>


flush 属性用于指定输出缓存是否转移到被导入文件中。如果指定为剧。则包含在被导入文件中;如果指定为false,则包含在原文件中。对于JSP 1.1以下的旧版本,只能设置为false。


<include>和<jsp:include>分别为静态导入和动态导入。他们的的区别:静态导入是将被导入页面的代码完全插入,两个页面生成一个整体的 Servlet; 而动态导入则在 Servlet 中使用动态导入,从而将页面引入。


3、 useBean、setProperty和getProperty指令


这三个指令都是与JavaBean相关的指令,其中useBean用于在jsp页面初始化一个java实例,setProperty用于修改JavaBean实例的属性,getProperty用于获取JavaBean实例的属性。


useBean的语法格式:


<jsp:useBean id=”” class=”” scope=”page | request |session | application” >


Id是JavaBean的实例名,class属性确定JavaBean的实现类。Scope属性确定生存范围【页面、请求、会话、应用】


setProperty的语法格式:


<jsp:setProperty name=”” property=”” value=”” />


Name属性确定需要设定


4、 plugin指令


plugin 指令主要用于下载服务器端的 JavaBean 或 Applet 到客户端执行。由于程序在客户端执行,因此客户端必须安装虚拟机。


plugin 的语法格式如下:


<jsp:plugin type=”bean | applet"


code="classFileName"


codebase="classFileDiretoryName"


[name=" instanceName"]


[archive="URLtoArchive"]


[align= "bottom I top I middle I left I right"]


[heigh="displayPixels"]


[width="displayPixels"]


[hspace="leftRightPixels"]


[vspace="topBottomPiexels"]


[jreversion=JREVersionNumber|1.2"]


[nspluginurl="URLToPlugin"]


[iepluginurl="URLToPlugin"]>


[<jsp:parames>


[jsp:param name="parameterName" value="parameterValue" />]


</jsp:params>]


[<jsp:fallback>text message for user that can no see the plugin


</jsp:fallback> ]


</jsp:plugin>


这些属性的说明如下:


Type: 指定被执行的java程序的类型,是一个bean还是一个applet


Code: 指定被执行的文件名,该属性值必须以“.class”扩展名结尾


Codebase: 指定被执行的文件目录。


Name: 给该程序起一个名字用来标识该程序。


Archive: 指向一些要预先载入的将要使用到的类的路径。


Hspace,Vspace: 显示左右上下的留白。


jreversion: 能正确运行改程序必须的JRE版本。


Nsplugin,ieplugin: Netscape Navigator, Internet Exploer 下载运行所需JRE 的地址。


<jsp:fallback>指令:当不能正确显示该applet时,代替显示的提示信息。


5、 param指令


param指令用于设置参数值,这个指令本身不能单独使用,因为单独使用没有意义。它可以和以下几个指令合起来使用


jsp:include


jsp:forward


jsp:plugin










JSP内置对象(9个常用的内置对象)
   1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,
然后做出响应。它是HttpServletRequest类的实例。
序号方法说明
object  getAttribute(Stringname) 返回指定属性的属性值
Enumeration  getAttributeNames() 返回所有可用属性名的枚举
String  getCharacterEncoding() 返回字符编码方式
intget  ContentLength() 返回请求体的长度(以字节数)
String  getContentType() 得到请求体的MIME类型
Servlet  InputStreamgetInputStream() 得到请求体中一行的二进制流
String  getParameter(Stringname) 返回name指定参数的参数值
Enumeration  getParameterNames() 返回可用参数名的枚举
String[]  getParameterValues(Stringname) 返回包含参数name的所有值的数组
String  getProtocol() 返回请求用的协议类型及版本号
String  getScheme() 返回请求用的计划名,如:http.https及ftp等
String  getServerName() 返回接受请求的服务器主机名
int  getServerPort() 返回服务器接受此请求所用的端口号
BufferedReader  getReader() 返回解码过了的请求体
String  getRemoteAddr() 返回发送此请求的客户端IP地址
String  getRemoteHost() 返回发送此请求的客户端主机名
void  setAttribute(Stringkey,Objectobj) 设置属性的属性值
String  getRealPath(Stringpath) 返回一虚拟路径的真实路径
   2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。
它是HttpServletResponse类的实例。
序号方法说明
1StringgetCharacterEncoding() 返回响应用的是何种字符编码
2ServletOutputStreamgetOutputStream() 返回响应的一个二进制输出流
3PrintWritergetWriter() 返回可以向客户端输出字符的一个对象
4voidsetContentLength(intlen) 设置响应头长度
5voidsetContentType(Stringtype) 设置响应的MIME类型
6sendRedirect(java.lang.Stringlocation) 重新定向客户端的请求
   3.session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个
WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession
类的实例.
序号方法说明
longgetCreationTime() 返回SESSION创建时间
publicStringgetId() 返回SESSION创建时JSP引擎为它设的惟一ID号
longgetLastAccessedTime() 返回此SESSION里客户端最近一次请求时间
intgetMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取
消(ms)
String[]getValueNames() 返回一个包含此SESSION中所有可用属性的数

voidinvalidate() 取消SESSION,使SESSION不可用
booleanisNew() 返回服务器创建的一个SESSION,客户端是否已经加入
voidremoveValue(Stringname) 删除SESSION中指定的属性
voidsetMaxInactiveInterval() 设置两次请求间隔多长时间此SESSION被取
消(ms)
   4.out对象

out对象是JspWriter类的实例,是向客户端输出内容常用的对象


序号方法说明
voidclear() 清除缓冲区的内容
voidclearBuffer() 清除缓冲区的当前内容
voidflush() 清空流
intgetBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0
intgetRemaining() 返回缓冲区还剩余多少可用
booleanisAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
voidclose() 关闭输出流
   5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是
java.lang.Object类的实例
序号方法说明
classgetClass 返回此Object的类
inthashCode() 返回此Object的hash码
booleanequals(Objectobj) 判断此Object是否与指定的Object对象相等
voidcopy(Objectobj) 把此Object拷贝到指定的Object对象中
Objectclone() 克隆此Object对象
StringtoString() 把此Object对象转换成String类的对象
voidnotify() 唤醒一个等待的线程
voidnotifyAll() 唤醒所有等待的线程
voidwait(inttimeout) 使一个线程处于等待直到timeout结束或被唤醒
voidwait() 使一个线程处于等待直到被唤醒
voidenterMonitor() 对Object加锁
voidexitMonitor() 对Object开锁
   6.application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器
的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前
后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何
地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和
关闭决定了application对象的生命。它是ServletContext类的实例。
序号方法说明
ObjectgetAttribute(Stringname) 返回给定名的属性值
EnumerationgetAttributeNames() 返回所有可用属性名的枚举
voidsetAttribute(Stringname,Objectobj) 设定属性的属性值
voidremoveAttribute(Stringname) 删除一属性及其属性值
StringgetServerInfo() 返回JSP(SERVLET)引擎名及版本号
StringgetRealPath(Stringpath) 返回一虚拟路径的真实路径
ServletContextgetContext(Stringuripath) 返回指定WebApplication的application对象
intgetMajorVersion() 返回服务器支持的ServletAPI的最大版本号
intgetMinorVersion() 返回服务器支持的ServletAPI的最大版本号
StringgetMimeType(Stringfile) 返回指定文件的MIME类型
URLgetResource(Stringpath) 返回指定资源(文件及目录)的URL路径
InputStreamgetResourceAsStream(Stringpath) 返回指定资源的输入流
RequestDispatchergetRequestDispatcher(Stringuripath) 返回指定资源的RequestDispatcher对象
ServletgetServlet(Stringname) 返回指定名的Servlet
EnumerationgetServlets() 返回所有Servlet的枚举
EnumerationgetServletNames() 返回所有Servlet名的枚举
voidlog(Stringmsg) 把指定消息写入Servlet的日志文件
voidlog(Exceptionexception,Stringmsg) 把指定异常的栈轨迹及错误消息写入Servlet的日志文件
voidlog(Stringmsg,Throwablethrowable) 把栈轨迹及给出的Throwable异常的说明信息写入Servlet的日志文件
   7.exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产
生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,
否则无法编译。他实际上是Java.lang.Throwable的对象
序号方法说明
StringgetMessage() 返回描述异常的消息
StringtoString() 返回关于异常的简短描述消息
voidprintStackTrace() 显示异常及其栈轨迹
ThrowableFillInStackTrace() 重写异常的执行栈轨迹
   8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是
说他可以访问到本页所在的SESSION,也可以取本页面所在的application的
某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫
pageContext。
序号方法说明
JspWritergetOut() 返回当前客户端响应被使用的JspWriter流(out)
HttpSessiongetSession() 返回当前页中的HttpSession对象(session)
ObjectgetPage() 返回当前页的Object对象(page)
ServletRequestgetRequest() 返回当前页的ServletRequest对象(request)
ServletResponsegetResponse() 返回当前页的ServletResponse对象(response)
ExceptiongetException() 返回当前页的Exception对象(exception)
ServletConfiggetServletConfig() 返回当前页的ServletConfig对象(config)
ServletContextgetServletContext() 返回当前页的ServletContext对象(application)
voidsetAttribute(Stringname,Objectattribute) 设置属性及属性值
voidsetAttribute(Stringname,Objectobj,intscope) 在指定范围内设置属性及属性值
publicObjectgetAttribute(Stringname) 取属性的值
ObjectgetAttribute(Stringname,intscope) 在指定范围内取属性的值
publicObjectfindAttribute(Stringname) 寻找一属性,返回起属性值或NULL
voidremoveAttribute(Stringname) 删除某属性
voidremoveAttribute(Stringname,intscope) 在指定范围删除某属性
intgetAttributeScope(Stringname) 返回某属性的作用范围
EnumerationgetAttributeNamesInScope(intscope) 返回指定范围内可用的属性名枚举
voidrelease() 释放pageContext所占用的资源
voidforward(StringrelativeUrlPath) 使当前页面重导到另一页面
voidinclude(StringrelativeUrlPath) 在当前位置包含另一文件
   9.config对象

config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)


猜你喜欢

转载自blog.csdn.net/qq975309666/article/details/51737066