Java Web 开发从入门到实战 课件 第4章 JSP内置对象_第1页
Java Web 开发从入门到实战 课件 第4章 JSP内置对象_第2页
Java Web 开发从入门到实战 课件 第4章 JSP内置对象_第3页
Java Web 开发从入门到实战 课件 第4章 JSP内置对象_第4页
Java Web 开发从入门到实战 课件 第4章 JSP内置对象_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

第4章JSP内置对象学习目的与要求本章主要介绍request、response、out、session、application、pageContext、page、config和exception等内置对象。通过本章的学习,理解JSP内置对象的含义,掌握JSP内置对象的使用方法。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录4.1request对象4.2response对象4.3out对象4.4session对象4.5application对象4.6pageContext对象4.7page对象4.8config对象4.9exception对象4.10JSP的4种作用域《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1request对象request对象的类型为jakarta.servlet.http.HttpServletRequest。当客户端请求一个JSP页面时,JSP页面所在的服务器将客户端发出的所有请求信息封装在内置对象request中,因此使用该对象就可以获取客户端提交的信息。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1.1常用方法序

号方

法功

明1ObjectgetAttribute(Stringname)

返回指定属性的属性值2EnumerationgetAtrributeNames()

返回所有可用属性名的枚举3StringgetCharacterEncoding()

返回字符编码方式4intgetContentLength()

返回请求体的字节数5StringgetContentType()

返回请求体的MIME类型6ServletInputStreamgetInputStream()返回请求体中一行的二进制流7StringgetParameter(Stringname)返回name指定参数的参数值8EnumerationgetParameterNames()

返回可用参数名的枚举9String[]getParameterValues(Stringname)

返回包含参数name的所有值的数组10StringgetProtochol()

返回请求用的协议类型及版本号11StringgetServerName()

返回接受请求的服务器主机名12intgetServerPort()返回服务器接受此请求所用的端口号13StringgetRemoteAddr()

返回发送此请求的客户端IP地址14StringgetRemoteHost()

返回发送此请求的客户端主机名15voidsetAttribute(Stringkey,Objectobj)

设置属性的属性值16StringgetRealPath(Stringpath)

返回一虚拟路径的真实路径《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1.1常用方法

StringgetParameter(Stringname)该方法以字符串的形式返回客户端传来的某个参数的值,该参数名由name指定。【例4-1】调用方法getParameter(String

name)获取表单信息

String[]getParameterValues(Stringname)该方法以字符串数组的形式返回客户端向服务器端传递的指定参数名的所有值。【例4-2】调用方法getParameterValues

(Stringname)获取表单信息《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1.2request对象存取数据request对象可以通过void

setAttribute(String

key,Objectobj)方法将参数obj指定的对象保存到request对象中,key为所保存的对象指定一个关键字。若保存的两个对象关键字相同,则先保存的对象被清除。request对象可以通过Object

getAttribute(String

key)方法获取请求域(如:forward转发)中的关键字为key的对象(属性值)。在实际工程中,request对象经常用于存储、传递本次请求的处理结果。【例4-3】编写两个JSP页面example4_3.jsp和example4_3_1.jsp,在example4_3.jsp页面中输入一个整数提交给example4_3_1.jsp页面求平方。当输入值非整数时,在example4_3_1.jsp页面中使用request对象的setAttribute(String

key,Objectobj)方法将错误消息存储到request对象中,同时使用forward标记转发到example4_3_1.jsp页面并显示错误消息。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1.3中文乱码问题如果在例4-1的example4_1.jsp页面的文本框中输入中文姓名,那么getValue.jsp页面获得的姓名可能是乱码。如果出现中文乱码,可以使用request对象的setCharacterEncoding(String

code)设置统一字符编码,其中参数code以字符串形式传入要设置的编码格式,但这种方法仅对于提交方式是post的表单(表单默认的提交方式是get)有效。例如:使用该方法解决例4-1中的getValue.jsp页面出现的中文乱码问题,需要完成两件事:首先,将example4_1.jsp中的表单提交方式改为“post”,具体代码如下:

<formaction="getValue.jsp"method="post">

其次,在getValue.jsp中获取表单信息之前设置统一编码,具体代码如下:

request.setCharacterEncoding("UTF-8");《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1.4实践环节——获取客户端的基本信息编写1个JSP页面practice4_1.jsp,在该页面中使用request的方法获取客户端的IP地址、客户机名称、服务器名称以及服务器端口号。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1request对象4.2response对象4.3out对象4.4session对象4.5application对象4.6pageContext对象4.7page对象4.8config对象4.9exception对象4.10JSP的4种作用域《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录4.2response对象当客户端请求服务器的一个页面时,会提交一个HTTP请求,服务器收到请求后,返回HTTP响应。request对象对请求信息进行封装,与request对象对应的对象是response对象。response对象的类型为jakarta.servlet.http.HttpServletResponse,对客户端的请求做出动态响应。动态响应通常有:动态改变contentType属性值、设置响应表头和response重定向。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.2.1动态改变contentType属性值JSP页面用page指令标记设置了页面的contentType属性值,response对象按照此属性值的方式对客户端做出响应。在page指令中只能为contentType属性指定一个值。如果想动态改变contentType属性值,换一种方式来响应客户端,可以让response对象调用setContentType(String

s)方法来重新设置contentType的属性值。【例4-4】编写1个JSP页面example4_4.jsp,客户端通过单击页面上的不同按钮,可以改变页面响应的MIME类型。当单击“word”按钮时,JSP页面动态改变contentType的属性值为application/msword,在内置的浏览器中,启用本地的word软件来显示当前页面内容;当单击“excel”按钮时,JSP页面动态改变contentType的属性值为application/vnd.ms-excel,浏览器启用本地的excel软件来显示当前页面内容。页面效果如图4.1(a)~4.1(c)所示。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.2.2设置响应表头response对象可以通过方法setHeader(String

name,String

value)设置指定名字的HTTP文件头值,以此来操作HTTP文件头。如果希望某页面每3秒钟刷新一次,那么在该页面中添加如下代码:response.setHeader("refresh","3");有时候希望从当前页面几秒钟后自动跳转到另一个页面。比如:打开one.jsp页面3秒钟后,自动跳转到another.jsp页面(one.jsp与another.jsp在同一个Web服务目录下)。这该如何实现呢?只需要为one.jsp设置一个响应头即可,也就是在one.jsp页面中添加如下代码:response.setHeader("refresh","3;url=another.jsp");【例4-5】编写1个JSP页面example4_5.jsp,在该页面中使用response对象设置一个响应头“refresh”,其值是“3”。那么用户收到这个头之后,该页面会每3秒钟刷新一次。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.2.3response重定向需要将客户端引导至另一个页面时,可以使用reponse对象的sendRedirect(String

url)方法实现客户端的重定向。例如客户端输入的表单信息不完整或有误时,应该再次被重定向到输入页面。【例4-6】编写两个JSP页面login.jsp和validate.jsp,如果在页面login.jsp中输入正确的密码“nihao2023”,单击按钮后提交给页面validate.jsp,如果输入不正确,重新定向到login.jsp页面。先运行login.jsp页面,页面效果如图4.2(a)~4.2(b)所示。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.2.4实践环节——登录验证编写3个JSP页面login_1.jsp、server.jsp和loginSuccess.jsp。在页面login_1.jsp中输入用户名和密码,单击“提交”按钮将输入的信息提交给页面server.jsp。在server.jsp页面中进行登录验证:如果输入正确(用户名“zhangsan”,密码“123”),提示“成功登录,3秒钟后进入loginSuccess.jsp页面”,如果输入不正确,重新定向到login_1.jsp页面。先运行login_1.jsp页面,页面运行效果如图4.3(a)~4.3(c)所示。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1request对象4.2response对象4.3out对象4.4session对象4.5application对象4.6pageContext对象4.7page对象4.8config对象4.9exception对象4.10JSP的4种作用域《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录4.3out对象out对象的类型为jakarta.servlet.jsp.JspWriter,是一个输出流,用来向客户端浏览器输出数据。【例4-7】编写1个页面example4_7.jsp,在该页面中使用out对象输出信息。序

号方

法功

明1voidclear()

清除缓冲区的内容2voidclearBuffer()清除缓冲区的当前内容3voidflush()

清空流4intgetBufferSize()

返回缓冲区字节数,如不设缓冲区则返回05intgetRemaining()

返回缓冲区剩余大小6booleanisAutoFlush()返回缓冲区满时,是自动清空还是抛出异常7voidclose()关闭输出流8voidprint()

输出各种数据类型9voidnewLine()

输出一个换行符《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1request对象4.2response对象4.3out对象4.4session对象4.5application对象4.6pageContext对象4.7page对象4.8config对象4.9exception对象4.10JSP的4种作用域《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录4.4session对象浏览器与Web服务器之间使用Http协议进行通信。Http是一种无状态协议,客户端向服务器发出请求(request),服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的相关信息。所以服务器必须采取某种手段来记录每个客户端的连接信息。Web服务器可以使用内置对象session来存放有关连接的信息,session对象的类型为jakarta.servlet.http.HttpSession。session对象指的是客户端与服务器端的一次会话,从客户端连到服务器端的一个Web应用程序开始,直到客户端与服务器端断开为止。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.4.1session对象的IDWeb服务器会给每一个用户自动创建一个session对象,为每个session对象分配一个唯一标识的String类型的session

ID,这个ID用于区分其他用户。这样每个用户都对应着一个session对象,不同用户的session对象互不相同。session对象调用getId()方法就可以获取当前session对象的ID。【例4-8】编写3个JSP页面example4_8_1.jsp、example4_8_2.jsp和example4_8_3.jsp,其中,example4_8_2.jsp存放在目录tom中,example4_8_3.jsp存放在目录cat中。用户首先访问example4_8_1.jsp页面,从该页面链接到example4_8_2.jsp页面,然后再从example4_8_2.jsp页面链接到example4_8_3.jsp。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.4.2session对象存取数据使用session对象可以保存用户在访问某个Web服务期间的有关数据。有关处理数据的方法如下:

public

void

setAttribute(Stringkey,Objectobj)将参数obj指定的对象保存到session对象中,key为所保存的对象指定一个关键字。若保存的两个对象关键字相同,则先保存的对象被清除。

publicObjectgetAttibute(Stringkey)获取session中关键字是key的对象。

publicvoidremoveAttribute(Stringkey)从session中删除关键字key所对应的对象。

publicEnumerationgetAttributeNames()产生一个枚举对象,该枚举对象可使用方法nextElemets()遍历session中各个对象所对应的关键字。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.4.2session对象存取数据【例4-9】使用session对象模拟在线考试系统。编写3个JSP页面example4_9_1.jsp、example4_9_2.jsp和example4_9_3.jsp,在example4_9_1.jsp页面中考试,在example4_9_2.jsp页面中显示答题结果,在example4_9_3.jsp页面中计算并公布考试成绩。首先运行example4_9_1.jsp页面,效果如图4.5(a)~4.5(c)所示。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.4.3session对象的生存期限一个用户在某个Web服务中session对象的生存期限依赖于以下几个因素: 用户是否关闭浏览器。

session对象是否调用invalidate()方法。

session对象是否达到设置的最长“发呆”时间。序

号方

法功

明1longgetCreationTime()

返回session创建时间2longgetLastAccessedTime()返回此session里客户端最近一次请求时间3intgetMaxInactiveInterval()

返回两次请求间隔时间(单位是秒)4voidinvalidate()

使session失效5booleanisNew()判断客户端是否已经加入服务器创建的session6voidsetMaxInactiveInterval()设置两次请求间隔时间(单位是秒)《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.4.3session对象的生存期限【例4-10】编写1个JSP页面example4_10.jsp。如果用户是第一次访问该页面,会显示欢迎信息,并输出session对象允许的最长发呆时间、创建时间,以及session对象的ID。在example4_10.jsp页面中,session对象使用setMaxInactiveInterval(int

maxValue)方法设置最长的“发呆”状态时间为10秒。用户如果两次刷新间隔时间超过10秒,用户先前的session被取消,用户将获得一个新的session对象。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.4.4实践环节——购物车用户到便民超市采购商品,购物前需要先登录会员卡号,购物时先将选购的商品放入购物车,最后到柜台清点商品。请借助于session对象模拟购物车,并存储客户的会员卡号和购买的商品名称。会员卡号输入后可以修改,购物车中的商品可以查看。编写程序模拟上述过程。loginID.jsp实现会员卡号输入,shop.jsp实现商品导购,food.jsp实现商品购物,count.jsp实现清点商品。本节实践环节的4个JSP页面都保存在目录practice4中,先运行loginID.jsp页面。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1request对象4.2response对象4.3out对象4.4session对象4.5application对象4.6pageContext对象4.7page对象4.8config对象4.9exception对象4.10JSP的4种作用域《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录4.5.1什么是application不同用户的session对象互不相同,但有时候用户之间可能需要共享一个对象,Web服务器启动后,就产生了这样一个唯一的内置对象application。application对象实现了jakarta.servlet.ServletContext接口。任何用户在访问同一个Web服务的各个页面时,共享一个application对象,直到服务器关闭,这个application对象才被取消。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.5.2application对象存取数据application同session对象一样也可以进行数据存取,处理数据的方法如下:

publicvoidsetAttribute(Stringkey,Objectobj)将参数obj指定的对象保存到application对象中,key为所保存的对象指定一个关键字。若保存的两个对象关键字相同,则先保存的对象被清楚。

publicObjectgetAttribute(Stringkey)获取application中关键字是key的对象。

publicvoidremoveAttribute(Stringkey)从application中删除关键字key所对应的对象。

publicEnumerationgetAttributeNames()产生一个枚举对象,该枚举对象可使用方法nextElemets()遍历application中各个对象所对应的关键字。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.5.2application对象存取数据【例4-11】用application对象模拟“成语接龙”,用户通过example4_11_1.jsp向example4_11_2.jsp页面提交四字成语,example4_11_2.jsp页面获取成语内容后,用同步方法将该成语内容和以前的成语内容进行连接,然后将这些四字成语内容添加到application对象中。页面运行效果如图4.8(a)~4.8(b)所示。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.5.3实践环节——网站访客计数器使用application对象实现网站访客计数器的功能。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1request对象4.2response对象4.3out对象4.4session对象4.5application对象4.6pageContext对象4.7page对象4.8config对象4.9exception对象4.10JSP的4种作用域《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录4.6pageContext对象pageContext对象即页面上下文对象,表示当前页面运行环境,用于获取当前JSP页面的相关信息,它的作用范围为当前JSP页面。pageContext对象的类型为jakarta.servlet.jsp.PageContext。pageContext对象可以访问当前JSP页面的所有内置对象,如表4.4所示。另外,pageContext对象提供了存取属性方法,如表4.5所示。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.6pageContext对象序

号方

法功

明1ServletRequestgetRequest()

获取当前JSP页面的请求对象2ServletResponsegetResponse()获取当前JSP页面的响应对象3HttpSessiongetSession()

获取和当前JSP页面有关的会话对象4ServletConfiggetServletConfig()

获取当前JSP页面的ServletConfig对象5ServletContextgetServletContext()

获取当前JSP页面的运行环境的application对象6ObjectgetPage()获取当前JSP页面的Servlet实体的page对象7ExceptiongetException()获取当前JSP页面的异常对象exception,这时此页面的page指令的isErrorPage属性要设置为true8JspWritergetOut()

获取当前JSP页面的输出流out对象序

号方

法功

明1ObjectgetAttributet(Stringkey,intscope)

获取范围为scope,关键字为key的属性对象2voidsetAttribute(Stringkey,Objectvalue,intscope)以K/V对的方式存储scope范围域属性对象3voidremoveAttribute(Stringkey,intscope)

从scope范围移除关键字为key的属性对象4EnumerationgetAttributeNamesInScope(intscope)

从scope范围中获取所有属性对象对应的关键字《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.6pageContext对象【例4-12】编写1个JSP页面example4_12.jsp,在该页面中使用pageContext对象添加和获取请求域属性值。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.1request对象4.2response对象4.3out对象4.4session对象4.5application对象4.6pageContext对象4.7page对象4.8config对象4.9exception对象4.10JSP的4种作用域《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

目录4.7page对象page对象是一个与Servlet有关的内置对象,它表示JSP文件转译后的Servlet对象,代表JSP页面本身即this。因此它可以调用Servlet类所定义的方法。page对象的类型为jakarta.servlet.jsp.HttpJspPage,在实际应用中,很少在JSP页面使用page对象。【例4-13】编写1个JSP页面example4_13.jsp,在该页面中使用page指令的info属性设置页面的说明信息,并分别使用this和page对象获取页面的说明信息。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.8config对象config对象即页面配置对象,表示当前JSP页面转译后的Servlet的ServletConfig对象,存储着一些初始数据。config对象实现了jakarta.servlet.ServletConfig接口。config对象和page对象一样,也很少被用到。【例4-14】编写1个JSP页面example4_14.jsp,在该页面中使用config对象获得当前JSP页面转译Java后的Servlet对象名。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.9exception对象exception对象是一个与Error有关的内置对象,表示JSP页面产生的异常。如果一个JSP页面需要使用此对象,必须将页面中page指令的isErrorPage属性设置为true,否则无法编译。【例4-15】编写两个JSP页面example4_15.jsp和example4_15_1.jsp。在页面example4_15.jsp中使用语句“exception.printStackTrace(response.getWriter());”输出JSP页面产生的异常信息;在example4_15_1.jsp页面中产生数组越界异常,并设置该页面page指令的errorPage属性值为example4_15.jsp。《JavaWeb开发从入门到实战(第2版·微课视频版)》陈恒

主编,清华大学出版社,2024

4.10JSP的4种作用域对象的作用域就是对象的生命周期和可访问性,在JSP中有4种作用域:页面域、请求域、会话域和应用域。1.页面域页面域(page

scope),它的生命周期是指页面执行期间。存储在页面域的对象只能在它所在页面被访问。2.请求域请求域(request

scope),它的生命周期是指一次请求过程,包括请求被转发(forward)或者被包含(include)的情况。存储在请求域中的对象只有在此次请求过程中才可以被访问。4.会话域会话域(session

scope),它的生命周期

温馨提示

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

评论

0/150

提交评论