《《JSP内置对象》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《JSP内置对象》PPT课件.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、内内 置置 对对 象象 有些成员变量不用声明就可以在JSP页面的脚本(Java程序片和Java表达式)中使用,这就是所谓的内置对象。主要的内置对象有:resquestresponsesessionoutApplicationpage(1)requestrequest包含了来自浏览器请求的相关信息,并且提供了获取Cookie、header和请求相关的参数值等数据的有效方法。request对象封装了用户提交的信息,通过调用该对象相应的方法可以获取用户提交的信息。(2)responseresponse主要将JSP处理后的结果传回到客户端(如Cookie、header信息等),它提供了将数据送回浏览器
2、的方法。(3)outout对象用于向浏览器回送输出结果。(4)pageContextpageContext对象存储当前JSP页面相关信息,如属性、内建对象等。(5)sessionsession对象用于存储每一个用户的状态信息,以便跟踪用户的会话状态,直到客户端与服务器断开连接为止,可用来识别每个用户。(6)applicationapplicaton负责提供应用程序在服务器中运行的全局信息,当应用程序在服务器中启动时该对象就一直存在,直到服务器关闭为止,所有客户共享这个内置的application对象。applicaton可用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。
3、1.1request对象内置对象request对象是实现了ServletRequest接口类的一个实例.当客户端请求一个JSP页面时,JSP容器会将客户端的请求信息包装在这个request对象中。请求信息的内容包括请求的头信息(Header)、系统信息(比如:编码方式)、请求的方式(比如:GET或POST)、请求的参数名称和参数值等信息。获取客户提交的信息request对象代表的是来自客户端的请求,例如:我们在FORM表单中填写的信息等,是最常用的对象。获取查询字符串中的变量值getParameter()getParameterValues()复选框用getParameterNames()通过
4、调用这几个方法来获取请求对象中所包含的参数的值。request对象示例 姓名姓名 request对象示例(Hello_req.jsp)你好,今天是号,星期request对象示例(输出结果)你好你好,独孤求败独孤求败,今天是今天是 9号,星期号,星期1 example4_1.jsp调用Computer.tag文件负责计算平方根com:Computernumber=/Compter.tag=0)doubler=Math.sqrt(n);out.print(+n+的平方根:);out.print(+r);elseout.print(+请输入一个正数);catch(NumberFormatExcept
5、ione)out.print(+请输入数字字符);%得到Form表单的信息一通常我们用得最多的就是客户端请求的参数名称和参数值信息。得到某参数值的语法为:request.getParameter(”param1“)也可以通过request对象的getParameterNames()方法得到客户端传递过来的所有参数名字。如:Enumerationparams=request.getParameterNames();得到Form表单的信息二案例名称:案例名称:HTML表单表单程序名称:程序名称:4-14.html 姓名:姓名:密码:密码:INPUT TYPE=SUBMIT VALUE=案例2-2:
6、表单信息的提交与获取(1)input.jsp请输入下列信息:输入您的姓名:选择性别:男女选择您喜欢的歌手:张歌手李歌手刘歌手王歌手(2)receive.jsp%StringyourName=request.getParameter(name);/获取text提交的值StringyourSex=request.getParameter(R);/获取radio提交的值StringsecretMess=request.getParameter(secret);/获取hidden提交的值StringpersonName=request.getParameterValues(superstar);/获取
7、checkbox提交的值out.println(您的姓名:+yourName+);out.println(您的性别:+yourSex+);out.println(您喜欢的歌手:);if(personName=null)out.print(一个都不喜欢);elsefor(intk=0;kpersonName.length;k+)out.println(+personNamek);out.println(hidden提交的值:+secretMess);%处理汉字信息当利用request.getParameter得到Form中元素的时候,默认的情况字符编码为ISO-8859-1,这种编码不能正确的显
8、示汉字。目前有两种解决方法,一种是在执行操作之前,设置page指令另一种方法是转换字符编码另一种方法是转换字符编码example4_2.jspshowMessage1.jsp获取文本框提交的信息:获取按钮的名字:showMessage2.jsp获取文本框提交的信息:获取按钮的名字:1.1.3request对象的常用方法getProtocol():获取请求使用的通信协议,如http/1.1等。getServletPath():获取请求的JSP页面所在的目录。getContentLength():获取HTTP请求的长度。getMethod():获取表单提交信息的方式,如POST或GET。getHe
9、ader(Strings):获取请求中头的值。getHeaderNames():获取头名字的一个枚举。getHeaders(Strings):获取头的全部值的一个枚举。1.1.3request对象的常用方法getRemoteAddr():获取客户的IP地址。getRemoteHost():获取客户机的名称(如果获取不到,就获取IP地址)。getServerName():获取服务器的名称。getServerPort():获取服务器的端口号。getParameterNames():获取表单提交的信息体部分中name参数值的一个枚举example4_3.jsp客户使用的协议是:用户请求的页面所在位置
10、:客户提交信息的方式:获取HTTP头文件中accept的值(浏览器支持的MIME类型):获取客户端提交的所有参数的名字:获取头名字的一个枚举:获取头文件中指定头名字的全部值的一个枚举:文本框text提交的信息:1.2response对象response对象是一个类的子类的对象.response对象对客户的请求做出响应,向客户端发送数据.改变contentType属性的值当请求一个JSP页面的时候,如果该页面用page指令设置页面的contentType属性的值是text/html,那么服务器将把静态页面部分发送给客户端。也可以设置为其他一些相应类型,如:text/plain(文本文件)、app
11、lication/x-msexcel(Excel文件)和application/msword(Word文件)等。显示为Word文档案例名称:显示为案例名称:显示为Word文档文档程序名称:程序名称:4-11.jspresponse对象setContentType方法将当前页面保存为word文档吗example4_4.jsp在学习response对象的setContentType方法将当前页面用MS-Word显示吗?将当前页面用MS-Powerpoint显示吗?1.2.2设置响应HTTP头可以利用JSP动态改变客户端的响应,使用的语法是“response.setHeader()”,比如让客户端自
12、动每隔5秒刷新一次。4-5.jsp现在的时间是:重定向对于response对象,最常用到的是sendRedirect()方法,可以使用这个方法将当前客户端的请求转到其它页面去。相应的代码格式为:response.sendRedirect(URL地址);与指令的最大区别就是:只能使用在本网站内跳转,但我可以使用response.sendRedirect跳转到任何一个地址的页面example4_6.jsp填写姓名:form.jsp1.2.4状态行1yy:主要是实验性质的2yy:表明请求成功3yy:表明在请求满足之前应采取进一步的行动4yy:当浏览器无法满足请求时,返回该状态码5yy:表示服务器出现
13、问题具体如表4.1所示。1.2.4状态行example4_7.jsp点击下面的超链接:welcome1.jsp欢迎你吗?welcome2.jsp欢迎你吗?welcome3.jsp欢迎你吗?welcome1.jspwelcome2.jspwelcome3.jsp1.3 session对象 内置对象session由Tomcat服务器负责创建,session是实现了HttpSession接口类的一个实例。它表示当前的用户会话信息。在session中保存的信息,当前用户连接的所有页面中都是可以被访问到。可以使用Session对象存储用户登录网站时候的信息。当用户在页面之间跳转时,存储在Session对
14、象中的变量不会被清除。1.3.1session对象的IDsession对象被分配了一个String类型的ID,Tomcat服务器将ID发送到客户端,存放在客户的Cookie中。同一用户在同一Web服务目录中的各个页面的session是相同的.不同用户的session对象互不相同,具有不同的ID。对session的理解案例名称:使用案例名称:使用ID属性属性程序名称:程序名称:4-22.jsp你的sessionID:first.jsp%Stringid=session.getId();out.println(您的session对象的ID是:+id);%输入你的姓名连接到second.jspsec
15、ond.jsp我是second.jsp页面%Stringid=session.getId();out.println(您的session对象的ID是:+id);%点击超链接,连接到third.jsp的页面。欢迎去third.jsp页面!third.jsp我是third.jsp页面%Stringid=session.getId();out.println(您的session对象的ID是:+id);%点击超链接,连接到first.jsp的页面。欢迎去first.jsp!session对象的常用方法session对象表示目前用户的会话状态,用来识别每个用户,与之相关的常用方法如下。(1)Object
16、 getAttribute(String name)获取与指定名字相关联的session属性值。(2)Enumeration getAttributeNames()取得session内所有属性的集合。(3)long getCreationTime()获取session的创建时间,最小单位为千分之一秒。(4)String getId()获取session标识。此方法返回惟一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当做键名用。(5)long getLastAccessedTime()获取与当前sess
17、ion相关的客户端最后一次访问的时间,由1970-01-01算起,单位为毫秒。(6)int getMaxInactiveInterval(int interval)获取总时间,以秒为单位,表示session的有效时间。1为永不过期。(7)void invalidate()销毁session对象。(8)boolean isNew()判断一个session是否由服务器产生,但是客户端并没有使用。(9)void setAttribute(String name,String value)设置指定名称的session属性值,会替换掉任何以前同一用户的同名值。(10)void setMaxInactiv
18、eInterval(int interval)设置session的有效期。(11)void removeAttribute(String name)移除指定名称的session属性。1.3.2session对象存储数据(1)publicvoidsetAttribute(Stringkey,Objectobj)session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被清除。(2)publicObjectgetAttibute(Stringkey)获取session对象含有的关
19、键字是key的对象。由于任何对象都可以添加到session对象中,因此用该方法取回对象时,应强制转化为原来的类型。(3)publicEnumerationgetAttributeNames()session对象调用该方法产生一个枚举对象,该枚举对象使用nextElemets()遍历session中的各个对象所对应的关键字。(4)publicvoidremoveAttribute(Stringname)session对象调用该方法移掉关键字key对应的对象。main.jsp欢迎来到本页面,请输入您的姓名0)%点击超链接,连接到food.jsp的页面,去采购食品。欢迎去食品柜台!food.jsp点
20、击超链接,连接到main.jsp的页面,去修改姓名。欢迎去main.jsp!这里是食品柜台,请选择您要购买的食品:香肠苹果酱油饮料%StringfoodName=request.getParameterValues(choice);if(foodName!=null)for(intk=0;k点击超链接,连接到count.jsp的页面,去查看购物车中的商品。欢迎去count.jsp!count.jsp这里是结帐处,您的姓名以及选择的商品:%StringpersonName=(String)session.getAttribute(customerName);out.println(您的姓名:+p
21、ersonName);EnumerationenumGoods=session.getAttributeNames();out.println(购物车中的商品:);while(enumGoods.hasMoreElements()Stringkey=(String)enumGoods.nextElement();Stringgoods=(String)session.getAttribute(key);if(!(goods.equals(personName)out.println(goods+);%点击超链接,连接到food.jsp的页面,购买食品。欢迎去food.jsp!点击超链接,连接到
22、main.jsp的页面,去修改姓名。欢迎去main.jsp!简易session版购物车利用session保存用户选购的商品信息,本购物车程序包含三个程序:(1)buy1.jsp:购物网页一。:购物网页一。(2)buy2.jsp:购物网页二。:购物网页二。(3)display.jsp:查看购物车程序。:查看购物车程序。简易session版购物车案例名称:购物网页一案例名称:购物网页一程序名称:程序名称:buy1.jsp案例名称:购物网页二案例名称:购物网页二程序名称:程序名称:buy2.jsp案例名称:显示购物车程序案例名称:显示购物车程序程序名称:程序名称:display.jsp1.3.3 s
23、ession对象的生存周期一个用户在某个一个用户在某个WEB服务目录的服务目录的session对象的生存期限对象的生存期限依赖于客户是否关闭浏览器。依赖于客户是否关闭浏览器。如果用户关闭浏览器,那么用户如果用户关闭浏览器,那么用户session会消失,如果长会消失,如果长时间不关闭浏览器,用户的时间不关闭浏览器,用户的session也可能消失。也可能消失。这是因为这是因为Tomcat服务器允许的最长的服务器允许的最长的”发呆发呆”状态时间状态时间为为30分钟。分钟。可以修改可以修改Tomcat服务器下的服务器下的web.xml重新重新设置设置“发呆发呆”时间。时间。30example4_10.
24、jsp%session.setMaxInactiveInterval(20);booleanboo=session.isNew();out.println(如果你第一次访问当前web服务目录,您的会话是新的);out.println(如果你不是首次访问当前web服务目录,您的会话不是新的);out.println(会话是新的吗?:+boo);out.println(“欢迎来到本页面,您的session允许的最长发呆时间为+session.getMaxInactiveInterval()+秒);out.println(您的session的创建时间是+newDate(session.getCrea
25、tionTime();out.println(您的session的Id是+session.getId();LonglastTime=(Long)session.getAttribute(lastTime);if(lastTime=null)longn=session.getLastAccessedTime();session.setAttribute(lastTime,newLong(n);elselongm=session.getLastAccessedTime();longn=(Long)session.getAttribute(lastTime).longValue();out.prin
26、tln(您的发呆时间大约是+(m-n)+毫秒,大约+(m-n)/1000+秒);session.setAttribute(lastTime,newLong(m);%1.3.4session对象与URL重写 session对象能和客户建立起一一对应的关系依赖于对象能和客户建立起一一对应的关系依赖于客户的浏览器是否支持客户的浏览器是否支持Cookie。如果不支持,则客户在不同网页之间的如果不支持,则客户在不同网页之间的session可能可能是不同的。是不同的。如果浏览器不支持如果浏览器不支持Cookie,可以通过,可以通过URL重写来实重写来实现现session对象的唯一性。对象的唯一性。如:如:
27、String str=response.encodeRedirectURL(“jerry.jsp”);first.jsp%Stringid=session.getId();out.println(您的session对象的ID是:+id);Stringstr=response.encodeRedirectURL(tom/second.jsp);%输入你的姓名连接到second.jspFORMaction=method=postname=formsecond.jsp我是second.jsp页面%Stringid=session.getId();out.println(您的session对象的ID是
28、:+id);Stringstr=response.encodeRedirectURL(/chaper4/jerry/third.jsp);%点击超链接,连接到third.jsp的页面。AHREF=欢迎去third.jsp页面!third.jsp我是third.jsp页面%Stringid=session.getId();out.println(您的session对象的ID是:+id);Stringstr=response.encodeRedirectURL(/chaper4/first.jsp);%点击超链接,连接到first.jsp的页面。AHREF=欢迎去first.jsp!1.3.5记数
29、器helloOne.jsp Welcome欢迎您访问本站您是第个访问本网站的客户。欢迎去helloTwo.jsp参观helloTwo.jspWelcome欢迎您访问本站欢迎去helloOne.jsp参观文件:count.tag您是第个访问本网站的客户。1.4out对象out对象是类的一个子类的对象,它的作用是把信息发送到客户端的浏览器中。在out对象中,最常用的方法就是print()println()在使用print()或println()方法时,由于客户端是浏览器,因此向客户端输出时,可以使用HTML中的一些标记。例如:out.println(”Hello,JSP“);example4_13
30、.jsp%inta=2200;longb=3456;booleanc=true;out.println(a);out.println(b);out.print();out.println(c);%以下是一个表格%out.print();out.println();out.println();out.println(+姓名+);out.println(+性别+);out.println(+出生日期+);out.println();out.println();out.println(+张三+);out.println(+男+);out.println(+1988年5月+);out.println(
31、);out.println();out.println(+李四+);out.println(+男+);out.println(+1987年10月+);out.println();out.println();out.print();%1.4out对象(1)voidclear()清除输出缓冲区的内容,但是不输出到客户端。(2)voidclearBuffer()清除输出缓冲区的内容,并输出到客户端。(3)voidclose()关闭输出流,清除所有内容。在调用close()方法后,out对象输出的流就不会发送到客户端。(4)voidflush()输出缓冲区里面的数据,然后清空缓冲区。与clearBuf
32、fer()不同的是,flush()方法将在屏幕上输出数据后再清空缓冲区。(5)intgetBufferSize()获取以KB为单位的目前缓冲区的大小。(6)intgetRemaining()获取以KB为单位的缓冲区中空闲空间的大小。(7)voidnewLine()输出一个换行符。(8)voidprint(data)将指定类型的数据输出到HTTP流中,不换行。print方法可用于多种类型的数据,包括:boolean、char、char、double、float、int、long、Object、String等。(9)voidprintln(data)与print相似,println也用于将指定类型
33、的数据输出到HTTP流中,与print不同的是它将在结尾多输出一个换行符。(10)booleanisAutoFlush()确定是否自动刷新缓冲区,结果取决于page指令的AutoFlush属性。下面是有关out对象的一个简单示例。使用out对象案例名称:使用案例名称:使用out对象对象程序名称:程序名称:4-09.jsp我们已经知道,不同的用户session对象互不相同。但有时用户之间可能需要共享一个对象,这时就可用application对象。站点所有的用户公用一个application对象,当站点服务器开启的时候,application就被创建,直到网站关闭。利用application这一特
34、性,可以方便地创建聊天室和网站计数器等常用站点应用程序。1.5 application对象 1.5.1applicaton对象的常用方法application对象的常用方法(1)publicvoidsetAttribute(Stringkey,Objectobj)application对象可以调用该方法将参数Object指定的对象obj添加到application对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加对象被清除。(2)publicvoidremoveAttribue(Stringkey)从当前application对象中删除关键字是key的对象。
35、(3)public Enumeration getAttributeNames()application对象调用该方法产生一个枚举对象,该枚对象调用该方法产生一个枚举对象,该枚举对象使用举对象使用nextElemets()遍历遍历application中的各个对象所中的各个对象所对应的关键字。对应的关键字。(4)public Object getAttibue(String key)获取获取application对象含有的关键字是对象含有的关键字是key的对象。由的对象。由于任何对象都可以添加到于任何对象都可以添加到application对象中,因此用该方对象中,因此用该方法取回对象时,应强制
36、转化为原来的类型。法取回对象时,应强制转化为原来的类型。1.5.2用applicaton对象制作留言板submit.jsp输入您的名字:输入您的留言标题:输入您的留言:messagePane.jsp返回查看留言版showMessage.jsp%Vectorv=(Vector)application.getAttribute(Mess);out.print();out.print();out.print(+留言者姓名+);out.print(+留言标题+);out.print(+留言时间+);out.print(+留言内容+);out.print();for(inti=0;iv.size();i
37、+)out.print();Stringmessage=(String)v.elementAt(i);StringTokenizerfenxi=newStringTokenizer(message,#);out.print();intnumber=fenxi.countTokens();for(intk=0;knumber;k+)Stringstr=fenxi.nextToken();if(knumber-1)out.print(+str+);elseout.print(+str+“);out.print();out.print();%自定义属性案例名称:自定义属性案例名称:自定义属性程序名称
38、:程序名称:4-19.jsp自定义属性案例名称:自定义属性案例名称:自定义属性程序名称:程序名称:4-20.jsp使用session的自定义属性案例名称:使用案例名称:使用session的自定义属性的自定义属性程序名称:程序名称:4-23.jsp下一页使用session的自定义属性案例名称:使用案例名称:使用session的自定义属性的自定义属性程序名称:程序名称:4-24.jsp下一页网页计数器网页计数器是application对象的又一个用途,因为application是所有的用户所共有的,所以可以存储计数器的值,当有新用户访问网页时自动增加计数器的值。案例名称:网页计数器版本一案例名称:
39、网页计数器版本一程序名称:程序名称:CountV1.jsp案例名称:网页计数器版本二案例名称:网页计数器版本二程序名称:程序名称:CountV2.aspapplication对象与session对象的异同application对象与session对象都可以实现Web应用中信息的存储,但两者具有不同的作用域,session对象是针对用户的,进入网站时,每一个用户都会分配到一个单独的session对象,即使该用户设置了与其他用户相同名称的session属性,也不会发生冲突。与session不同的是,所有用户的application对象都是同一个,即所有用户共享这个内置的application对象,每一个用户都可以从各自浏览的JSP页面访问这个对象。