1、项目三项目三 JSPJSP内置对象内置对象 3.1 掌握掌握JSP内置对象的语法规范内置对象的语法规范 3.2 精通精通JSP内置对象的应用内置对象的应用 3.3 熟练使用熟练使用JSP开发环境开发环境JSP内置对象是不需要声明和创建就可以在内置对象是不需要声明和创建就可以在JSP页面脚本中使页面脚本中使用的成员变量。通过这些内置对象,可以实现响应客户端的请求、用的成员变量。通过这些内置对象,可以实现响应客户端的请求、向客户端发送数据等功能。本章将详细介绍内置对象的使用方法。向客户端发送数据等功能。本章将详细介绍内置对象的使用方法。2022年8月8日星期一23.1 了解了解JSP内置对象及其相
2、互联系内置对象及其相互联系任务要求:任务要求:本任务要求理解JSP九个内置对象的主要功能,了解它们之间的相互联系。任务实现:任务实现:(一)JSP内置对象概述JSP提供了9个内置对象,这些对象在JSP环境下,不需要预先声明和创建就能直接使用。这9个内置对象分别是:request、response、application、session、out、pageContext、page、exception其功能如表所示。2022年8月8日星期一33.1 了解了解JSP内置对象及其相互联系内置对象及其相互联系2022年8月8日星期一43.1 了解了解JSP内置对象及其相互联系内置对象及其相互联系(二)内置
3、对象之间的联系1.request内置对象与response内置对象JSP页面之所以具备与用户交互的功能,关键在于request内置对象与response内置对象,request内置对象让服务器取得用户在网页表单中所输入的数据内容,response内置对象则提供服务器端程序响应客户端信息所需的功能。2022年8月8日星期一53.1 了解了解JSP内置对象及其相互联系内置对象及其相互联系2.application内置对象与session内置对象 application与session这两个内置对象主要用于记录和处理JSP页面之间的共享数据。由于因特网本身是一种无联机状态的应用程序,当一份网页文件从
4、网站服务器传至客户端的浏览器之后,客户端与服务器之间就没有任何联机状态存在,这个先天缺陷让网页无法存储应用程序运行期间所需的共享数据,application内置对象与session内置对象就是用来解决这样的问题的。2022年8月8日星期一63.1 了解了解JSP内置对象及其相互联系内置对象及其相互联系3.out内置对象JSP页面是一种动态的网页,与HTML这一类静态文件的最大不同,在于同一网页经过程序运算得以根据各种条件及情况进行不同呈现。out内置对象在这一方面提供相关支持,服务器端利用out内置对象将所要输出的内容,在传送至网页的时候动态写入客户端。2022年8月8日星期一73.1 了解了
5、解JSP内置对象及其相互联系内置对象及其相互联系4.config、pageContext以及page内置对象这三个内置对象被用于存取JSP页面运行阶段的各种信息内容,其中config内置对象包含JSP页面被编译成为Servlet之后的相关信息;pageContext内置对象则是提供系统运行期间的各种信息内容的存取操作功能;page内置对象代表目前正在运行的JSP网页对象。5.exception内置对象exception内置对象为JSP提供用于处理程序运行错误的异常对象,此对象搭配功能强大的异常处理机制,运用于JSP网页的程序除错和异常处理上。2022年8月8日星期一83.1 了解了解JSP内置
6、对象及其相互联系内置对象及其相互联系(三)内置对象的生命周期session、application、pageContext和request内置对象实现数据在网页间的传递,但其作用域各不相同,JSP提供了四种属性的保存范围:(1)page 设置的属性只在当前页面有效;(2)request 设置的属性在一次请求范围内有效;(3)session 设置的属性有效期在客户浏览器域服务器一次会话范围内,如果服务器断开连接,那么该属性就失效了;(4)application 设置的属性在服务器一开始执行服务,直到服务器关闭为止。2022年8月8日星期一93.1 了解了解JSP内置对象及其相互联系内置对象及其相
7、互联系各内置对象对应的作用域见表。2022年8月8日星期一103.2 掌握掌握request内置对象的常用方内置对象的常用方法及应用法及应用任务要求:任务要求:本任务要求认知request内置对象的常用方法,并熟练掌握request内置对象的应用。任务实现:任务实现:(一)request内置对象的常用方法request内置对象主要用于接受客户端通过HTTP协议连接传输到服务器端的数据,它通常是HttpServletRequest的子类,其作用域就是一次request请求。request内置对象的常用方法如表所示。2022年8月8日星期一113.2 掌握掌握request内置对象的常用方内置对象
8、的常用方法及应用法及应用2022年8月8日星期一123.2 掌握掌握request内置对象的常用方内置对象的常用方法及应用法及应用(二)request内置对象应用实例【例【例1 1】利用】利用requestrequest内置对象获取信息并显示的实例内置对象获取信息并显示的实例本例包括两个文件:本例包括两个文件:requestLogin.jsprequestLogin.jsp和和requestShowInfo.jsprequestShowInfo.jsp。在。在requestLogin.jsprequestLogin.jsp页面中输入用户名和密码,在页面中输入用户名和密码,在requestSho
9、wInfo.jsprequestShowInfo.jsp页面页面中利用中利用requestrequest内置对象的方法将输入的用户名、密码等信息显示出来。内置对象的方法将输入的用户名、密码等信息显示出来。requestLogin.jsprequestLogin.jsp的代码如图所示:的代码如图所示:2022年8月8日星期一133.2 掌握掌握request内置对象的常用方内置对象的常用方法及应用法及应用2022年8月8日星期一143.2 掌握掌握request内置对象的常用方内置对象的常用方法及应用法及应用requestShowInfo.jsprequestShowInfo.jsp的代码如图的
10、代码如图3.23.2所示:所示:2022年8月8日星期一153.2 掌握掌握request内置对象的常用方内置对象的常用方法及应用法及应用requestLogin.jsprequestLogin.jsp的运行效果如图所示。的运行效果如图所示。2022年8月8日星期一163.2 掌握掌握request内置对象的常用方内置对象的常用方法及应用法及应用单击单击“OK”“OK”按钮后出现所示的结果。按钮后出现所示的结果。2022年8月8日星期一173.3 掌握掌握response内置对象的常用方内置对象的常用方法及应用法及应用任务要求:任务要求:本任务要求认知response内置对象的常用方法,并熟练
11、掌握response内置对象的应用。任务实现:任务实现:(一)response内置对象常用方法response内置对象用于将服务器端数据发送给客户端以响应客户端的请求。response内置对象的常用方法如表所示。2022年8月8日星期一183.3 掌握掌握response内置对象的常用方内置对象的常用方法及应法及应(二)response内置对象应用实例【例【例2 2】利用】利用responseresponse内置对象控制刷新频率的实例内置对象控制刷新频率的实例在在responseRefresh.jspresponseRefresh.jsp页面中设置页面刷新的频率,并在页面中实时页面中设置页面刷
12、新的频率,并在页面中实时显示当时的时间。显示当时的时间。responseRefresh.jspresponseRefresh.jsp的代码如图所示:的代码如图所示:2022年8月8日星期一193.3 掌握掌握response内置对象的常用方内置对象的常用方法及应法及应2022年8月8日星期一203.3 掌握掌握response内置对象的常用方内置对象的常用方法及应法及应 responseRefresh.jsp responseRefresh.jsp的运行效果如图所示:的运行效果如图所示:2022年8月8日星期一213.4 掌握掌握out内置对象的常用方法及内置对象的常用方法及应用应用任务要求:
13、任务要求:本任务要求认知out内置对象的常用方法,并熟练掌握out内置对象的应用。任务实现:任务实现:(一)out内置对象常用方法out内置对象是JspWriter类的实例,是向客户端输出内容常用的对象。out内置对象的常用方法如表所示。2022年8月8日星期一223.4 掌握掌握out内置对象的常用方法及内置对象的常用方法及应用应用2022年8月8日星期一233.4 掌握掌握out内置对象的常用方法及内置对象的常用方法及应用应用(二)out内置对象应用实例【例【例3 3】利用】利用outout内置对象进行输出的实例内置对象进行输出的实例本例在本例在out.jspout.jsp中,利用中,利用
14、outout内置对象的内置对象的println(datatype data)println(datatype data)方法方法将指定内容输出,并利用将指定内容输出,并利用outout内置对象的内置对象的getBuffersize()getBuffersize()和和getRemaining()getRemaining()方法分别获取缓冲区及其剩余空间的大小。方法分别获取缓冲区及其剩余空间的大小。out.jspout.jsp的代码如图所示:的代码如图所示:2022年8月8日星期一243.4 掌握掌握out内置对象的常用方法及内置对象的常用方法及应用应用out.jsp页面的运行效果如图所示:20
15、22年8月8日星期一253.5 掌握掌握session内置对象的常用方内置对象的常用方法及应用法及应用任务要求:任务要求:本任务要求认知session内置对象的常用方法,并熟练掌握session内置对象的应用。任务实现:任务实现:(一)session的概念 session(会话)一词其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这一系列过程可以称之为一个session。在网络应用中,session对象存储特定用户会话的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在session中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求
16、来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。2022年8月8日星期一263.5 掌握掌握session内置对象的常用方内置对象的常用方法及应用法及应用(二)(二)sessionsession内置对象常用方法内置对象常用方法2022年8月8日星期一273.5 掌握掌握session内置对象的常用方内置对象的常用方法及应用法及应用【例【例4 4】利用】利用sessionsession内置对象统计访问站点人数的内置对象统计访问站点人数的实例实例本例在本例在sessionCount.jspsess
17、ionCount.jsp中,利用中,利用sessionsession内置对内置对象中的象中的isNew()isNew()方法判断当前是否为一个新创的方法判断当前是否为一个新创的sessionsession,如果是则访问数加,如果是则访问数加1 1,否则访问数不变。,否则访问数不变。seesionCount.jspseesionCount.jsp的代码如图所示:的代码如图所示:2022年8月8日星期一283.5 掌握掌握session内置对象的常用方内置对象的常用方法及应用法及应用2022年8月8日星期一293.5 掌握掌握session内置对象的常用方内置对象的常用方法及应用法及应用第一次运行
18、第一次运行sessionCount.jspsessionCount.jsp时,效果如图所示。时,效果如图所示。2022年8月8日星期一303.5 掌握掌握session内置对象的常用方内置对象的常用方法及应用法及应用在浏览器中刷新页面时,由于没有创建新的会话,所以访问人数并不会在浏览器中刷新页面时,由于没有创建新的会话,所以访问人数并不会有变化;当关闭浏览器(即关闭客户端与服务器当前对话)后,再次打有变化;当关闭浏览器(即关闭客户端与服务器当前对话)后,再次打开该页面,访问人数才会增加,如图所示。开该页面,访问人数才会增加,如图所示。2022年8月8日星期一313.6 掌握掌握applicat
19、ion内置对象的常用内置对象的常用方法及应用方法及应用任务要求:任务要求:本任务要求认知application内置对象的常用方法,并熟练掌握application内置对象的应用。任务实现:任务实现:(一)application内置对象常用方法在前一个任务中,我们讲了在JSP页面中使用session来存储每个用户的私有信息,但是有时候服务器需要管理面向整个应用的参数,使得每个用户都能活的相同的参数值,这时我们就需要用到application内置对象。application对服务器而言,可以视为一个所有联机用户共享的数据存取区,application中的变量数据在程序设置其值时被初始化,而当网页服
20、务器被关闭,或者超过预设时间而未有任何用户联机时将自动消失。对每一个联机浏览网页的用户来说,application对象用于存储其共享数据,无论是网站中任何一个网页,用户存取的数据内容均相同,可以将其视为传统应用程序中的全局共享数据。2022年8月8日星期一323.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用任务要求:任务要求:本任务要求认知application内置对象的常用方法,并熟练掌握application内置对象的应用。任务实现:任务实现:(一)application内置对象常用方法在前一个任务中,我们讲了在JSP页面中使用session来存储每个
21、用户的私有信息,但是有时候服务器需要管理面向整个应用的参数,使得每个用户都能活的相同的参数值,这时我们就需要用到application内置对象。application对服务器而言,可以视为一个所有联机用户共享的数据存取区,application中的变量数据在程序设置其值时被初始化,而当网页服务器被关闭,或者超过预设时间而未有任何用户联机时将自动消失。对每一个联机浏览网页的用户来说,application对象用于存储其共享数据,无论是网站中任何一个网页,用户存取的数据内容均相同,可以将其视为传统应用程序中的全局共享数据。application内置对象的常用方法如下表所示。2022年8月8日星期一
22、333.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用2022年8月8日星期一343.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用(二)application内置对象应用实例【例【例5 5】利用】利用applicationapplication内置对象实现共享留言板的实例内置对象实现共享留言板的实例本例在本例在inputMessage.jspinputMessage.jsp中,通过表单呈现出留言板,并搜集用户填写中,通过表单呈现出留言板,并搜集用户填写的内容。在的内容。在checkMessage.jspcheckMess
23、age.jsp中,接受表单中传递过来的信息,加以修中,接受表单中传递过来的信息,加以修饰,并通过饰,并通过applicationapplication内置对象中的内置对象中的setAttribute(String name)setAttribute(String name)方方法将用户填写的信息存入相应的全局变量。在法将用户填写的信息存入相应的全局变量。在showMessage.jspshowMessage.jsp中,通中,通过过applicationapplication内置对象中的内置对象中的getAttribute(String name)getAttribute(String name
24、)获取全局变获取全局变量的值,并以适当的形式显示出来。相应的代码依次如下图所示。量的值,并以适当的形式显示出来。相应的代码依次如下图所示。2022年8月8日星期一353.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用2022年8月8日星期一363.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用2022年8月8日星期一373.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用2022年8月8日星期一383.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用运行运
25、行inputMessage.jspinputMessage.jsp的效果如图所示的效果如图所示2022年8月8日星期一393.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用用户填写相应的信息后单击用户填写相应的信息后单击“留言留言”按钮,则会将信息传送至按钮,则会将信息传送至checkMessage.jspcheckMessage.jsp,运行效果如图所示,单击,运行效果如图所示,单击“返回留言板返回留言板”,就会通,就会通过超级链接返回留言界面(过超级链接返回留言界面(inputMessage.jspinputMessage.jsp页面)。页面)。2022
26、年8月8日星期一403.6 掌握掌握application内置对象的常用内置对象的常用方法及应用方法及应用在在inputMessage.jspinputMessage.jsp页面中单击页面中单击“查看留言板查看留言板”,则可以查看所有用户,则可以查看所有用户的历史留言,如图所示。的历史留言,如图所示。2022年8月8日星期一413.7 拓展实训拓展实训任务要求:任务要求:完成一个网上调查网站,进一步掌握JSP的内置对象。任务实现:任务实现:(一)问卷调查网页的运行效果人们在日常生活当中,经常会参与一些问卷调查。本任务是完成一个类似网上调查的网站,效果如下图所示。2022年8月8日星期一423.
27、7 拓展实训拓展实训首先需要受访者填写姓名并选择性别首先需要受访者填写姓名并选择性别2022年8月8日星期一433.7 拓展实训拓展实训受访者选择自己的业余爱好,当单击受访者选择自己的业余爱好,当单击“下一步下一步”2022年8月8日星期一443.7 拓展实训拓展实训页面能够显示出用户选择的信息,页面能够显示出用户选择的信息,同时将当前调查的统计结果显示出来同时将当前调查的统计结果显示出来2022年8月8日星期一453.7 拓展实训拓展实训页面能够显示出用户选择的信息,同时将当前调查的统计结果显示出来页面能够显示出用户选择的信息,同时将当前调查的统计结果显示出来2022年8月8日星期一463.
28、7 拓展实训拓展实训(二)功能设计1.创建工程启动IntelliJ IDEA,创建Web应用chapter3。展开工程,在web文件夹下创建images子文件夹,并将top.jpg导入到images文件夹中。在web文件夹下创建JSP类型文件index.jsp、hobby.jsp、result.jsp和HTML类型文件top.html。2.top.html功能设计 如图2-10、图2-11、图2-12、图2-13所示,该问卷调查网站每个页面的题头部分都有相同的Logo图片,我们将这一部分单独写成一个页面top.html,将Logo图片top.jpg插入到top.html中,并通过include
29、指令标记将top.html插入到每一个网页中。2022年8月8日星期一473.7 拓展实训拓展实训2.index.jsp功能设计主页面index.jsp的运行效果如图2-10所示,其中,首先通过page指令设定页面的相关属性,并通过include指令标记将top.html插入到页面中,再建立表单,将“姓名”文本框命名为name,将“性别”单选按钮命名为sex,取值分别为male 和female,默认值为“男”,处理表单信息的页面为hobby.jsp。代码如下:2022年8月8日星期一483.7 拓展实训拓展实训2022年8月8日星期一493.7 拓展实训拓展实训4.result.jsp功能设计
30、获取hobby.jsp页面传递过来的信息,由于需要对所有受访者的选择结果进行统计,因此需要将信息保存到application中,以实现不用用户之间统计数据的共享。将存在session中的用户姓名及性别显示在“,你所感兴趣的项目如下:”之前,并利用循环将数组中存储的受访者选择显示出来。最后,将存储在application中的调查历史结果显示出来。代码如下:2022年8月8日星期一503.7 拓展实训拓展实训3.hobby.jsp功能设计在hobby.jsp中,获取index.jsp页面传递过来的信息,并保存在session中,并通过表达式在“,你好,请继续完成调查”的前面将受访者的信息显示出来,
31、如图2-11所示。代码如下:2022年8月8日星期一513.7 拓展实训拓展实训2022年8月8日星期一523.7 拓展实训拓展实训4.result.jsp功能设计获取hobby.jsp页面传递过来的信息,由于需要对所有受访者的选择结果进行统计,因此需要将信息保存到application中,以实现不用用户之间统计数据的共享。将存在session中的用户姓名及性别显示在“,你所感兴趣的项目如下:”之前,并利用循环将数组中存储的受访者选择显示出来。最后,将存储在application中的调查历史结果显示出来。代码如下:2022年8月8日星期一533.7 拓展实训拓展实训2022年8月8日星期一54课后习题课后习题1.简述JSP九大内置对象的基本功能。2.试比较seesion内置对象、page内置对象、request内置对象和application内置对象的作用范围。3.将例3.4中的“session”换成“application”运行效果会有何不同?为什么会有这样的差异?4.怎样使用request内置对象、session内置对象、application内置对象进行参数存取?谢谢 谢谢!