jsp学习之(三)--------- jsp隐式对象

1.0 概述

jsp隐式对象就是jsp容器提供的不用声明就可以在jsp页面的Java程序块和表达式部分直接使用的对象,也称为jsp内置对象

1.1简介

我们知道JSP中的内容就只有两种,模版数据和元素,元素就包括了指令,脚本,标签(行为),脚本会慢慢被标签全部代替,也就是说JSP中基本上不会嵌入Java代码,但是我们也知道JSP会转换为servlet

Servlet中,输出数据时,都需要通过response.getWrite();但是在JSP中,直接使用out对象进行输出,为什么呢?这就是因为outJSP的一个隐藏对象,JSP中内置了9个隐藏对象,使得JSPServlet使用起来更简单,更方便。

1.2分类

 

隐式对象所属接口一览表

jsp学习之(三)--------- jsp隐式对象

 

按照作用分

jsp学习之(三)--------- jsp隐式对象

2.0输入输出对象(out,request,response)

2.1 out对象

  jsp学习之(三)--------- jsp隐式对象

    1. request对象

常用方法如下

jsp学习之(三)--------- jsp隐式对象

 request对象应用实例

jsp学习之(三)--------- jsp隐式对象

运行效果如图:

jsp学习之(三)--------- jsp隐式对象

request.setCharacterEncodiong,request.setAttribute,request.getAttribute方法的应用

jsp学习之(三)--------- jsp隐式对象

 

运行效果如下:

jsp学习之(三)--------- jsp隐式对象

2.3 response对象

response对象提供的方法

jsp学习之(三)--------- jsp隐式对象 jsp学习之(三)--------- jsp隐式对象

response应用实例(实现页面的刷新)

jsp学习之(三)--------- jsp隐式对象

实现效果如下

jsp学习之(三)--------- jsp隐式对象

 

sendRedirect实现页面的重定向

jsp学习之(三)--------- jsp隐式对象jsp学习之(三)--------- jsp隐式对象

 

实现效果如下

 

jsp学习之(三)--------- jsp隐式对象

我们可以看到页面由responsDemo02跳转到了responseDemo02_01

 

cookie实现客户端用户信息的保存

 

  1. login.jsp 用户登录界面

jsp学习之(三)--------- jsp隐式对象

jsp学习之(三)--------- jsp隐式对象

实现效果如下图所示

jsp学习之(三)--------- jsp隐式对象

 

  1. cookieSave.jsp (处理cookie值,,并添加超链接跳转到另外一个页面查看登录页面信息)

jsp学习之(三)--------- jsp隐式对象jsp学习之(三)--------- jsp隐式对象

实现效果如下图所示

jsp学习之(三)--------- jsp隐式对象

  1. cookieQuer.jsp(显示cookie保存的用户名密码信息)

jsp学习之(三)--------- jsp隐式对象jsp学习之(三)--------- jsp隐式对象

实现效果如下图所示

选择保存密码

jsp学习之(三)--------- jsp隐式对象

选择不保存密码

jsp学习之(三)--------- jsp隐式对象

3.0 作用域对象(session对象,application对象,pageContext对象)

3.1 session对象

session对象是由服务器自动创建与用户请求相关的对象。服务器会为每一个用户创建一个session对象用来保存用户信息,跟踪用户操作。该对象内部使用Map类来保存数据,因此它的数据类型是key-value形式。对应javax.servlet.http.HttpSession.class对象。

 

   服务器为不同的浏览器在内存中创建用于保存数据的对象叫seesion。并将这个对象的唯一身份认证SessionId(存放在cookie中)返回给浏览器,浏览器将这个SessionId保存,当浏览器向服务器再次发送请求的时候,连同这个cookie一起发送过去,由此找到对应的session。

session对象提供的方法

方法名

功能介绍

long getCreateTime()

获取session对象建立的时间;返回的是从1970年1月1日到建立时间的毫秒数

 

String getId()

获取当前session对象的ID号,这个ID是唯一的,用来表示每一个登录到IE浏览器的用户;当刷新浏览器时,这个值是不变的;但是当关闭当前浏览器再重新打开一个浏览器时,这个值就会改变

Enumeration getAttributeNames()

获取session对象存储的所有值的名字,返回的是一个Enumeration的实例

void removeAttribute()

删除session对象中名字为name的存储值

void Invalidate()

中断当前的session对象

 

Boolean isNew()

判断当前session对象是否是一个新创建的session对象

void setMaxInactiveInterval(int interval)

用来指定时间,以秒为单位,servlet容器将会再这段时间保存会话有效

int getMaxInactiveInterval()

返回最大时间间隔,以秒为单位,serlet容器将会在这段时间内保存会话打开

 

 

Session对象实例

login.jsp

jsp学习之(三)--------- jsp隐式对象

jsp学习之(三)--------- jsp隐式对象

loginSuccess.jsp

jsp学习之(三)--------- jsp隐式对象

jsp学习之(三)--------- jsp隐式对象

五秒之后刷新界面(会话有效期为5s,5s之后页面信息自动销毁)

jsp学习之(三)--------- jsp隐式对象

 

3.2 application对象

该对象主要用于多个jsp页面或者servlet之间共享变量,负责提供应用程序在服务器中运行是的一些全局信息

 

jsp学习之(三)--------- jsp隐式对象

 

Application对象方法运用

jsp学习之(三)--------- jsp隐式对象

运行结果如下,在刷新之后数目会增加

jsp学习之(三)--------- jsp隐式对象

jsp学习之(三)--------- jsp隐式对象

 

3.3 pageContext对象(该对象比较重要)

PageContext对象是jsp页面本身的上下文,它的作用范围是在同一页面使用它可以访问页面作用域中定义的所有隐式对象,pageContext自身还是一个域对象,可用来保存数据,通过pageContext域对象还可以操作另外三个作用域(Request,Session,ServletContext)

 

pageContext常用方法

 

 这个功能就比较强大了,基本上什么他都有,因为是它是JSP页面的管理者(上下文),所以JSP中的内置对象呀,它统统能够获得,下面介绍它的api

  1)获得其它八大内置对象 getXxx()

    在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。

    pageContext.getOut();  //获得out对象

    pageContext.getApplication();  //获得application对象

    等等....

  2)对作用域的属性进行操作(四大作用域)

    对默认作用域的属性进行操作。page

    Object getAttribute(String name);  //获得page作用域数据

    void setAttribute(String name,Object o);  //page作用域设置内容

    void removeAttribute(String name);  //page作用域移除内容

  3)对指定作用域的属性进行操作

    Object getAttribute(String name,int Scope);  //获得 指定作用域中的数据

    void setAttribute(String name,Object oint Scope);  //给指定作用域设置内容

    void removeAttribute(String name,int Scope);     // 移除指定作用域的内容(page/request/session/application

  4)提供作用域常量

    PageContext.PAGE_SCOPE  page

    PageContext.REQUEST_SCOPE  request      

    PageContext.SESSION_SCOPE  response

    PageContext.APPLICATION_SCOPE  application

 

page中最厉害的方法是:

      findAttribute(String name);  //自动从page request session application依次查找,找到了就取值,结束查找。

 

jsp学习之(三)--------- jsp隐式对象

 

 在2.jsp中

   jsp学习之(三)--------- jsp隐式对象

 

 

 

 

 

 

pageContext对象方法应用

1.与request对象作用域比较

pageContextDame01.jsp

jsp学习之(三)--------- jsp隐式对象

pageContext01_01.jsp

jsp学习之(三)--------- jsp隐式对象

运行效果如图

jsp学习之(三)--------- jsp隐式对象

结果分析:pageContext对象保存的属性只在当前页面有限,页面跳转后为空,request对象在当前request请求范围内有效。

 

  1. 与session,application对象作用域比较

jsp学习之(三)--------- jsp隐式对象

结果展示

jsp学习之(三)--------- jsp隐式对象

jsp学习之(三)--------- jsp隐式对象

 

jsp学习之(三)--------- jsp隐式对象

结果分析:session对象(作用范围为一段用户持续和服务器所连接的时间),application对象(从服务器开始到关闭)比pageContext(只适用于当前页面)生命周期要长,而application生命周期最长。

      jsp学习之(三)--------- jsp隐式对象

 

4.1 config对象

  类型:ServletConfig

  能够获取servlet的初始化参数,获取servletContext对象,获取servletName

  这个我在servlet中详细的讲解了,可以去查看!

4.2、exception异常对象

  包含了异常的信息

  使用它,必须结合page指令中的isErrorPage属性和errorPage属性

  exception.jsp  抛异常的一个NullPointException,并且跳转到error.jsp错误显示页面  errorPage属性的意思是如果发生未捕捉到的异常,将会跳转到error.jsp页面

  举例:

    jsp学习之(三)--------- jsp隐式对象

    error.jsp  isErrorPage属性说明该页面是一个错误显示页面,则可以使用exception对象

    jsp学习之(三)--------- jsp隐式对象

  访问:访问http://localhost:8080/Web_Jsp/exception.jsp

    jsp学习之(三)--------- jsp隐式对象