《第5章jsp内置对象》由会员分享,可在线阅读,更多相关《第5章jsp内置对象(59页珍藏版)》请在金锄头文库上搜索。
1、2019年11月9日,1,第5章 JSP内置对象,2019年11月9日,2,所谓JSP内置对象,是指不需要声明而直接可以在JSP网页中使用的对象。 需要注意的问题是对象名的写法,包括这些对象方法的调用时也要书写正确,因为Java语言本身是大小写敏感的。,2019年11月9日,3,教学目标和重点,本章学习目标: 了解和掌握request请求对象方法 了解和掌握response响应对象方法 了解和掌握out 输出对象方法 了解和掌握session会话对象方法 了解和掌握application 应用程序对象方法 了解pageContext 页面上下文对象方法 了解config 配置对象方法 了解pa
2、ge 页面对象方法 了解exception 例外对象方法,2019年11月9日,4,隐式对象,输入输出对象,2019年11月9日,5,5.1 JSP内置对象概述,2019年11月9日,6,request与response对象 JSP网页能够具备与用户互动的功能,关键在于request对象与response对象所提供的功能,request让服务器取得用户在网页表单中所输入的数据内容,response则提供服务器端程序响应客户端信息所需的功能。 request与response对象,是学习建构JSP网页交互功能最重要的两个内置对象,它们与HTML窗体标签有着相当密切的关系,下面章节对其将会有详细的
3、说明与范例介绍。,2019年11月9日,7,out对象 JSP是一种动态的网页,其与HTML这一类静态文件的最大不同,在于同一份网页经过程序运算得以根据各种条件及情况进行呈现,out对象在这一方面提供相关的支持,服务器端利用out对象将所要输出的内容,在传送至网页的时候动态写入客户端。 session与application对象 application与session这两个对象,基本上被使用于记录和处理JSP网页之间的共享数据。 由于因特网本身是一种无联机状态的应用程序,当一份网页文件从网站服务器传送至客户端的浏览器之后,客户端和服务器端之间就没有任何联机状态存在,这个先天的缺陷,让网页无法存
4、储应用程序运行期间所需的共享数据,application与session对象就是被设计用来解决这样的问题的。,2019年11月9日,8,config、pageContext以及page对象 这3个对象被用于存取JSP网页程序运行阶段的各种信息内容,其中config包含JSP网页文件被编译成为Servlet之后的相关信息、pageContext则是提供系统运行期间各种信息内容的存取操作功能,page代表目前正在运行的JSP网页对象。 JSP服务器端应用程序可以运用这3个对象,存取网页运行期间的各种环境信息,同时将当前网页当作对象进行操作,本章最后将对于这几个对象将会有详细的说明与探讨。 exce
5、ption对象 exception为JSP提供用于处理程序运行错误的异常对象,此对象搭配功能强大的异常处理机制,运用于JSP网页的程序除错与异常处理上。,2019年11月9日,9,5.2 request对象,HTTP通信协议是客户与服务器之间一种提交(请求)信息与响应信息(request/respone)的通信协议。在JSP中,内置对象request封装了用户提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。 Request内置对象代表了客户端的请求信息,主要用于接受客户端通过HTTP协议传送给服务器端的数据。 Request对象封装请求信息的内容:请
6、求的头信息(Header)、系统信息(比如:编码方式)、请求的方式(比如:GET或POST)、请求的参数名称和参数值等信息; 还提供了获取cookie和session等对象、数据的方法。 通过request对象可以获取用户的请求信息,2019年11月9日,10,5.2.1 request对象常用方法,2019年11月9日,11,5.2.1 request对象应用实例,1. String getParameter(String name) 用表单和超链接、传递参数的时候,使用getParameter(String name)接收传递的参数。 返回给定参数的值,当传递给此方法的参数名没有实际参数与
7、之对应时,返回null。 使用getParameter(String name)取得的值都是字符串类型,需要转换为需要的类型。 【例5-1】request对象的应用实例。,2019年11月9日,12,2. Enumeration getParameterNames() 返回值类型:枚举类型Enumeration。 得到客户端提交的所有参数的名称。 如【例5-1】中的代码段通过循环可获取客户端提交的所有参数的名字,2019年11月9日,13,3.void setCharacterEncoding(String chaen) 在form表单采用post方式提交请求时,需要设置request对象的编
8、码方式,保证能够正确地取到数据。例: ,2019年11月9日,14,4. String getParameterValues(String name) 使用getParameterValues()能够取出变量的多个值。返回值类型: 字符串数组 String。 能够取出变量的多个值,主要用于获取复选框的值或是下拉列表带multiple属性的值。 【例5-2】读取复选框数据例子。 【例5-3】读取带multiple属性的下拉列表数据的例子。 【例5-4】利用request对象的一些方法,回显系统信息。,2019年11月9日,15,5.3 response对象,response对象用于将服务器端数据
9、发送到客户端以响应客户端的请求。response对象实现HttpServletResponse接口,可对客户的请求做出动态的响应,向客户端发送数据,如Cookie、HTTP文件头信息等,一般是HttpServlet.Response类或其子类的一个对象。,2019年11月9日,16,5.3.1 response对象常用方法,2019年11月9日,17,5.3.2 response对象应用实例,1. public void setContentType(String type) 动态响应contenType属性 当一个用户访问一个JSP页面时,如果该页面用page指令设置页面的contentTy
10、pe属性是text/html,那么JSP引擎将按照这种属性值作出反映。如果要动态改变这个属性值来响应客户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值。 设置输出数据的类型: text/html:网页 text/plain:纯文本 application/x-msexcel:Excel文件 application/msword:Word文件 【例5-5】应用setContentType改变contentType的属性值。,2019年11月9日,18,2.设置刷新public void setHeader(Stringn
11、ame, String value) setHeader可以设置HTTP应答报文的首部字段和值;利用setHeader方法可以设置页面的自动刷新 例如: reponse.setHeader(“Refresh”,”5”); /5秒种后自动刷新本页面 reponse.setHeader(“Refresh”, “5;URL=”);/5秒种后自动跳转到新页面 【例5-6】控制页面的刷新频率。在页面中实时显示当前时间。,2019年11月9日,19,3. void sendRedirect(String redirectURL)将客户端重定向到指定的URL 在某些情况下,当响应客户时,需要将客户重新引导至
12、另一个页面,可以使用response的sendRedirect(URL)方法实现客户的重定向。 sendRedirect和的区别: response.sendredirect()会在客户端呈现跳转后的URL地址;这种跳转称为客户端跳转。使用response.sendredirect()将重定向的URL发送到客户端,浏览器再根据这个URL重新发起请求。所以用这个方法时,你在浏览器地址栏上会看到新的请求资源的地址。并且这个时候的request,response都和第一次的不一样了。这时是重新产生了新的request,response。 使用完全是在服务器上进行,浏览器地址栏中的地址保持不变;这种跳
13、转称为服务器端跳转。所以使用这个方法时没有产生新的用request,response。因为request没有变,在同一个请求内,可以用request来转递参数。,2019年11月9日,20,response.sendRedirect()想带参数的话,自己在地址中写成 xxx.jsp?param1=aaa&. 这种形式传递参数。能够使用标签向目标文件传送参数和值 ,目标文件必须是一个动态的文件,能够处理参数。 后面的语句不会被执行也不会继续发送到客户端,response.sendRedirect()后面的语句会继续执行,除非语句前面有return。 是在服务器的内部进行转换,只发送给客户端最后转
14、到的页面,速度会比较快;response.sendRedirect()需要服务器与客户端之间的往返,可以转到任何页面,包括网络有效域名。但速度比较慢。 【例5-7】页面重定向的例子。,2019年11月9日,21,4. 设定状态显示码的方法void setStatus(int n) response 的状态行 当服务器对可以请求进行响应时,发送的首行被称为状态行。状态行包括3位数字的状态代码和对状态代码的描述。 下面给出对5类状态代码的大概描述。 1*(1开头的3位数字:主要是实验性质的) 2*:用来表示请求成功。 3*:用来表示在请求满足之前应该采取进一步的行动。 4*:当浏览器做出无法满足的
15、请求时,返回该状态码。 5*:用来表示服务器出现的问题。 可以通过response对象的setStatus(int n)方法来增加状态行的内容。,2019年11月9日,22,状态代码表1,下面是服务器响应客户时,发送到客户端的状态代码描述。,2019年11月9日,23,状态代码表2,2019年11月9日,24,状态代码表3,2019年11月9日,25,状态代码表4,2019年11月9日,26,状态代码表5,2019年11月9日,27,【例5-8】设置响应的状态行示例。 5.void addCookie(Cookie cookie) 添加一个Cookie对象,用来保存客户端的用户信息。可以通过r
16、equest对象的getCookie()方法获得这个Cookie。 Cookie可以保存用户的个性化信息,从而对下一次访问提供方便。 【例5-9】通过response对象对Cookie进行操作。,2019年11月9日,28,5.4 out对象,out对象是javax.servlet.jsp.JspWriter的一个对象,它能把信息发送给客户端的浏览器。out对象常用的方法是print()和println(),两者都在浏览器上显示信息。out对象最主要的功能在于将特定的数据内容搭配JSP程序代码动态输出至客户端的浏览器网页,在本书稍早的章节范例当中,我们已经初步看到了如何使用这个对象进行文本输出,这一节的内容将进一步说明out对象的相关特性。,2019年11月9日,29,5.4.1 out对象方法成员与数据输出,2019年11月9日,30,输出数据,newLine在网页中输出一行空白,例如下面的程序代码: out.newLine() ; Print和println这2个方法成员被引用的时候均接受一个特定型态的参数,並且将这个参