软件中间件技术UNIT6_第1页
软件中间件技术UNIT6_第2页
软件中间件技术UNIT6_第3页
软件中间件技术UNIT6_第4页
软件中间件技术UNIT6_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP语法和标签6.1JSP基本语法6.2JSP标准操作元素6.3JSP内置对象6.4其他内置对象6.1JSP基本语法一、JSP的基本语法网页结构:JSP页面程序是在传统的静态页面程序中加入Java描写的动态页面处理部分。JSP页面程序数据由两部分内容构成,元素数据和固定模版数据。元素数据:被JSP引擎所解释的元素类型的实例。固定模版数据:HTML及XML标记符的数据,这部分数据不被JSP引擎解释,通常原封不动地返回客户浏览器。6.1JSP基本语法二、JSP的三种元素类型:1.脚本元素声明﹑表达式和Java程序语句,书写在标签<%和%>之

间。2.指令元素3.标准操作元素

6.1JSP基本语法6.1.1JSP基本语法示例6.1.2注释6.1.3转义符6.1.4JSP脚本元素(Scriptlet)6.1.5JSP指令元素6.1.1JSP基本语法示例<HTML><HEAD><TITLE>SampleJSPExample</TITLE></HEAD><BODY><FORMACTION="rex4_1.jsp"METHOD="get"><CENTER><TABLE><TR><TD>用户名:</TD><TD><INPUTTYPE=textNAME=usernamesize=20></TD></TR><TR><TD>次数:</TD><TD><INPUTTYPE=textNAME=countSIZE=20></TD></TR><TR><TDALIGN="CENTER"COLSPAN="2"><INPUTTYPE="Submit"VALUE="发送">

<INPUTTYPE="reset"VALUE="重置"></TD></TR></TABLE></CENTER></FORM></BODY></HTML>6.1.1JSP基本语法示例<%@pagelanguage="java"%><HTML><HEAD><TITLE>SimpleJSPExample</TITLE><P><%Stringstrname=request.getParameter("username");%>

<%intnumCount=Integer.parseInt(request.getParameter("count"));for(inti=0;i<numCount;i++){%><%=strname%>,welcometoJSP!<BR>

<%}%></P></HEAD><%@includefile="footer.htm"%></HTML>6.1.1JSP基本语法示例JSP程序中包括HTML标签和JSP标签,JSP代码是嵌在<%和%>之间的。下面对该JSP文件作简要说明。(1)<%@pagelanguage="java"%>是一个JSP页面设置指令,它表示这个页面上使用的代码是用Java语言书写的。(2)<%Stringstrname=request.getParameter("username");%>这段代码中定义了一个String类型(字符串类型)的变量strname。通过内置对象request的方法getParameter可以获取通过GET方式传递上来的表单中username对象的值,并赋值给变量strname。6.1.1JSP基本语法示例3)同样的方法可以将表单中count对象的值赋给int型变量numCount,Integer.parseInt()的作用是将字符串转化为整型。接下来的代码使用一个循环结构完成输出,请注意JSP标签和HTML标签的结合使用。(4)<%@includefile="Footer.htm"%>是一个JSP包含指令,在页面中包含另一个HTML文件footer.htm的内容,footer.htm只包含一行HTML代码。<p>SimpleJSPexample@2011ComputerCENTERofECNU</p>6.1.1JSP基本语法示例(5)JSP的执行顺序如下。

服务器接受客户端的JSP网页请求,其中包含表单的数据。

服务器端JSP引擎把JSP代码转换成Servlets代码;Servlets是服务器端执行的程序代码,它的主要功能是:在服务器端执行JSP页面中的JSP元素数据,并将需要显示的结果嵌入HTML页面中返回客户端;服务器端不处理JSP页面中的固定模板数据,直接交给客户端的浏览器执行显示。JSP引擎调用服务器端的Java编译器把Servlets代码编译为.class文件(保存在服务器端的相关目录中)。JVM(JavaVirtualMachine,Java虚拟机)执行.class文件。

结果返回给请求的客户端。6.1.2注释JSP提供了两类注释的方法:一类注释是对JSP网页自身的注释;另一类注释是会出现在发送给客户的生成网页中的注释。1.JSP网页自身注释JSP网页自身注释又称隐藏式注释,它是对JSP程序进行的注释,服务器不会将它发送到客户端,对客户而言,是看不见即隐藏的。其语法格式如下:<%--JSP网页自身的注释内容--%>注意:(1)这种注释是不允许嵌套存在的;(2)注释内容可以是除了“--%>”外的任何内容。若想在注释中使用“--%>”,必须使用Escape表示法,即用“--%\>”来表示。6.1.2注释JSP网页自身注释示例。

程序代码如下:<%@pagelanguage="java"%><HTML><HEAD><TITLE>JSPCommentTest</TITLE></HEAD><BODY><H2>JSPCommentTest</H2><%--Thiscommentwillnotbevisibleinsourcecode--%></BODY></HTML>6.1.2注释JSP网页自身注释示例程序代码如下:<%@pagelanguage="java"%><HTML><HEAD><TITLE>JSPCommentTest</TITLE></HEAD><BODY><H2>JSPCommentTest</H2><%--Thiscommentwillnotbevisibleinsourcecode--%></BODY></HTML>6.1.2注释

也可以使用脚本语言的注释方法对JSP程序进行注释,但是这种注释必须包含在<%与%>之间,方法如下:<%

程序段/*多行注释内容

多行注释内容*/

程序段//单行注释内容

程序段%>

通常,这类注释多用于进行程序说明,注释自己的JSP程序。这些注释内容在JSP编译时被完全忽略,在最终传递到客户端的网页中这种注释是不存在的,既不会显示在客户的浏览器中,也不会在源代码中看到。6.1.2注释2.发送到客户端的注释

生成发送到客户端的注释又称“嵌入式注释”,一般采用HTML及XML的语法格式:<!--发送到客户端的注释-->JSP引擎对此类注释不作任何解释,而直接将其返回给客户端的浏览器,其结果是会在客户端页面中显示一个注释;同时,客户在查看源代码时可以看到这条注释。

但需要注意的是,在这种注释中可以出现动态数据,这是与一般HTML注释最大的不同之处。注释中的动态数据是通过表达式(expression)来表示的,其语法格式如下:

<!--注释<%=expression%>注释-->其中表达式是任何合法表达式。6.1.2注释动态数据注释示例程序代码如下:<%@pagelanguage="java"%><HTML><HEAD><TITLE>ClientCommentTest</TITLE></HEAD><BODY><H2>ClientCommentTest</H2><!--Thiscommentwillnotbevisibleinsourcecode--><!--CommentgenerateDateis<%=(newjava.util.Date()).toString()%>--></BODY></HTML>6.1.3转义符“<%”、“%>”、“'”等符号被JSP引擎视作具有特定意义的符号,若在JSP程序的字符串中需包含这些符号,则需特别处理,即使用转换符来表示,如表所示。转义符表示

例如在隐藏式注释中若需使用%>,则必须使用%\>来表示。<%--JSPCommentcan’tinclude--%\>.--%>符

号转义符表示<%<\%%>%\>'\'"\"\\\6.1.4JSP脚本元素(Scriptlet)

JSP脚本元素是用来在JSP中包含脚本代码,以<%开始并以%>结束,通常是一段Java代码。在一个JSP页面中,可以有多个脚本元素。在一个脚本小程序元素中声明的变量称为JSP页面局部变量。利用这个特性,可将一个程序段分割成几个更小的程序段,从而在程序段间加入一些其他标记元素,并且不会影响程序段内容的执行。在JSP脚本元素中声明变量是和Java类似,语法格式如下:<%!Declaration(s)%>

一次可以声明一个或多个变量和方法,变量在声明时可以设置初始值。声明的内容会插入最终生成的Servlets中,但不会产生任何传送到客户端的数据。6.1.4JSP脚本元素(Scriptlet)

声明的使用,求两数之和。程序代码如下:<%@pagecontentType="text/html;charset=gb2312"%><%@pagelanguage="Java"%><HTML><HEAD><TITLE>DeclarationElements</TITLE></HEAD><BODY><%--声明一个整型变量i--%><%!inti;%> <%--声明两个整型变量,其中m初始值为2,n初始值为4--%><%!intm=2,n=4;%> <%--声明一个字符串变量s,其初始值为"Thesumis:" --%><%!Strings="Thesumis:";%><%--声明一个Add()方法 --%><%!publicvoidAdd()

{i=m+n;}%><P><%=s%><%=i%></P></BODY></HTML>6.1.4JSP脚本元素(Scriptlet)运行结果:Thesumis:0

声明所定义变量或方法是指页面级的变量或方法,即声明内容的作用域是在一个JSP页面中有效。但对于声明方法内部定义的变量,则是仅供方法内部使用,当方法被调用,方法内部变量被分配内存,调用结束时即释放所占用内存。JSP引擎将JSP页面编译为Java文件时,页面级的变量作为类的成员变量,这些变量的内存空间将在服务器关闭后才会被释放。当多个客户请求一个JSP页面时,JSP引擎为每个用户都启动一个线程,这些线程将共享JSP的页面级变量,所以JSP的页面级变量是所有用户的共享变量。

6.1.4JSP脚本元素(Scriptlet)

利用页面级变量被所有用户共享的特性,实现一个简单的网上投票实例。[例6-5]网上投票,有三位候选人,对用户投票进行统计,并显示当前投票的结果。“投票”程序运行效果图6.1.4JSP脚本元素(Scriptlet)

在这个程序中,定义了一个页面级数组变量vote,每个数组元素表示一个候选人的票数。只要Tomcat服务器不重启,多次打开IE调用这个JSP页面,可以观察到vote数组在连续统计投票结果。6.1.4JSP脚本元素(Scriptlet)

在JSP脚本元素中除了可以嵌入Java代码以外,可以直接输出某个表达式的值到网页的HTML内容中,它的语法格式:<%=expression%>

表达式是在运行时由服务器计算求值,其结果转化成String插入该表达式在JSP页面的相应位置。如果表达式的结果不能转化成String,将产生错误异常。使用表达式,可在JSP页面内显示动态数据内容。在使用表达式时,有以下两点需要注意:

不能用一个分号“;”作为表达式的结束符。

表达式元素可以很复杂,由多个表达式组成。6.1.4JSP脚本元素(Scriptlet)JSP脚本小程序元素是一段有效JSP脚本语言程序段,程序段内容必须符合相应脚本语言的语法规定。它的语法格式:<%JSP脚本小程序元素(Scriptlet)%>

下面这个例子是一个使用Java类Calendar的示例,由于类Calendar需要导入后才能使用,因此需要使用pageimport指令将其导入。[例6-6]创建根据当前系统时间给出适当的问候语的JSP页面程序,保存为程序ex6_6.jsp。6.1.5JSP指令元素

在JSP页面中,可以使用JSP指令指定网页的有关输出方式、引用包、加载文件等相关设置。JSP中的三个指令是page、include和taglib。指令并不会输出任何数据至客户端,且有效范围仅限于使用该指令的JSP网页。指令的语法如下:<%@指令名称

属性1=,属性2=,…%>6.1.5JSP指令元素1、page指令元素

网页指令page用于定义与整个JSP页面相关的属性,对整个页面有效,例如,在前面的例子中频繁使用了page指令语句,如:<%@pagecontentType="text/html;charset=GB2312"%>该语句定义JSP页面的contentType属性为"text/html;charset=GB2312",这样页面就可以显示标准的汉语。<%@pageimport="java.util.*"%>该语句在JSP页面中导入了java.util.*类包。<%@pagelanguage="Java"%>该语句定义了在JSP页面中使用的脚本语言是Java。6.1.5JSP指令元素

在一个JSP页面可以使用多个page指令来指定属性及其值,但除import属性外,其他属性只能使用一次page指令为该属性设置值,即便设置的值相同也不行,例如,在一个JSP页面中出现下面语句是错误的。<%@pagelanguage="Java"%><%@pagelanguage="Java"%>(例:errorPage.jsp,isErrorpage.jsp)6.1.5JSP指令元素使用import属性可以在JSP页面导入多个类包,可以使用多个page指令,也可以在一个page指令中使用“,”为import属性赋多个值,例如在一个JSP页面中引入:java.util.*,java.io.*和java.sql.*3个包,可以写为:<%@pageimport="java.util.*"%><%@pageimport="java.io.*"%><%@pageimport="java.sql.*"%>也可以写为:<%@pageimport="java.util.*,"java.io.*","java.sql.*""%>当JSP引擎将JSP页面编译为Java文件时,在Java文件中会出现以下语句:importjava.util.*importjava.io.*importjava.sql.*6.1.5JSP指令元素属性解释默认值language定义要使用的脚本语言,目前只能为JavaJavaextends使用自定义类指定要扩展的类,只有在必要的时候才能这样做默认可忽略的属性import在程序中导入一个或多个类/包,在同一页面,页面指令的属性只有import可以设置多次JSP默认import属性的值已有:“java.lang.*”,“java.servlet.*”,“java.servlet.jsp*”,“java.servlet.http.*”session指定在一个HTTP(HypertextTransportProtocol,超级文本传输协议)会话中是否有该页面参与,取值为true或falsetruebuffer指定到客户的输出流中的缓存的模式,取值为none/8kb/nkb默认的buffer值不小于8KBautoFlash设置缓冲区填满时是否进行缓冲自动刷新,值为false时,运行时会出现缓存溢出异常报错trueisThreadSafe设置JSP页面是否支持多线程,值为false时限制每次只能有一个用户访问该页面trueinfo为JSP页面准备一个字符串,该字符串可由servlet.getServletInfo()方法获得默认可忽略的属性isErrorPage指定当前页面是否可以作为另一页面的错误处理网页,取值为true/falsefalseerrorPage指定当前网页的出错处理网页的URL默认可忽略的属性contentType指定JSP字符的编码和JSP页面响应的MIME类型,格式为“MIME类型;字符集类型”“text/htmlcharset=ISO-8859-1”6.1.5JSP指令元素常见的MIME类型 超文本标记语言文本 .html,.html text/html

普通文本 .txt text/plain RTF文本 .rtf application/rtf GIF图形 .gif image/gif JPEG图形 .ipeg,.jpg image/jpeg au声音文件 .au audio/basic MIDI音乐文件 mid,.midi audio/midi,audio/x-midi RealAudio音乐文件 .ra,.ram audio/x-pn-realaudio MPEG文件 .mpg,.mpeg video/mpeg AVI文件 .avi video/x-msvideo GZIP文件 .gz application/x-gzip TAR文件 .tar application/x-tar6.1.5JSP指令元素meta的用法

meta是HTML语言中的一个可选的标记项,位于HTML文件的标头部分。在meta标记中定义的文字,在浏览器中并不显示。那么,meta起什么作用呢?一、meta的用法

1、语法:

<metaname="name"content="string">

2、参数解析:

1)name项:常用的选项有keywords,description,author等。

2)http-equiv项:可用于代替name项,常用的选项有creation-date,refresh等。

3)content项:根据name项或http-equiv项的定义来决定此项填写什么样的字符串。6.1.5JSP指令元素举例:<metaname="keywords"content="ChinaTravel,BeijingTravel,ChinaBeijing"><metaname="description"content="introduingSummerPalace,ForbiddenCity,Tiananmen,andsoon,includingmanypictures"><metaname="author"content="BeijingWayXNetSolutionCo.Ltd.">

<metahttp-equiv="Creation-date"content="23-Sept-98,18:28:33GMT">

<metahttp-equiv="refresh"content="10URL="/home.html">

6.1.5JSP指令元素2、include指令元素

文件加载指令include用来指定JSP文件被编译的时候,需要插入的文本或者代码。它只有一个属性file,值为被包含文件的名称。使用include指令的语法为:<%@includefile="被包含的文件名"%>

包含进来的文件要能够被JSP引擎控制和访问,被包含的文件可以是一个HTML文件、一个JSP文件、一个文本文件或者是一个用Java语言写成的代码文件。如果被包含的文件是一个JSP文件,那么它里面的JSP的标记就会被分析,并把它们的执行结果和其他的文本内容一起加入JSP包含文件中。

当把一个文件插入到当前JSP页面合并成一个新的JSP页面,所生成的JSP页面也要符合JSP的语法,例如JSP语法不允许使用page指令对除import外的一个属性多次赋值,如果两个文件同时包含page指令对同一属性进行赋值,就会引起错误。6.1.5JSP指令元素<!--include.jsp--><html><head><title>AnIncludeTest</title></head><bodybgcolor="white"><fontcolor="blue">Thecurrentdateandtimeare<%@includefile="date.jsp"%></font></body></html>6.1.5JSP指令元素<!--date.jsp--><%@pageimport="java.util.*"%><%=(newjava.util.Date()).toLocaleString()%>6.1.5JSP指令元素3、taglib指令元素

标签数据库指令taglib用于定义一个标签库及自定义标签的前缀,语法为:<%@tagliburi="扩展标签的URI"prefix="扩展标签的前缀"%>例如:定义标签库pe4j-taglib和前缀pe4j的代码为:<%@tagliburi="/pe4j-taglib"prefix="pe4j"%>这样,在HTML中可以使用标签库pe4j-tablib中定义的标签,例如:<pe4j:literalkey="Corp"subsystem="SYS"/><pe4j:CORPCOMBONAME="CorpCombo"SELECTEDVALUE="<%=CorpID%>"ONCHANGE="fnc_OnCorpChange()"/>6.2JSP标准操作元素

动作控制标签是一种特殊的标签,用于执行一些标准常用的JSP网页动作,例如将网页转向、使用JavaBean、设置JavaBean的属性等。JSP规范中包含一些标准的动作控制标签,它们必须通过适当的JSP引擎来实现,在JSP引擎的任何版本中或者是Web服务器中总是可用的。新的动作控制标签可以通过<jsp:taglib>指令来引入。标准的动作控制标签可以辅助那些定制的类型实现特定的JSP页面。在JSP中标准标签有:<jsp:include>,<jsp:forward>,<jsp:plugin>,<jsp:param>,<jsp:useBean>,<jsp:setProperty>和<jsp:getProperty>。6.2JSP标准操作元素6.2.1include操作6.2.2forward操作6.2.3plugin操作6.2.4JavaBean操作6.2.1include操作<jsp:include>标签可以在即将生成的页面上动态地插入一些文件。<jsp:include>动作的语法格式如下:<jsp:includepage=URLflush="TRue"><jsp:paramNAME="参数名称1"VALUE="值1"/><jsp:paramNAME="参数名称2"VALUE="值2"/>……</jsp:include>page属性:指定需要包含进页面的文件的URL地址。使用<jsp:param>可以传递参数到要插入的JSP网页,参数设置可以省略,省略时还可以使用如下简单格式:<jsp:includepage=URLflush="true"/>6.2.2forward操作<jsp:forward>动作是将浏览器显示的网页转到另一个HTML网页或者JSP网页。一个<jsp:forward>有效地终止了当前页面的运行,JSP引擎不会再处理这个页面中剩下的任何内容,缓冲区被清空。<jsp:forward>的语法格式如下,参数传递可省略:<jsp:forwardpage=URL><jsp:paramNAME="参数名称1"VALUE="值1"/><jsp:paramNAME="参数名称2"VALUE="值2"/></jsp:forward>若使用<jsp:param>将参数传递给JSP网页时,在JSP网页中将可通过如下语法取得传入的参数。request.getParameter("参数名称");6.2.3plugin操作<jsp:plugin>动作标签将根据浏览器的版本被替换成HTML标签<object>或<Applet>元素(<applet>在HTML3.2中定义,<object>在HTML4.0中定义)。作用是确保一个Java插件软件可用,可以在浏览器中播放或显示一个对象(典型的就是applet和bean),一般来说,<jsp:plugin>元素会指定对象是applet还是bean,同样也会指定class的名字及位置,另外还会指定从哪里下载这个Java插件。6.2.3plugin操作<jsp:plugin>元素的语法格式如下:<jsp:plugin TYPE="bean|applet" code="保存类的文件名称" codebase="类路径" [NAME="对象名称"] [archive="相关文件路径"] [ALIGN="对齐方式"] [height="高度"] [width="宽度"] [hspace="水平间距"] [vspace="垂直间距"] [jrevesion="Java环境版本"] [nspluginurl="供NC使用的plugin加载位置"] [iepluginurl="供IE使用的plugin加载位置"]> <jsp:params> <jsp:paramNAME="参数名称1"VALUE="值1"/> <jsp:paramNAME="参数名称2"VALUE="值2"/> …… </jsp:params><jsp:fallback>错误信息</jsp:fallback></jsp:plugin>6.2.3plugin操作<jsp:params>元素在启动的时候把参数名和值传送到applet或者是bean中。如果插件没有启动,<jsp:fallback>元素就为用户提供一个信息。如果插件已经启动,但是applet或者bean还没有启动,那么插件通常会弹出一个窗口,向用户说明产生的错误。6.2.4JavaBean操作useBean标签将用于定义JSP网页中要使用的JavaBean对象。这是一个非常有用的功能,它可以使用可重用的Java类而不需牺牲性能。与useBean操作配合使用的还有<jsp:setProperty>和<jsp:getProperty>标签。<jsp:setProperty>标签是用来在JSP网页中,设置所使用JavaBean对象的属性。在使用<jsp:setProperty>之前必须使用<jsp:useBean>标记对Bean进行声明。<jsp:getProperty>标签可将JavaBean的属性值转化为一个字符串,置入内置的输出对象,然后将之输出显示。6.3JSP内置对象JSP提供JSP内部可访问的内置对象,这种对象由实现类的容器提供,可直接使用,不需要再进行声明或实例化,而且所有的内置对象只能在Scriptlet或表达式中才可使用。JSP中常用的内置对象有:request、response、out、application、session、config、exception、page和pageContext。调用内置对象的方法可以完成服务器端的绝大多数例行操作。6.3JSP内置对象6.3.1request对象6.3.2response对象6.3.3out对象6.3.4application对象6.3.5session对象6.3.1request对象request对象是javax.servlet.ServletRequest的一个实例,来自客户端的请求信息经过JSP处理后,由request对象进行封装,在程序中调用request对象的方法就可以获取封装的客户端信息。request对象使用方法getParameter获取客户端数据,格式如下:request.getParameter(Strings)6.3.1request对象取得客户端请求的对象getCookies()

返回客户端的Cookie对象,结果是一个Cookie数组。(例:cookietest.jsp,cookietest2.jsp)

6.3.1request对象2.setAttribute(Stringname,java.lang.Objecto)

设定名字为name的request参数的值,该值由Object类型的o指定。3.getAttribute(Stringname)

返回name指定的属性值。

RRD11Beanbean=newRRD11Bean();request.setAttribute("BEAN",bean);RRD11Beanbean=(RRD11Bean)request.getAttribute("BEAN");6.3.1request对象4.getParameter(Stringname)

获得客户端传送给服务器端的参数值。

Stringp_name=request.getParameter(“username”)5.getParameterName()

获得客户端传送给服务器端的所有参数名字,结果集是一个Enumeration的实例。6.getParameterValues(Stringname)

获得指定参数所有值。6.3.2response对象response对象是javax.servlet.ServletResponse类的一个实例,它的作用与request对象正好相反,它封装执行JSP程序产生的响应,并被发送到客户端。response对象可以使用由其父类ServletResponse所提供的方法。6.3.2response对象1.重定向sendRedirect方法可以将客户端浏览器重定向到新的Web页面。使用sendRedirect可以根据用户的不同情况而定位到不同的页面上去,重定向语句之后的代码将不再执行。例如,下面语句就是停止当前网页执行,转向执行程序文件example.jsp。response.sendRedirect("example.jsp")6.3.2response对象sendRedirect方法和<jsp:forward>的区别:(1)当使用<jsp:forward>操作重定向到另一个页面,可以通过<jsp:param>传递参数到新的网页,新的网页使用request对象的getParameter()方法可以读取参数的值。而使用response对象的sendRedirect()方法不需要直接编码URL,就可以实现传递参数。例如下面语句在重定向时传递了一个名为p值为234的参数,同样使用request对象访问参数p。response.sendRedirect("example.jsp?p=234");(2)当使用<jsp:forward>操作,两个页面之间可以通过request对象分享数据,而response对象的sendRedirect()方法不支持这种数据共享。6.3.2response对象2.设置ContentType属性page指令只能静态地设置ContentType属性,用来决定响应的MIME值,使用response对象可以在程序中根据不同的需要动态地设置ContentType属性。6.3.3out对象out对象是javax.servlet.JspWriter类的一个实例。在JSP程序中,向客户端输出内容时经常会用到它,在前面的程序示例中,已接触过很多使用out对象进行输入的语句。out对象提供两种方法向客户端输出内容:println()和print()。它们的区别在于,在服务器执行JSP程序产生的回应网页中,println()产生的输出内容是换行的,而print()是产生的输出内容是不换行的。但要注意,在HTML代码中,并不以代码换行作为显示时的换行标志,显示以<BR>为换行标签。out对象支持的输出类型有:boolean,char,double,float,int,long,Object和String。6.3.3out对象向客户端输出数据,out的基类是JspWrite.print()println()newLine():输出一个换行符号。flush():输出缓冲区里的数据close():关闭输出流clearBuffer():清除缓冲区里的数据,并且把数据写到客户端。Clear():清除缓冲区里的数据,但不把数据写到客户端。

6.3.3out对象getBufferSize():获得缓冲区的大小,缓冲区的大小可以用<%@pagebuffer=“size”%>设置。getRemaining():获得缓冲区没有使用的空间的大小。isAutoFlush():返回是否AutoFlush的布尔值。可以用

<%@pageAutoFlush=“true/false”%>设置。6.3.4application对象

网络程序是个分布式程序,很多用户在不同的地方执行并操作同一个程序,这时程序要能够实时地反映各种改变。例如,在一个聊天室程序中,一个聊天室的在线用户名单、用户在聊天室的发言对于每一个用户都是相同的,而且能够实时更新,这些信息为所有网络用户所共享。又例如,在一些网站的首页都有一个计数器,记录访问过网站的人数,这个计数变量同样是为所有用户所共享的。6.3.4application对象1.application对象简介application对象则是以服务器为主角,服务器的启动和关闭决定了application的生命周期。服务器启动一个服务,然后创建此服务下的Web应用程序,同时为此Web应用程序新建application对象,它将一直存在,直到服务器关闭,所以application对象开始于任一个JSP网页被开始执行时,终止于服务器的关闭。当一个用户在客户端访问JSP页面时,JSP引擎会为该用户启动一个线程,分配这个application对象,每一个应用程序的所有线程将共享这个application对象,也就是说,所有的用户将共享这个application对象。6.3.4application对象2.application对象的常用方法application是javax.servlet.ServletContext类的一个实例,它可以使用类ServerContext中的方法.(1)setAttribute方法

该方法是为应用程序级变量赋值,若在application对象中还不存在这个变量,会添加这个变量。例如为应用程序级变量maxnum赋值为25。application.setAttribute("maxnum",25);6.3.4application对象2.application对象的常用方法(2)getAttribute方法

该方法是获取application对象中某个应用程序级变量的值,该方法返回一个Object类型的数据,使用时要根据应用程序级变量的数据类型进行类型转换。例如,读取maxnum值的语句为:Integernum=(Integer)application.getAttribute("maxnum");6.3.4application对象

应用程序级变量只能是一个对象,而不能是基本数据类型变量如int、double。基本数据类型的变量要首先转换成对应的类,如int转换成Integer。如果对Java不熟悉,也可以先将数字转换成字符串,再保存到application对象,当从application对象中取得数据时,再转换成数值。下面的语句中,第一句表示将把num变量(类型为整数)转换为字符串,再保存进application对象;第二句表示把从application对象中取得数据再转换成整数。例如:application.setAttribute("Num",String.valueOf(num1));intnum2=Integer.parseInt(application.getAttribute("Num").toString());由于application对象是为所有用户所共享的,所以操作应用程序级变量时,要考虑同步处理。6.3.5session对象

很多商务网站必须能够在用户访问的过程中记住用户,为用户提供个性化服务,例如在商城购物,站点应该允许顾客同时购买多个商品,反复在不同的位置挑选后,再一次性付款,在顾客购物的过程中,网站需要记录顾客的个人信息和已选购的商品。这就需要会话级变量,记录用户在一段时间内的逻辑上相关联的不同请求。6.3.5session对象1.会话和会话idHTTP协议是一个无状态协议,一个请求完成后,客户端与服务器端的连接是关闭的,所以一个请求与另一个请求之间是没有关联的。一个客户在访问一个服务器时,可能会在同一个应用程序的多个页面间反复连接,或刷新同一个页面,服务器端不能自动判断这一个请求和另一个请求是不是属于同一个客户,所以在应用程序中需要创建会话(session)记录,记录一个客户的有关连接信息。从一个客户打开浏览器并连接到服务器开始,一直到这个客户关闭浏览器视为一个会话。JSP提供了内置对象session帮助服务器识别一个客户的连接。6.3.5session对象1.会话和会话id

当一个客户通过浏览器与服务器建立连接发出第一次请求时,服务器会为这个客户分配一个session对象,并为这个session对象分配了一个String类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论