jsp的9个内置对象
最近笔者在学习王刚的书,学习到了jsp的九个内置对象,感觉非常重要。在此我结合书上内容与自己的理解来做一个总结。
9个内置对象分别为:application,config,exception,out,page,pageContext,request,response,session。
当我们打开jsp页面编译后的Servlet类会发现,这九个内置对象要么是_jspSevice()方法的形参,要么是_jspService()方法的局部变量,所以可以直接在jsp脚本中调用这些对象。
为了解决jsp,servlet之间如何交换数据,Web服务器会提供4个类似的Map的结构,分别为application,session,request,page,允许jsp,servlet将数据放到这四个类似Map的结构中。区别在于四个结构 范围不同。
1.application对象
作为一个map结构,用于jsp与servlet之间数据的交换。其对于整个Web应用有效,一旦jsp,servlet将数据放入application中,该数据将可以被该应用下其他所有的jsp,servlet访问。我们可以通过setAttribute(String attrName,Object value),getAttribute(String attrName)两个方法来对数据进行设置与访问。
2.session对象
session对象代表一次用户会话。一次用户会话的含义是:客户浏览器连接服务器开始,到客户端浏览器与服务器断开为止,这个过程就是一次会话。即一旦关闭浏览器,即session结束,session范围内的属性将会全部丢失。我们可以通过setAttribute(String attrName,Object value),getAttribute(String attrName)两个方法来对数据进行设置与访问。
3.request对象
浏览器发送请求时通常会附带一些请求头,还包含一些请求参数给服务器(比如form表单提交数据给服务器),而jsp/servlet获取这些参数r的途径就是request,我们常用的方法有:
String getParameter(String paramName):用来获取paramName请求参数的值。
String[ ] getParameterValues(String name):paraName请求参数的值,当该请求参数有多个值时,该方法将返回多个值所组成的数组。
4.page对象
仅对当前页面有效,一旦JSP,servlet将数据放入page中,该数据只可以被当前页面JSP页面,声明部分访问
5.out对象
out对象代表一个页面输出流。通过out.println(xxx)语句在页面上输出变量值和常量。
6.response对象
out是Jsp Writer的实例,,无法输出非字符内容,当我们想要输出一幅图或者PDF文档,使用out作为响应对象将无法完成,此时需要使用到response作为响应输出。除此之外还可以重定向和增加cookie、
7.config对象
config对象代表当前JSP配置信息,在servlet中常用,可获取在web.xml中的配置信息。比如通过getInitParameter(String paranName)方法获得JSP配置参数
8.pageContext对象
这个对象代表页面上下文,该对象主要用于访问jsp之间的共享数据。使用pageContext可以访问page、request、session、application范围的变量。
9.exception对象
exception对象是Throwable的实例,代表JSP脚本中产生的错误和异常,是JSP页面异常机制的一部分