JSP入门必知:域和对象

什么是内置对象?

在jsp开发中会频繁使用到一些对象,如ServletContext、HttpSession、PageContext等.
如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.
SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象.

在servlet程序中,如果开发者希望使用session对象,必须通过request.getSession()来得到session对象;而在jsp程序中,开发中可直接使用session(系统帮我们创建好的session对象的名字就叫session)调用相应的方法即可,如:session.getId().

JSP有九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用。

九大内置对象简介:

  • out对象:用于向客户端、浏览器输出数据。
  • request对象:封装了来自客户端、浏览器的各种信息。
  • response对象:封装了服务器的响应信息。
  • exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
  • config对象:封装了应用程序的配置信息。
  • page对象:指向了当前jsp程序本身。
  • session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
  • application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
  • pageContext对象:提供了对jsp页面所有对象以及命名空间的访问。

JSP九大内置对象分类:

  • 输入输出对象:out对象、response对象、request对象
  • 通信控制对象:pageContext对象、session对象、application对象
  • Servlet对象:page对象、config对象
  • 错误处理对象:exception对象

内置对象解析:

out对象

out对象是一个输出流,用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。

out对象方法:

  • printprintln:输出数据
  • newLine:输出换行字符
  • flush:输出缓冲区数据
  • close:关闭输出流
  • clear:清除缓冲区中数据,但不输出到客户端
  • clearBuffer:清除缓冲区中数据,输出到客户端
  • getBufferSize:获得缓冲区大小
  • getRemaining:获得缓冲区中没有被占用的空间
  • isAutoFlush:是否为自动输出

request对象

request对象封装了从客户端到服务器发出的请求信息。

request对象方法:

  • isUserInRole:判断认证后的用户是否属于某一成员组
  • getAttribute:获取指定属性的值,如该属性值不存在返回Null
  • getAttributeNames:获取所有属性名的集合
  • getCookies:获取所有Cookie对象
  • getCharacterEncoding:获取请求的字符编码方式
  • getContentLength:返回请求正文的长度,如不确定返回-1
  • getHeader:获取指定名字报头值
  • getHeaders:获取指定名字报头的所有值,一个枚举
  • getHeaderNames:获取所有报头的名字,一个枚举
  • getInputStream:返回请求输入流,获取请求中的数据
  • getMethod:获取客户端向服务器端传送数据的方法
  • getParameter:获取指定名字参数值
  • getParameterNames:获取所有参数的名字,一个枚举
  • getParameterValues:获取指定名字参数的所有值
  • getProtocol:获取客户端向服务器端传送数据的协议名称
  • getQueryString:获取以get方法向服务器传送的查询字符串
  • getRequestURI:获取发出请求字符串的客户端地址
  • getRemoteAddr:获取客户端的IP地址
  • getRemoteHost:获取客户端的名字
  • getSession:获取和请求相关的会话
  • getServerName:获取服务器的名字
  • getServerPath:获取客户端请求文件的路径
  • getServerPort:获取服务器的端口号
  • removeAttribute:删除请求中的一个属性
  • setAttribute:设置指定名字参数值

response对象

response对象主要用于对客户端的请求进行回应。
以及处理http的连接信息,例如设置http文件头,设置cookie对象等。

response对象方法:

  • addCookie:添加一个Cookie对象
  • addHeader:添加Http文件指定名字头信息
  • containsHeader:判断指定名字Http文件头信息是否存在
  • encodeURL:使用sessionid封装URL
  • flushBuffer:强制把当前缓冲区内容发送到客户端
  • getBufferSize:返回缓冲区大小
  • getOutputStream:返回到客户端的输出流对象
  • sendError:向客户端发送错误信息
  • sendRedirect:把响应发送到另一个位置进行处理
  • setContentType:设置响应的MIME类型
  • setHeader:设置指定名字的Http文件头信息

session对象

session对象:是一个jsp内置对象,它在第一个jsp被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束(或者超时),被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要创建session对象。
http是无状态的连接协议,需要使用session来存放用户每次的登陆信息

session对象方法:

  • getAttribute:获取指定名字的属性
  • getAttributeNames:获取session中全部属性名字,一个枚举
  • getCreationTime:返回session的创建时间
  • getId:获取会话标识符
  • getLastAccessedTime:返回最后发送请求的时间
  • getMaxInactiveInterval:返回session对象的生存时间单位千分之一秒
  • invalidate:销毁session对象
  • isNew:每个请求是否会产生新的session对象
  • removeAttribute:删除指定名字的属性
  • setAttribute:设定指定名字的属性值

application对象

application对象代表当前的应用程序。存在于服务器的内存空间中。应用一旦启动便会自动生成一个application对象。如果应用没有被关闭,此application对象便一直会存在。直到应用被关闭application的生命周期比session更长。
应用:为多个用户共享全局信息。比如当前的在线人数等。

application对象方法:

  • getAttribute:获取应用对象中指定名字的属性值
  • getAttributeNames:获取应用对象中所有属性的名字,一个枚举
  • getInitParameter:返回应用对象中指定名字的初始参数值
  • getServletInfo:返回Servlet编译器中当前版本信息
  • setAttribute:设置应用对象中指定名字的属性值

config对象

config对象表示当前jsp程序的配置信息,一般项目中,jsp被用作模版技术,也就是位于表示层
而位于表示层的jsp文件一般是不需要配置信息的所以此对象在jsp程序中其实很少使用.
config对象是servletConfig类的一个实例。

config对象方法:

  • getServletContext:返回所执行的Servlet的环境对象
  • getServletName:返回所执行的Servlet的名字
  • getInitParameter:返回指定名字的初始参数值
  • getInitParameterNames:返回该JSP中所有的初始参数名,一个枚举

page对象

page对象有点类似与java编程中的this指针,他指向了当前jsp页面本身。
page对象是java.lang.object类的一个实例
page对象的方法:

  • toString:将当前项目的信息打印出来
  • getClass:返回当前的object类
  • hashCode:返回page对象的hashCode值
  • equals:用于比较对象是否与当前对象相同

exception对象

exception对象表示jsp引擎在执行代码时抛出的异常
如果想要使用exception对象,那么需要配置编译指令的isErrorPage属性为true

即在页面指令中设置:<%@pageisErrorPage=“true”%>

pageContext对象

pageContetx对象是jsp页面中所有对象功能的最大集成着。
使用他可以访问所有的jsp内置对象。

pageContext对象方法:

  • forward:重定向到另一页面或Servlet组件
  • getAttribute:获取某范围中指定名字的属性值
  • findAttribute:按范围搜索指定名字的属性
  • removeAttribute:删除某范围中指定名字的属性
  • setAttribute:设定某范围中指定名字的属性值
  • getException:返回当前异常对象
  • getRequest:返回当前请求对象
  • getResponse:返回当前响应对象
  • getServletConfig:返回当前页面的ServletConfig对象
  • getServletContext:返回所有页面共享的ServletContext对象
  • getSession:返回当前页面的会话对象

JSP中四大域对象

分类:

  • ServletContextcontext
  • HttpServletRequetrequest
  • HttpSessionsession域--前三种在学习Servlet时就能接触到
  • PageContextpage域--jsp学习的

域对象的作用:

  • 保存数据
  • 获取数据
  • 共享数据

保存数据:

pageContext.setAttribute("内容");//默认保存到page域
pageContext.setAttribute("内容",域范围常量);//保存到指定域中

四个域常量:

  • PageContext.PAGE_SCOPE
  • PageContext.REQUEST_SCOPE
  • PageContext..SESSION_SCOPE
  • PageContext.APPLICATION_SCOPE

获取数据:

pageContext.getAttribute("内容");
pageContext.getAttribute("name",域范围常量);

自动在四个域中搜索数据pageContext.findAttribute("内容");

在四个域中自动搜索数据,顺序:
page域->request域->session域->application域(context域)

域作用范围:

  • page域:只能在当前jsp页面使用(当前页面)
  • request域:只能在同一个请求中使用(转发)
  • session域:只能在同一个会话(session对象)中使用(私有的)
  • context域:只能在同一个web应用中使用(全局的)

你可能感兴趣的:(JSP入门必知:域和对象)