第04章JSP内置对象详解_第1页
第04章JSP内置对象详解_第2页
第04章JSP内置对象详解_第3页
第04章JSP内置对象详解_第4页
第04章JSP内置对象详解_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、第第4章章 jsp内置对象详解内置对象详解 jsp基础,熟练掌握基础,熟练掌握为什么叫为什么叫jsp内置对象内置对象不用声明就可以在不用声明就可以在jsp页面的脚本部分使用。页面的脚本部分使用。第第4章章 jsp内置对象详解内置对象详解 4.1 请求对象:request 4.2 响应对象:response 4.3 会话对象:session 4.4 多客户端共享对象:application 4.5 页面对象:page 第第4章章 jsp内置对象详解内置对象详解 4.6 页面上下文对象:pagecontext 4.7 输出对象:out 4.8 配置对象:config 4.9 异常对象:except

2、ion http协议的运行过程协议的运行过程www协议(协议(world wide web)使用浏览器从网站获取使用浏览器从网站获取http页面时,使用页面时,使用http(hypertext transfer protocol)协议规定信息在)协议规定信息在internet上的传输方法,特别规定了浏览器与服务上的传输方法,特别规定了浏览器与服务器的交互方法。器的交互方法。从网站获取页面时,首先浏览器在网站上打开一从网站获取页面时,首先浏览器在网站上打开一个对网络服务器的连接,并发出请求,服务器收个对网络服务器的连接,并发出请求,服务器收到请求后响应,返回结果。到请求后响应,返回结果。http

3、请求的结构请求的结构包括请求行、头域和可能的信息体包括请求行、头域和可能的信息体例:例:get/hello.htm http/1.1host:一个典型的请求包含许多一个典型的请求包含许多http请求头。头提供了请求头。头提供了关于信息体的附加信息及请求的来源,其中有些关于信息体的附加信息及请求的来源,其中有些头是标准的,有些头和特定的浏览器有关。头是标准的,有些头和特定的浏览器有关。请求还可能包含信息体。如表单内容。请求还可能包含信息体。如表单内容。accept:浏览器可接受的:浏览器可接受的mime类型。类型。accept-charset:浏览器可接受的字符集。:浏览器可接受的字符集。acc

4、ept-encoding:浏览器能够进行解码的数据编码方式,如:浏览器能够进行解码的数据编码方式,如gzip。servlet能够向能够向支持支持gzip的浏览器返回经的浏览器返回经gzip编码的编码的html页面。许多情形下这可以减少页面。许多情形下这可以减少5到到10倍的下载时间。倍的下载时间。accept-language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。版本时要用到。content-length:表示请求消息的正文长度。:表示请求消息的正文长度。cookie:这是最重要的请求头信息之一。:这是最重

5、要的请求头信息之一。from:请求发送者的:请求发送者的email地址,有一些特殊的地址,有一些特殊的web客户程序使用,浏览器不会用客户程序使用,浏览器不会用到它。到它。host:初始:初始url中的主机和端口。中的主机和端口。referer:包含一个:包含一个url,用户从该,用户从该url代表的页面出发访问当前请求的页面。代表的页面出发访问当前请求的页面。user-agent:浏览器类型,如:浏览器类型,如servlet返回内容与浏览器类型有关则该值非常有用。返回内容与浏览器类型有关则该值非常有用。ua=pixel,ua-color,ua-os,ua-cpu:由某些版本的:由某些版本的i

6、e浏览器所发送的非标准浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和的请求头,表示屏幕大小、颜色深度、操作系统和cpu类型。类型。http响应的结构响应的结构每个响应都由状态行开始,可以包含几个头及可每个响应都由状态行开始,可以包含几个头及可能的信息体,称作响应的能的信息体,称作响应的http头和响应信息体。头和响应信息体。这些头和信息体由服务器发送给客户的浏览器,这些头和信息体由服务器发送给客户的浏览器,信息体就是客户请求的网页的运行结果,对于信息体就是客户请求的网页的运行结果,对于jsp页面,就是网页的静态信息。页面,就是网页的静态信息。4.1 请求对象:请求对象:req

7、uest 内置对象内置对象request封装了用户提交的信息。该对象封装了用户提交的信息。该对象调用相应的方法可以获得封装的信息。调用相应的方法可以获得封装的信息。客户一般使用客户一般使用html表单向服务器的某个表单向服务器的某个jsp页面页面提交信息。提交信息。例:例:提交的手段提交的手段4.1 请求对象:请求对象:request 4.1.1 获取请求参数 4.1.2 在作用域中管理属性 4.1.3 获取cookie对象 4.1.4 获取客户端信息 参数“name”与form表单中的name属性对应,或者与提交链接的参数名对应,如果参数值不存在,则返回null值,该方法的返回值类型是str

8、ing。 request对象通过getparameter()方法可以用来获取用户提交的数据。获取请求参数的使用格式如下: 获取请求参数获取请求参数 string name=request.getparameter(“name”) 例:request.getparameter(“boy”) 例:例:tree.jsp获取文本框提交的信息:获取文本框提交的信息:获取按钮的名字:获取按钮的名字:例:例:trynumber=double.parsedouble(textcontent);if(number=0) r=math.sqrt(number);out.print(“”+string.valueo

9、f(number)+”的平方根:的平方根:”);out.print(“”+string.valueof(r);elseout.print(“”+”请输入一个正数请输入一个正数”);catch(numberformatexception e)out.print(“”+”请输入数字字符请输入数字字符”);使用对象前确定客户是否已提交数据,如客户使用对象前确定客户是否已提交数据,如客户还没有提交表单数据,那调用该对象就会出现还没有提交表单数据,那调用该对象就会出现空对象错误。即空对象错误。即nullpointexception异常。为了异常。为了避免使用空对象,可以添加如下代码:避免使用空对象,可以

10、添加如下代码:string textcontent=request.getparameter(“girl”);double number=0,r=0;if(textcontent=null) textcontent=“”; 处理汉字对象处理汉字对象当用当用request对象获取客户提交的汉字字符时,对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息会出现乱码问题,所以对含有汉字字符的信息必须进行特殊处理。必须进行特殊处理。首先,将获取的字符串用首先,将获取的字符串用iso-8859-1进行编码进行编码,并将编码存放到一个字节数组中,然后再将,并将编码存放到一个字节数组中,然

11、后再将这个数组转化成字符串对象,例:这个数组转化成字符串对象,例:string textcontent=request.getparameter(“boy”);byte b=textcontent.getbytes(“iso-8859-1”);textcontent=new string(b);例:例:tree.jsp获取文本框提交的信息:获取文本框提交的信息:获取按钮的名字:获取按钮的名字:在作用域中管理属性在作用域中管理属性 在进行请求转发操作时,把一些数据带到转发后的页面处理。这时,在进行请求转发操作时,把一些数据带到转发后的页面处理。这时,就可以使用就可以使用request对象的对象的

12、setattribute()方法将数据设置在方法将数据设置在request范围内范围内存取。在存取。在request作用域中,设置转发数据的方法使用格式如下:作用域中,设置转发数据的方法使用格式如下: request.setattribute(“key”,value); 参数key为string类型的键名。在转发后的页面取数据时,通过这个键名来获取数据;参数value为object类型的键值,代表需要保存在request范围内的数据。在requet作用域中,获取转发数据的方法使用格式如下: object object=request.getattribute(“name”); 在requet作

13、用域中,获取所有属性的名称集的方法使用格式如下: request.getattributenames(); 该方法返回值是枚举类型(enumeration)数据。 示例:详见教材及源代码示例:详见教材及源代码index.jsp 用户注册信息 账号: 密码: 真实姓名: email地址: 性别: 男 女 dealwith.jspshowuser.jsp   显示用户注册信息 账号: 密码: 真实姓名:  email地址: 性别: 获取获取cookie对象对象 cookie是web应用程序保存用户相关信息提供的一种有效的方法,它是一段文本信息,伴随着用户请求和页面在w

14、eb服务器和浏览器之间传递。用户每次访问站点时,web应用程序都可以读取cookie包含的信息。在jsp页面中,可以通过requet对象中的getcookie()方法获取cookie中的数据,格式如下: cookie cookie= request.getcookie(); 该方法返回值是cookie数组。 .%cookie cookies = request.getcookies();cookie cookie_response = null;if (cookies != null) cookie_response = cookies0;out.println(当前的时间:当前的时间: +

15、new java.util.date() + );if (cookie_response != null) out.println(上一次访问的时间:上一次访问的时间: + cookie_response.getvalue();cookie_response.setvalue(new date().tostring();if (cookies = null) cookie_response = new cookie(accesstime, );cookie_response.setvalue(new date().tostring();response.addcookie(cookie_res

16、ponse);%获取客户端信息获取客户端信息 request对象的一些方法可以用于确定组成jsp页面的客户端的信息,request对象用于访问请求行元素的方法如表所示。 方法名称含义string getmethod()返回用来生成请求的http方法名称,例如get()方法或post()方法等string getpathinfo()返回任何额外的路径信息,这些信息与服务器小程序路径、查询字符串之间的url相关联string getrequesturi()返回请求的uri部分,位于http请求第一行的协议名和查询字符串之间的内容string getcontextpath()返回请求uri部分,表示

17、请求的应用程序环境string getservletpath()返回请求uri部分,指定服务器小程序或jsp页面string getquerystring()返回跟随在uri的路径部分后面的查询字符串session和和cookiesession是保存在服务端的内存里面,而cookie保存于浏览器或客户端文件里面;session是基于访问的进程,记录了一个访问的开始到结束,当浏览器或进程关闭之后,session也就“消失”了,而cookie更多地被用于标识用户,它可以是长久的,用于用户跟踪和识别唯一用户(unique visitor)。其他常用方法其他常用方法getremoteaddr() 获取

18、客户端的ip地址。getremotehost() 获取客户端的名字。getservername() 获取服务器的名字getserverport() 获取服务器的端口号。getheader()获取客户端的浏览器类型。4.2 响应对象:响应对象:response response的的http文件头:文件头:http请求和请求和http响应;响应;典型的典型的http请求:请求:post/tree.jsp/http/1.1host:localhost:8080accept_encoding:gzip,deflateresponse的状态行的状态行当服务器对客户请求进行响应时,它发送的首行当服务器对客

19、户请求进行响应时,它发送的首行称作状态行。称作状态行。状态行包括状态行包括3位数字的状态行代码和对状态代码的位数字的状态行代码和对状态代码的描述。描述。5类状态代码的简单描述类状态代码的简单描述1yy: (1开头的开头的3位数)主要是实验性质的。位数)主要是实验性质的。2yy:用来表明请求成功。:用来表明请求成功。3yy:用来表明在请求满足之前应采取进一步的行:用来表明在请求满足之前应采取进一步的行动。动。4yy:当浏览器做出无法满足的请求时,返回该代:当浏览器做出无法满足的请求时,返回该代码。码。5yy:用来表示服务器出现问题。:用来表示服务器出现问题。4.2 响应对象:响应对象:respo

20、nse 4.2.1 客户端与服务器端的交互 4.2.2 页面重定向 4.2.3 缓冲区的输出 4.2.4 response对象常用方法 客户端与服务器端的交互客户端与服务器端的交互 request对象和response对象的结合可以使jsp更好地实现客户端与服务器的信息交互。用户在客户端浏览器中发出的请求信息被保存在request对象中并发送给web服务器,jsp引擎根据jsp文件的指示处理request对象,或者根据实际需要将request对象转发给由jsp文件所指定的其他服务器端组件,如servlet组件、javabean组件或ejb组件等。处理结果则以response对象的方式返回给js

21、p引擎,jsp引擎和web服务器根据response对象最终生成jsp页面,返回给客户端浏览器,这也是用户最终看到的内容。客户端与服务器端信息交互的流程如图所示。 页面重定向页面重定向 jsp页面可以使用response对象中的setredirect()方法将客户请求重定向到一个不同的页面资源。例如: response.sendredirect(“sanyang,jsp”) jsp页面还可以使用response对象中的senderror()方法指明一个错误状态,该方法接受一个错误及一条可选的错误信息。该信息将在内容主体上返回给客户。例如: response.senderror(500,”请求页

22、面存在错误”); 上述两个方法都会中止当前的请求和响应。response对象中用于重定向的方法如下: vsenderror(int number)方法:使用指定的状态码向客户发送错误响应。vsenderror(int number,string msg)方法:使用指定的状态码和描述性消息向 客户发送错误响应。vsendredirect(string location)方法:指定的重定向位置url并向客户发送 重定向响应,可以使用相对url。 缓冲区的输出缓冲区的输出 缓冲可以有效地在服务器与客户之间传输内容。 httpservletresponse对象为支持jspwriter对象而启用了缓冲区

23、配置。response对象中的getbuffersize()方法的返回值用于jsp页面的当前缓冲区容量;response对象中的setbuffersize()方法允许jsp页面为响应的主体设置一个首选的输出缓冲区容量。response对象中用于相应缓冲的方法如下: vflushbuffer() throws ioexception:强制把缓冲区中的内容发送给客户。vgetbuffersize():返回响应所使用的实际缓冲区大小,如果没使用缓冲 区,则该方法返回0。vsetbuffersize(int size):为响应的主体设置首选的缓冲区大小。vboolean iscommitted():表

24、示响应是否已经提交,提交的响应已经写入 状态码。vreset():清除缓冲区存在的任何数据,同时清除状态码。 例:例: 缓冲区大小:缓冲区大小: 缓冲区设置之前缓冲区设置之前 输出的内容是否提交:输出的内容是否提交: 缓冲区设置之后缓冲区设置之后 输出的内容是否提交:输出的内容是否提交: response对象常用方法对象常用方法 response对象常用方法如表所示。 方法名称含义addcookie(cookie cookie)添加一个cookie对象setlocale(java.util.locale loc)设置本地的国家和语言public string getcharacterencod

25、ing()获取字符编码方式public servletoutputstream getoutputstream()throw ioexception获取到客户端的输出流对象public void setcontenttype(java.lang.string type)设置响应的mime类型setheader(string name,string value)使用给定的名称和整数值设置一个响应报头例例现在的时间是:现在的时间是:4.3 会话对象:会话对象:session 4.3.1 理解session 4.3.2 内置对象对通信的控制 4.3.3 创建与获取客户端session 4.3.4 移

26、除指定session中的对象 4.3.5 session销毁 4.3.6 session超时管理 4.3.7 session实现局部网页计数器 理解理解session session是用于保存客户信息而分配给客户的对象,http协议不能保存客户端请求信息的历史记录,为了解决这一问题,生成一个session对象,这样服务器和客户端之间的连接就会一直保持下去。session中的id标识是唯一的,用来标识每个用户,当刷新浏览器时,该标识的值不变。如果在一定时间内,客户端不向服务器发出应答请求,系统默认在30分钟内,session对象会自动消失。session标识可以通过getid()方法得到,具体代

27、码如下: 客户端session的id值: 程序运行结果如图所示。 内置对象对通信的控制内置对象对通信的控制 resquest、response和session是jsp内置对象中的重要3个对象,这3个对象体现了服务器端与客户端进行交互通信的控制。resquest、response和session内置对象的通信过程如图所示。 服务器客户端requestresponsesession jsp通过request对象控制客户浏览器的请求;通过response对客户浏览器进行响应;而session就维持这个反反复复的过程中会话起见需要传递的数据信息。 创建与获取客户端创建与获取客户端session ses

28、sion内置对象可以使用setattribuete()方法保存对象名和对象的值,如果程序员想要获取到保存到session中的信息,则需要调用getattribuete()方法进行获取。例如: 设置属性和获取属性可以在不同的文件中,但是不允许在同一个session中,是否在同一会话中要根据客户的访问情况来决定。通过下面的方法可以获取包含绑定在该session中所有对象的名称。 java.util.enumeration getattributenames()该方法返回一个枚举类型的对象 。移除指定移除指定session中的对象中的对象 jsp页面可以将任何已经保存到session中的对象进行移除

29、操作。session内置对象使用removeattribute()方法所提供的名称移除,removeattribute()方法的语法如下: void removeattribute(java.lang.string name) 参数name为string类型的值,代表移除的对象的名称。 session销毁销毁 在jsp页面中,可以通过session对象中的invalidate()方法删除已经保存到session中所有对象。invalidate()方法的语法如下: void invalidate() session超时管理超时管理 在jsp页面中,确定客户端session是否存在唯一的方法是使用

30、超时设置。这是因为web客户在进入非活动状态时不通知服务器。为了清除存储在session对象中的客户申请资源,servlet容器设置一个超时窗口。在非活动的时间超出了窗口的大小时,jsp容器将使session对象无效并撤销所有属性的绑定,从而管理session的声明周期。session对象用于超时管理如表所示。 方法含义session.getlastaccessedtime()获取客户端最近访问服务器端的保存时间session.getmaxinactiveinterval()获取客户端停止访问服务器端的保存时间session.setmaxinactiveinterval(int value)设

31、置客户端停止放问候,session在服务器端的保存时间session实现局部网页计数器实现局部网页计数器 使用session编写局部网页计数器,首先,设置int类型的变量number,并将该对象初始化为1。然后,通过获取session中getattribute()方法获取number对象,并判断该对象是否为null,如果不为null,则将获取的内容赋值给number变量。最后,将该变量自动加1并显示在页面中。实现代码如下: 注意:当浏览器关闭时或session过期时,网页访问次数将回到 初始化值。 4.4 多客户端共享对象:多客户端共享对象:application 4.4.1 appliact

32、ion对象作用范围 4.4.2 application对象常用方法 4.4.3 application实现全局网页计数器 appliaction对象作用范围对象作用范围 application对象用于保存所有应用系统中的公共数据,web服务器启动并自动创建application对象后,只要没有关闭服务器,appliaction对象一直存在,所有用户可以共享appliaction对象。 appliaction对象与session对象有一定区别,session对象和用户客户端有关,不同的客户端的session是完全不同的对象,而appliaction对象都是相同的一个对象,即共享这个内置的appl

33、iaction对象。 在jsp页面中,作用范围的对象分别为page、request、session、application,它们之间的关系如图所示。 appliactionsessionpagerequestapplication对象常用方法对象常用方法 application对象常用方法如表所示。 方法名描述setattribute(string key, object obj)将参数object指定的对象obj添加到application对象中,并为添加的对象指定一个索引getattribute(string name)获取指定的属性值。getattributenames()获取一个包含所

34、有可用属性名的枚举。removeattribute(string name)删除一个指定application的值。getcontext(string uripath)获取指定webapplication的application对象getresource(string path)获取指定资源(文件及目录)的url路径getresourceasstream(string path)获取指定资源的输入流getservlet(string name)返回指定的servlet。log(string msg)把指定消息写入servlet的日志文件。application实现全局网页计数器实现全局网页计数

35、器 使用application编写全局网页计数器,首先,设置int类型的变量number,并将该对象初始化为1。然后,通过获取application中getattribute()方法获取number对象,并判断该对象是否为null,如果不为null,则将获取的内容赋值给number变量。最后,将该变量自动加1并显示在页面中。实现代码如下: 注意:当浏览器关闭时时,再次访问该网页时,访问次数继续增加。 4.5 页面对象:页面对象:page 4.5.1 page对象的常用方法 4.5.2 page对象转换类型 page对象的常用方法对象的常用方法 page对象的常用方法如表所示。 方法名描述get

36、class()获取page对象的类。hashcode()获取page对象的hash码。equals(object obj)判断page对象是否与参数中的obj相等copy(object obj)把此page对象复制到指定的object对象中clone() 克隆当前的page对象tostring()把page对象转换成string类型的对象page对象转换类型对象转换类型 使用page输出jsp页面的对象转换类型和哈希代码值,调用page对象的hashcode()方法和tostring()方法,分别获取page对象的哈系代码值和jsp页面的对象转换类型,代码如下: %int hashcode=p

37、age.hashcode();string thisstr=page.tostring();out.println(page对象的id值:+thisstr);out.print();out.println(page对象的hash代码+hashcode);% 程序运行结果如图所示。 4.6 页面上下文对象:页面上下文对象:pagecontext 4.6.1 pagecontext对象的常用方法 4.6.2 pagecontext对象获取作用域的值 pagecontext对象是一个比较特殊的对象,它的作用是取得任何范围的参数,通过pagecontext对象可以获取jsp页面的out、request

38、、response、session、application等对象,或者可以重新定向客户的请求等。 pagecontext对象的常用方法对象的常用方法 pagecontext对象的常用方法如表所示。 方法名描述setattribute(string name, object attribute)设置默认页面范围或特定对象范围之中的已命名对象。getattribute(string name , int scope )获取name对象的属性,可选参数scope表示在特定范围内。removeattribute(string name, int scope)删除指定范围内的某个属性。forward(s

39、tring relativeurlpath)将当前页面重定向到其它的页面。include(string relativeurlpath)在当前位置包含另一文件。release()释放pagecontext对象所占用的资源。getservletcontext()获取当前页的servletcontext对象。getexception()获取当前页的exception对象。pagecontext对象获取作用域的值对象获取作用域的值 使用pagecontext对象获取作用域的值,首先在不同的范围内设置属性: 然后取出属性: 运行结果如图所示。 4.7 输出对象:输出对象:out out对象主要内容是向

40、web浏览器内输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,缓冲区默认值是8kb。out对象被封装为javax.servlet.jsp.jspwriter接口,它是jsp编程过程中经常用到的一个对象。out对象的常用方法如表所示。 方法名描述print()/println()输出各种类型数据clearbuffer()清除缓冲区的数据,并将数据写入客户端clear()清除缓冲区的当前内容,但不将数据写入客户端。flush()输出缓冲区中的数据。newline()输出一个换行符号。close()关闭输出流。4.8 配置对象:配置对象:config 4.8.1 config对象的常用方法 4.8.2 config对象获取初始化参数 config对象的主要作用是取得服务器的配置信息。config对象被封装为javax.servletconfig接口,通过pagecontext.getservletconfig()方法可以获取一个config对象。 confi

温馨提示

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

评论

0/150

提交评论