1、第5章 JSP内置对象,本章将介绍JSP的内置对象,并对JSP内置对象进行分类。将 详细介绍其中的JSP内置对象,包括request、response、out、 session等等。 熟练使用JSP内置对象保存属性。 熟练JSP属性保存的四个范围。 熟练使用request对象取得参数值。 了解其他各对象的常用方法。,5.1 JSP内置对象分类,根据各对象的作用不同,可以将这九个对象分为如下四类。 第一类:与Servlet有关的内置对象。 包括page和config两个对象。 第二类:与Input/Output有关的内置对象 包括out、request和response三个对象。 第三类:与Co
2、ntext有关的内置对象 包括session、application和pageContext三个对象。 第四类:与Error有关的内置对象。 仅包括exception这一个对象。,5.2 属性保存范围,在JSP中可以通过setAttribute()和getAttribute()这两个方法来设置和取得属性,从而实现数据的共享。同样JSP中提供了四种属性保存范围,分别为page、request、session以及application。 5.2.1 page范围所谓page范围,就是指设置的属性只在当前页面有效。通过使用pageContext的setAttribute()方法来设置属性,并通过pa
3、geContext的getAttribute()方法来取得属性。 示例代码 PageScopeDemo.jsp 5.2.2 request范围所谓request范围,就是指属性在一次请求范围内有效。如果页面从一个页面跳转到另一个页面,那么该属性就失效了。这里所指的跳转是指客户端跳转,比如客户单击超链接跳转到其他页面,或者通过浏览器地址栏浏览其他网页。如果使用服务器端跳转,则该属性仍然有效。通过使用request的setAttribute()方法来设置属性,并通过request的getAttribute()方法来取得属性。 示例代码 RequestScopeDemo.jsp,5.2 属性保存范围
4、,5.2.3 session范围所谓session范围,也就是指客户浏览器与服务器一次会话范围内,如果和服务器断开连接,那么这个属性也就失效了。通过使用session的setAttribute()方法来设置属性,并通过session的getAttribute()方法来取得属性。 示例代码 PageScopeDemo.jsp 5.2.4 application范围所谓application范围,也就是指在整个服务器范围,直到服务器停止以后才会失效。通过使用application的setAttribute()方法来设置属性,并通过application的getAttribute()方法来取得属性。
5、 示例代码 ApplicationScopeDemo.jsp 5.2.5 移除属性 只需调用相应对象的removeAttribute()方法就可以移除指定属性。 示例代码 RemoveAttributeDemo.jsp,5.3 request对象,request对象不但可以用来设置和取得request范围变量,还可以用来获得客户端请求参数、请求的来源、表头、cookies等。该对象封装了用户的提交信息,可以通过调用该对象的相应的方法来获取到用户的提交信息。 5.3.1 获得客户端请求参数 示例代码 RequestDemo.jsp 5.3.2 获得所有的参数名称 示例代码 RequestDemo
6、2.jsp RequestDemo3.jsp 5.3.3 获得参数的所有参数值 示例代码 RequestDemo4.jsp 5.3.4 获得封装所有参数值的Map 示例代码 RequestDemo5.jsp,5.3.5 request对象的其他方法,续表,5.4 response对象,response对象用来给客户端传送输出信息。可以对用户的请求作出相应,并向客户端发送数据。可以通过Response对象来添加新的Cookie或者数据标记,或者是改变页面的MIME内容类型。 5.4.1 实现页面跳转可以通过response对象的sendRedirect()方法设置页面重定向,从而实现页面跳转。这
7、种跳转将改变浏览器地址栏信息,所以也称为客户端跳转。 示例代码 ResponseDemo.jsp 5.4.2 实现页面自动刷新可以通过response对象的addIntHeader()方法添加一个标题为Refresh的标头,并指定刷新间隔时间,从而实现页面自动刷新。 示例代码 ResponseDemo2.jsp 5.4.3 实现页面自动跳转可以通过response对象的addHeader()方法添加一个标题为Refresh的标头,并指定页面跳转时间及跳转页面,从而实现页面自动跳转。 示例代码 ResponseDemo3.jsp,5.5 out对象,out对象用来向网页输出信息。该对象主要是向客
8、户端发送各种格式的数据,而且该对象以对服务器上的输入缓冲区进行管理。 5.5.1 使用out对象进行页面输出通过out对象的print()方法和println()方法进行页面输出,不同的println()方法输出完成后,会在字符串后面添加换行标记。 示例代码 OutDemo.jsp 5.5.2 使用out对象求得缓冲区使用大小通过out对象的getBufferSize ()方法可以获得缓冲区的大小,而通过getRemaining()方法可以获得缓冲区剩余大小。通过这两个值可以很容易地求得缓冲区使用大小。 示例代码 OutDemo2.jsp,5.6 session对象,session对象用来表示
9、用户的会话状况,一般用于保存用户的各种信息,直到生命周期超时或者被认为释放掉为止。当加载第一个JSP页面的时候会自动创建一个Session对象,在此期间完成会话的管理。 5.6.1 设置并获得session生命周期通过session对象的setMaxInactiveInterval()方法可以设置session的生命周期,可以通过其getMaxInactiveInterval()方法来获得session的生命周期。 示例代码 SessionDemo.jsp 5.6.2 获得session的其他信息通过调用session对象的其他方法可以获得与session相关的更多信息,如session的ID
10、、session的生成时间等。 示例代码 SessionDemo2.jsp,5.7 application对象,application对象用来取得和设置Servlet的相关信息。application对象的生命周期是从服务器启动产生直到服务器关闭为止,在此期间所有的用户会共享这一个Application对象。该对象只可以由服务器来创建和清除,而用户不可以对其进行创建和清除操作。 5.7.1 通过application对象获得服务器版本通过application对象的getMajorVersion()方法和getMinorVersion()方法,可以很方便地获得主要的Servlet API版本和
11、次要的Servlet API版本。同时通过其getServerInfo()方法,可以获得服务器版本。 示例代码 ApplicationDemo.jsp 5.7.2 通过application对象获得其他信息通过调用application对象的其他方法可以获得更多信息,如文件的MIME类型、获得指定Local的Application context等。 示例代码 ApplicationDemo2.jsp,5.8 pageContext对象,pageContext对象不但可以用来设置page范围的属性,同样也可以用来设置其他范围属性,不过需要指定范围参数。通过pageContext对象还可以获得其
12、他内置对象。,5.8 pageContext对象,5.9 page对象,page对象代表JSP转译后的Servlet,通过page对象可以非常方便地调用Servlet类中定义的方法。示例代码 pageDemo.jsp,5.10 config对象,config对象可以用来获得Servlet的配置信息,该对象允许JSP开发人员访问Servlet或者是JSP引擎的初始化参数,这样就可以获取例如路径或文件位置的全局信息。,5.11 exception对象,exception对象用来处理错误异常,如果要使用exception对象,必须指定page中的isErrorPage属性值为“true”。通常在JS
13、P开发中需要在页面中加入page指令的errorPage属性来将其指向一个专门处理错误的页面。示例代码 ExceptionDemo01.jsp ExceptionDemo02.jsp,5.12 综合练习,下面来看一个简单的用户登录案例 ,该案例包含4个文件,一个是登录表 单页LoginForm.jsp,一个是登录判断页,一个是登录成功页,一个是登录失败 页。,5.13 小结,JSP包含的内置对象非常多,其中最重要的是通过内置对象设置属性保存范围。这4个属性保存范围对于后面的学习非常重要,建议读者对照示例认真学习,直到完全弄懂。使用request对象获得客户端请求参数同样也是学习的重点,至于其他的对象及属性,读者只要有一个印象即可。,