收藏 分销(赏)

第4章-JSP内置对象(第2版).ppt

上传人:精*** 文档编号:10296369 上传时间:2025-05-19 格式:PPT 页数:53 大小:1.54MB
下载 相关 举报
第4章-JSP内置对象(第2版).ppt_第1页
第1页 / 共53页
第4章-JSP内置对象(第2版).ppt_第2页
第2页 / 共53页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,J,s,P,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,主要内容,request,对象,response,对象,session,对象,out,对象,application,对象,难点,使用,Tag,文件处理数据,理解,session,对象,使用,session,对象存储数据,关键实践,使用,request,对象,使用,response,对象,使用,session,对象,第,4,章导读,2,第,4,章,JSP,内置对象,有些成员变量不用声明就可以在,JSP,页面的脚本(,Java,程序片和,Java,表达式)中使用,这就是所谓的内置对象。,内置对象有:,resquest,、,response,、,session,、,out,、,application,。,Web服务器,网页,响应,Response,请求,Request,Web浏览器,HTTP,协议中两个重要对象,6,例,1,例,1,中,,example4_1.jsp,页面通过表单向,tree.jsp,页面提交信息,“,I am a student”,,,tree.jsp,页面通过,request,对象获取表单提交的信息,包括,text,的值以及按钮的值,,example4_1.jsp,页面和,tree.jsp,页面的效果如图,4.1,(,a,)和,4.1,(,b,)。,7,例,2,例,2,中,,example4_2.jsp,页面通过表单向自己提交一个正数,,example4_2.jsp,页面获取表单提交的正数,并计算这个数的平方根。表单中的,action,是所请求的页面,如果是当前页面,可以用双引号:,代替当前页面,注意双引号中不能含有空格。,example4_2.jsp,页面的效果如图,4.2,。,8,4.1.2,处理汉字信息,当用,request,对象,获取用户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理。首先,将获取的字符串用,ISO-8859-1,进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象即可,.,如下所示:,String str=request.getParameter(girl);,byte b=str.getBytes(ISO-8859-1);,str=new String(b);,例,3,9,例,3,例,3,对例子,1,按上述办法做了改动,并将按钮上的字变成汉字,文本框提交的默认信息是:,“,苹果:,apple,,,12,斤,,5$,”,。,example4_3.jsp,获取文本框提交的信息:,获取按钮的名字:,10,4.1.3,常用方法举例,可以用内置对象,request,对象来获取请求所提交的各类信息,,request,对象的常用方法如下:,getProtocol(),:,获取请求使用的通信协议,如,http/1.1,等。,getServletPath(),:获取请求的,JSP,页面所在的目录。,getContentLength(),:获取,HTTP,请求的长度。,getMethod(),:获取表单提交信息的方式,如,POST,或,GET,。,getHeader(String s),:,获取请求中头的值。,getHeaderNames(),:获取头名字的一个枚举。,getHeaders(String s),:,获取头的全部值的一个枚举。,getRemoteAddr(),:获取客户的,IP,地址。,getRemoteHost(),:,获取客户机的名称,(,如果获取不到,就获取,IP,地址,).,getServerName(),:,获取服务器的名称。,getServerPort(),:,获取服务器的端口号。,getParameterNames(),:,获取表单提交的信息体部分中,name,参数值的一个枚举,.,例,4-4,11,例,4,例,4,使用了,request,对象的一些常用方法,。,example4_4.jsp,(效果如图,4.3,(,1,),mess.jsp,(效果如图,4.3,(,2,),.,12,4.1.4,使用,Tag,文件处理有关数据,JSP,页面使用,request,对象获取用户提交的数据,然后使用,Tag,标记调用,Tag,文件,并将必要的数据传递给,Tag,文件。,Tag,文件负责处理数据,根据需要将处理结果显示给用户或返回给调用它的,JSP,页面。,例,4-5,example4_5.jsp,用户提交三边,get.jsp,调用,tag,并传递三边,Computer.tag,计算面积并返回结果,13,例,5,例,5,中,用户通过,example4_5.jsp,中的表单将三角形的三边的长度提交给,get.jsp,,,get.jsp,使用,Tag,标记调用,Tag,文件,Computer.tag,,并将三角形三边的长度传递给,Computer.tag,,,Computer.tag,文件负责计算三角形的面积,并将计算结果返回给,get.jsp,页面。,example4_5.jsp,和,get.jsp,的效果如图,4.4,(,1,),,4.4,(,2,),.,14,4.1.5,处理,HTML,标记,JSP,页面可以含有,HTML,标记,当用户通过浏览器请求一个,JSP,页面时,,Tomcat,服务器将该,JSP,页面中的,HTML,标记直接发送到用户的浏览器,由用户的浏览器负责执行这些,HTML,标记。而,JSP,页面中的变量声明、程序片以及表达式由,Tomcat,服务器处理后,再将有关的结果用文本方式发送到用户端的浏览器。,HTML,是,Hypertext Marked Language,的缩写,即超文本标记语言。,15,4.1.5,处理,HTML,标记,_,标记,标记被习惯地称作表单,用户经常需要使用表单提交数据。,表单的一般格式是:,数据提交手段部分,其中,是表单标记,其中的,method,属性取值,get,或,post,。,提交手段包括:通过文本框、列表、文本区等,例如:,16,4.1.5,处理,HTML,标记,_,标记,表单标记,将,标记作为子标记来指定表单中数据的输入方式以及表单的提交键。,标记中的,type,属性可以指定输入方式的,GUI,对象,,name,属性用来指定这个,GUI,对象的名称。,标记的基本格式:,服务器通过属性,name,指定的名字来获取,“,输入对象的,GUI,类型,”,中提交的数据。,“,输入对象的,GUI,类型,”,可以是:,text,(文本框)、,checkbox,(检查框)、,submit,(提交键)等。,文本框,text:,单选框,radio:,复选框,checkbox,:,口令框,password:,隐藏,hidden:,提交键,submit:,重置键:,reset:,例,4-6,17,例,6,例,6,中,我们用单选框和复选框实现一个网上小测试。用户在,example4_6.jsp,页面提供的表单中选中单选框或复选框,然后将选择提交给,answer.jsp,页面,,example4_6.jsp,页面和,answer.jsp,页面的效果如图,4.5,(,1,)和图,4.5,(,2,),。,18,4.1.5,处理,HTML,标记,_,、,格式,下拉式列表和滚动列表通过,和,标记来定义。基本格式为:,(,1,)下拉列表,你选了小猫,你选了小狗,(,2,)滚动列表,:,在,Select,中指定,size,属性的值就变成滚动列表,,size,的值是滚动列表的可见行的个数。,计算,1,到,n,的连续和,计算,1,到,n,的平方和,例,4-7,19,例,7,例,7,中,用户在,example4_7.jsp,页面提供的表单中,通过滚动列表选择计算求和的方式、通过下拉列表选择计算求和的项数,然后将选择提交给,sum.jsp,,,example4_7.jsp,页面和,sum.jsp,页面的效果如图,4.6,(,1,)和图,4.6,(,2,),。,20,4.1.5,处理,HTML,标记,_,格式,标记在表单中指定一个能输入多行文本的文本区域。,基本格式为:,21,4.1.5,处理,HTML,标记,_,表格,表格由,、,标记定义。,一般格式,:,单元格中的数据,单元格中的数据,其中,定义表格的一个行,,或,标记定义这一行中的表格单元,二者的区别是:,定义的单元加重显示,,称做普通单元,不加重显示。一行中的加重单元和普通单元可以交替出现,也可以全是加重单元或普通单元。,中增加选项,border,可指明该表格是否带有边框。,例,4-8,22,例,8,例,8,中的,example4_8.jsp,对例子,6,中的,example4_6.jsp,进行的改动,把表单的,GUI,显示在表格单元格中,example4_8.jsp,页面的效果如图,4.7,。,23,4.1.5,处理,HTML,标记,_,与,标记,使用,或,标记都可以显示一副图象,标记的基本格式为:,描述文字,描述文字,如果,图像文件和当前页面在同一,Web,服务目录中,,“图像的文件的,URL”,就是该图像文件的名字;,如果,图像文件在当前,Web,服务目录一个子目录中,比如,picture,子目录中,那么“,图像文件的,URL,”,就是,“,picture/,图像文件的名字”,.,标记中可以使用,width,和,height,属性指定被显示的图像的宽为和高,如果省略,width,和,height,属性,标记将按图像的原始宽度和高度来显示图像。,24,4.1.5,处理,HTML,标记,_,标记,使用,标记可以播放音乐和视频,当浏览器执行该标记时,会把浏览器所在机器上的默认播放器嵌入到浏览器中,以便播放音乐或视频文件。,标记的基本格式为:,描述文字,如果,音乐或视频文件和当前页面在同一,Web,服务目录中,,标记中,src,属性的值就是该文件的名字;,如果,视频文件在当前,Web,服务目录一个子目录中,比如,avi,子目录中,那么,标记中,src,属性的值就是“,avi/,视频文件的名字”。,标记中经常使用的属性及取值如下:,autostart,属性,的值用来指定音乐或视频文件传送完毕后是否立刻播放,autostart,取值,“,true”,或“,false”,,该属性的默认值是,false,。,loop,属性,的取值为正整数,该属性的值用来指定音乐或视频文件重复播放的次数。,例,4-9,25,例,9,例,9,中页面使用了,和,标记。用户通过,example4_9.jsp,页面中的下拉列表选择一副图像和一个视频文件或音乐文件,然后单击提交按钮将数据提交给,show.jsp,页面,该页面使用,标记显示图像、使用,标记播放音乐和视频。其中图像文件和视频文件分别存放在当前,Web,服务目录,ch3,的子目录,picture,和,avi,中。,example4_9.jsp,页面和,show.jsp,页面的效果如图,4.8,(,1,),4.8,(,2,)。,26,4.2,response,对象,可以用,response,对象,对用户的请求做出动态响应,向用户端发送数据。,27,4.2.1,动态响应,contentType,属性,由于,page,指令只能为,contentType,属性指定一个值来决定响应的,MIME,类型。,如果想动态地改变这个属性的值来响应用户,就需要使用,response,对象的,setContentType(String s),方法来改变,contentType,的属性值。,public void setContentType(String s),方法动态设置响应的,MIME,类型,参数,s,可取,:,text/html,、,text/plain,、,image/gif,、,image/x-xbitmap,、,image/jpeg,、,image/pjpeg,、,application/x-shockwave-flash,、,application/vnd.ms-powerpoint,、,application/vnd.ms-excel,、,application/msword,。,例,4-10,4-11,28,例,10,例,10,中,当用户单击按钮,选择将当前页面保存为一个,Word,文档时,JSP,页面动态地改变,contentType,属性的值为,application/msword,。这时,用户的浏览器会提示用户用,MS-Word,程序来显示或保存当前页面,。,example4_10.jsp,我正在学习,response,对象的,setContentType,方法,将当前页面保存为,word,文档吗?,29,例,11,例,11,中,用,response,对象将,contentType,属性的值设为,image/jpeg,,使得用户可以看到,Java,程序片所绘制的图形,。,example4_11.jsp,效果如图,4.9,(,1,),4.9,(,2,),30,4.2.2 response,的,HTTP,文件头,response,对象可以使用方法:,addHeader(String head,String value);,或使用方法:,setHeader(String head,String value);,动态添加新的响应头和头的值,并将这些头发送给用户的浏览器。如果添加的头已经存在,则先前的头被覆盖。,例,4-12,31,例,12,例,12,中,,response,对象添加一个响应头,refresh,,其头值是,5,,那么用户收到这个头之后,,5,秒钟后将再次刷新该页面,导致该网页每,5,秒刷新一次,。,example4_12.jsp,现在的时间是:,32,4.2.3 response,重定向,在某些情况下,,JSP,引擎在响应用户时,可能需要将用户重新引导至另一个页面。,例如,如果用户输入的表单信息不完整,就会再次被引导到该表单的输入页面。,使用,response,对象的,sendRedirect(URL url),方法实现用户的重定向。,例,4-13,33,例,13,例,13,中,用户在,example4_13.jsp,页面填写表单提交给,verify.jsp,页面,如果填写的表单不完整就会被重新定向到,example4_13.jsp,页面,。,example4_13.jsp,填写姓名:,verify.jsp.jsp,34,4.2.4,response,的状态行,当,JSP,引擎对用户请求进行响应时,它发送的首行称做状态行。,状态行包括,3,位数字的状态代码和对状态代码的描述(称做原因短语)。,参考表,4-1,状态代码表,例,4-14,35,例,14,例,14,中,我们使用,setStatus(int n),设置响应的状态行来防止本网站的,JSP,页面被,“,盗链,”,。,other.jsp,存放在,Web,服务目录,ch3,中,(,一个网站,),;,sameWebOne.jsp,和,sameWebTwo.jsp,存放在同一,Web,服务目录,ch4,中,(,一个网站,),。,other.jsp,和,sameWebOne.jsp,都提供了关于,sameWebTwo.jsp,的超链接。,sameWebTwo.jsp,允许,sameWebOne.jsp,通过其中的超链接访问它,但不允许,orther.jsp,通过其中的超链接访问它,。,36,表,4-1,状态代码表,部分内容,37,4.3,session,对象,HTTP,协议是一种无状态协议。一个用户向服务器发出请求(,request,),然后服务器返回响应(,response,),连接就被关闭了,在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一用户。,内置,session(,会话,),对象,记录有关连接的信息,.,由,Tomcat,服务器负责创建。,*,有状态协议如:,TCP,、,FTP,、,DNS,38,4.3.1 session,对象的,Id,当一个用户首次访问,Web,服务目录中的某个,JSP,页面时,,JSP,引擎为其产生一个,session,对象。为用户产生的,session,对象调用相应的方法可以存储用户在访问各个页面期间提交的各种信息。,为用户产生的,session,对象中含有一个,String,类型的,Id,号,,JSP,引擎同时将这个,Id,号发送到用户端、存放在用户的浏览器的,Cookie,中。,每个用户都对应着一个,session,对象(该用户的会话),不同用户的,session,对象互不相同,即具有不同的,Id,号码。,例,4-15,39,例,15,例,4-15,中,用户在服务器的,Web,服务目录,ch4,中的三个页面,first.jsp,、,second,和,third.jsp,之间进行连接,三个页面的,session,对象是完全相同的。其中,,first.jsp,存放在,ch4,中,,second.jsp,存放在,ch4,的子目录,two,中,,third.jsp,存放在,ch4,的子目录,three,中。用户首先访问,first.jsp,页面,从这个页面再连接到,second.jsp,页面,然后从,second.jsp,再连接到,third.jsp,页面。,first.jsp,、,second,和,third.jsp,的效果图如图,4.11,(,a,),,4.11,(,b,),,4.11,(,c,),40,4.3.2 session,对象与,URL,重写,如果用户端不支持,Cookie,,那么用户在不同网页之间的,session,对象可能是互不相同的,因为如果服务器无法将,Id,存放到用户端,就不能建立,session,对象和用户的一一对应关系。,可以通过,URL,重写来实现,session,对象的惟一性。所谓,URL,重写,就是当用户从一个页面重新链接到另一个页面时,通过向这个新的,URL,添加参数,把,session,对象的,Id,传带过去,这样就可以保障用户在该网站各个页面中的,session,对象是完全相同的。可以使用,response,对象调用,encodeURL(),或,encodeRedirectURL(),方法实现,URL,重写,.,例,4-16,41,例,16,例,16,中,,jiafei.jsp,、,tom.jsp,和,jerry.jsp,之间实行,URL,重写,,jiafei.jsp,存放在,ch4,中,,tom.jsp,存放在,ch4,的子目录,two,中,,jerry.jsp,存放在,ch4,的子目录,three,中。,42,4.3.3 session,对象存储数据,session,对象使用下列方法处理数据:,(1)public void setAttribute(String key,Object obj),session,对象可以调用该方法将参数,Object,指定的对象,obj,添加到,session,对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加的对象被清除。,(,2,),public Object getAttibute(String key),获取,session,对象含有的关键字是,key,的对象。由于任何对象都可以添加到,session,对象中,因此用该方法取回对象时,应强制转化为原来的类型。,(,3,),public Enumeration getAttributeNames(),session,对象调用该方法产生一个枚举对象,该枚举对象使用,nextElemets(),遍历,session,中的各个对象所对应的关键字。,(,4,),public long getCreationTime(),session,对象调用该方法可以获取该对象创建的时间,单位是毫秒。,(,5,),public void removeAttribute(String name),session,对象调用该方法移掉关键字,key,对应的对象,.,例,4-17,43,例,17,例,17,中涉及,3,个页面,exmple4_17.jsp,,,shop.jsp,和,account.jsp,,我们使用,session,对象存储顾客的姓名和购买的商品。,exmple4_17.jsp,,,shop.jsp,和,account.jsp,的效果图如图,4.12,(,1,),,4.12,(,2,),,4.12,(,3,),。,44,4.3.4,在,Tag,文件中使用,session,对象,JSP,页面通过调用,Tag,文件可以实现代码的复用,那么在反复调用,Tag,文件时,,Tag,文件就可以对,session,对象中存储的数据进行处理,并将必要的结果返回给,JSP,页面。,例,4-18,45,例,18,例,18,是个猜数字的小游戏。当用户访问服务器上的,example3_18.jsp,页面时,服务器随机分配给用户一个,1,至,100,之间的整数,然后将这个整数存在用户的,session,对象中。,exmple4_18.jsp,,,guess.jsp,效果图如图,4.13,(,1,),,4.13,(,2,),。,46,4.3.5 session,对象的生存期限,一个用户在某个,web,服务目录的,session,对象的生存期限,依赖于,session,对象是否调用,invalidate(),方法使得,session,无效,依赖于,session,对象达到了设置的最长的“发呆”状态时间,依赖于服务器是否被关闭。,重新设置各个,Web,服务目录下的,session,对象的最长“发呆”时间。打开,Tomcat,安装目录,conf,目录下的配置文件,web.xml,,找到,30,将其中的,30,修改成所要求的值即可,如果时间修改为负数,发呆时间不受限制。,session,对象可以使用下列方法获取或设置和生存时间有关的信息:,public long getCreationTime(),获取,session,创建的时间,单位是毫秒。,public long getLastAccessedTime(),获取,session,最后一次被操作的时间。,public int getMaxInactiveInterval(),获取,session,最长的“发呆”时间(单位是秒)。,public void setMaxInactiveInterval(int interval),设置,session,最长的“发呆”时间,public boolean isNew(),判断,session,是否是一个新建的对象。,invalidate(),使,session,无效。,47,例,19,例,4-19,中,,session,对象使用,setMaxInactiveInterval(int interval),方法设置最长的,“,发呆,”,状态时间为,10,秒。用户可以通过刷新页面检查是否达到了最长的,“,发呆,”,时间,如果两次刷新之间的间隔超过,10,秒,用户先前的,session,将被取消,用户将获得一个新的,session,对象。,48,4.3.6,使用,session,设置时间间隔,为了限制用户在很短的时间间隔内不断地使用某页面所提供的某种功能,而影响其他用户使用该页面所提供的功能,因此我们可以利用,用户的,session,来设置用户使用当前页面所提供功能的间隔时间,从而限制该用户等待若干,“,时间,”,后,再次使用该页面所提供的功能。,例,4-20,例,20,中,,JSP,页面,example4_20.jsp,提供计算字符串长度的功能,用户可以通过表单提交一个字符串给当前页面。,example4_20.jsp,利用用户的,session,来设置用户使用当前页面的所提供功能的间隔时间(间隔时间是,5,秒),。,49,4.3.7,计数器,使用,session,实现计数器的步骤是:当一个用户请求,Web,服务目录下的任何一个,JSP,页面时,首先检查该用户的,session,对象中是否已经有计数,如果没有计数,立刻将当前的计数增,1,,并将计数存到用户的,session,中,否则不改变当前的计数。,例,4-21,例,21,中,,Web,服务目录,ch4,有两个,JSP,页面:,one.jsp,、,two.jsp,和一个,tag,文件:,Count.tag,。,Count.tag,文件负责计数。,one.jsp,、,two.jsp,使用,Count.tag,实现计数。用户首次请求,one.jsp,和,two.jsp,的任何一个,都会使得网站的计数增,1,。,50,4.4,out,对象,out,对象是一个输出流,用来向用户端输出数据。,out,对象可调用如下的方法用于各种数据的输出,,out.print(Boolean),,,out.println(Boolean),用于输出一个布尔值。,out.print(char),,,out.println(char),输出一个字符。,out.print(double),,,out.println(double),输出一个双精度的浮点数。,out.print(float),,,out.println(float),用于输出一个单精度的浮点数。,out.print(long),,,out.println(long),输出一个长整型数据。,out.print(String),,,out.println(String,),输出一个字符串对象的内容。,out.newLine(),输出一个换行符。,out.flush(),输出缓冲区里的内容。,out.close(),关闭流。,例,4-22,51,例,22,例,22,使用,out,对象向用户输出包括表格等内容的信息,,example4_22.jsp,页面的效果如图,4.14,。,52,4.5,application,对象,任何客户在所访问的服务目录的各个页面浏览时,,application,对象都是同一个,.,application,对象的常用方法,(,1,),public void setAttribute(String key,Object obj),application,对象可以调用该方法将参数,Object,指定的对象,obj,添加到,application,对象中,并为添加的对象指定了一个索引关键字,如果添加的两个对象的关键字相同,则先前添加对象被清除。,(,2,),public Object getAttibue(String key),获取,application,对象含有的关键字是,key,的对象。由于任何对象都可以添加到,application,对象中,因此用该方法取回对象时,应强制转化为原来的类型。,(,3,),public Enumeration getAttributeNames(),application,对象调用该方法产生一个枚举对象,该枚举对象使用,nextElemets(),遍历,application,中的各个对象所对应的关键字。,(,4,),public void removeAttribue(String key),从当前,application,对象中删除关键字是,key,的对象。,(,5,),public String getServletInfo(),application,对象可以调用该方法获取,Servlet,编译器的当前版本的信息。,例,4-23,53,例,23,例,23,中,用户通过,submit.jsp,页面向,messagePane.jsp,页面提交姓名、留言标题和留言内容,,messagePane.jsp,页面获取这些内容后,用同步方法将这些内容添加到一个向量中,然后将这个向量再添加到,application,对象中。当用户单击查看留言板时,,showMessage.jsp,页面负责显示所有用户的留言内容,即从,application,对象中取出向量,然后遍历向量中存储的信息。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服