java Web jsp四大作用域和九大内置对象
JSP中的四大作用域:page、request、session、application
这四大作用域,其实就是其九大内置对象中的四个,为什么说他们也是JSP的四大作用域呢?因为这四个对象都能存储数据,比如request.setAttribute()注意和request.setParameter()区分开来,一个是存储在域中的、一个是请求参数,session.setAttribute()、application其实就是SerlvetContext,自然也有setAttribute()方法。而page作用域的操作就需要依靠pageContext对象来进行了。在上面我们也有提到JSP的四大作用域,
page作用域:代表变量只能在当前页面上生效
request:代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B
session:代表变量能在一次会话中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响。
application:代表变量能一个应用下(多个会话),在服务器下的多个项目之间都能够使用。
-------------------------------------------------------------------------------------------------------------------------------------
JSP有九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用
JSP九大内置对象分为四类:
- 输入输出对象:out对象(作用域 Page)、response对象(作用域 Page)、request对象(作用域 Request)
 - 通信控制对象:pageContext对象(作用域 Page)、session会话对象(作用域 Session)、application对象(作用域 Application)
 - Servlet对象:page对象(作用域 Page)、config对象(作用域 Page)
 - 错误处理对象:exception对象(作用域 page)
 
九种对象简介:
- out对象:用于向客户端、浏览器输出数据。
 - request对象:封装了来自客户端、浏览器的各种信息。
 - response对象:封装了服务器的响应信息。
 - exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
 - config对象:封装了应用程序的配置信息。
 - page对象:指向了当前jsp程序本身。
 - session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
 - application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
 - pageContext对象:提供了对jsp页面所有对象以及命名空间的访问。
 
1.out对象(常用)
out对象是一个输出流,用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。
out对象方法介绍:
| 
 方法名  | 
 说明  | 
| 
 print或println  | 
 输出数据  | 
| 
 newLine  | 
 输出换行字符  | 
| 
 flush  | 
 输出缓冲区数据  | 
| 
 close  | 
 关闭输出流  | 
| 
 clear  | 
 清除缓冲区中数据,但不输出到客户端  | 
| 
 clearBuffer  | 
 清除缓冲区中数据,输出到客户端  | 
| 
 getBufferSize  | 
 获得缓冲区大小  | 
| 
 getRemaining  | 
 获得缓冲区中没有被占用的空间  | 
| 
 isAutoFlush  | 
 是否为自动输出  | 
2.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  | 
 设置指定名字参数值  | 
3.response对象(常用)
response对象主要用于对客户端的请求进行回应。
以及处理http的连接信息,例如设置http文件头,设置cookie对象等。
response对象方法:
| 
 方法名  | 
 说明  | 
| 
 addCookie  | 
 添加一个Cookie对象  | 
| 
 addHeader  | 
 添加Http文件指定名字头信息  | 
| 
 containsHeader  | 
 判断指定名字Http文件头信息是否存在  | 
| 
 encodeURL  | 
 使用sessionid封装URL  | 
| 
 flushBuffer  | 
 强制把当前缓冲区内容发送到客户端  | 
| 
 getBufferSize  | 
 返回缓冲区大小  | 
| 
 getOutputStream  | 
 返回到客户端的输出流对象  | 
| 
 sendError  | 
 向客户端发送错误信息  | 
| 
 sendRedirect  | 
 把响应发送到另一个位置进行处理  | 
| 
 setContentType  | 
 设置响应的MIME类型  | 
| 
 setHeader  | 
 设置指定名字的Http文件头信息  | 
4.session: 会话失效时间 ,tomcat中默认是30分钟,可以设置。 每个用户的会话空间是隔离的。
5.application 应用对象
application,session,request:都可以通过setAttribute来设置属性,用getAttribute来获取属性,但是可见范围不一样。
  application对象所设置的属性,所有会话可见,而session对象设置的属性,只有在同一个session中可见。
  同样,前面讲过的request,它所设置的属性,只有在同一次请求之间可见。
application 不会过期,在整个服务器运行期间都有效,服务器重启后丢失。
application的其他一些方法:
  application.getRealPath()
6.page对象
  JSP网页本身,page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;在JSP页面中,很少使用page对象。
7.config对象:主要作用是取得服务器的配置信息。
常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。
通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
8.exception对象
 在可能产生错误的文件中用page指令指定errorpage
 在所指定的errorpage中,设置isErrorPage="true"这个page指令,然后用exception对象获取错误信息。
<%@page errorPage="error.jsp"%>
session也是需要在页面上设置page指令的。
9.pageContext对象(重要)
作用:a.可以用它获取其他八大内置对象的句柄(本身的句柄不用获取)
| 返回类型 | 方法名 | 作用 | 
|---|---|---|
| JspWriter | getOut() | 用于获取out隐式对象 | 
| Object | getPage() | 用于获取page隐式对象 | 
| ServletRequest | getRequest() | 用于获取request隐式对象 | 
| ServletResponse | getResponse() | 用于获取response隐式对象 | 
| HttpSession | getSession() | 用于获取session隐式对象 | 
| Exception | getException() | 用于获取exception隐式对象 | 
| ServletConfig | getServletConfig() | 用于获取config隐式对象 | 
| ServletContext | getServletContext() | 用于获取application隐式对象 | 
b.可以用它设置或者获取4个不同范围(page,request,session,application)内的变量的值
| 返回类型 | 方法名 | 作用 | 
|---|---|---|
| void | setAttribute(String name,Object value) | 向page域容器存放属性 | 
| void | setAttribute(String name,Object value,int scope) | 向指定域容器存放属性 | 
| Object | getAttribute(String name,int scope) | 根据name获取指定域的属性值 | 
| void | removeAttribute(String name,int scope) | 删除指定容器内名称为name的属性 | 
| void | removeAttribute(String name) | 删除所有容器内名称为name的属性 | 
| Object | findAttribute(String name) | 从4个域对象中依次查找名称为name的属性 | 
比如:
设置的值只能在本页面内有效
  pageContext.setAttribute (String name , Object value) ;
设置的值在同一个request请求中有效。   
  pageContext.setAttribute(String name , Object value, PageContext.REQUEST_SCOPE))
相当于request.setAttribute(String name , Object value);    eg: request.setAttribute("name", "alex");
设置的值在同一个session请求中有效。   
  pageContext.setAttribute(String name , Object value, PageContext.SESSION_SCOPE))
相当于session.setAttribute(String name , Object value);
设置的值在整个应用中有效。   
  pageContext.setAttribute(String name , Object value, PageContext.APPLICATION_SCOPE))
相当于application.setAttribute(String name , Object value);
对应的get方法就不再详细列出了;
按照 page request session application顺序取:
pageContext.findAttribute(String name);
删除所有域中的值:
pageContext.removeAttribute(String name);
删除指定域中的值:
pageContext.removeAttribute(String name, int scope);
java Web jsp四大作用域和九大内置对象的更多相关文章
- Java Web开发技术教程入门-JSP基本语法和九大内置对象
		
这两天气温逐渐升高,好想把自己泡在冰块里······ 恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽.......今天阅读到了这本书的第四章-JSP基本语法.经过第一天的阅读,我们明白JSP技术是Java Web开 ...
 - JavaWeb(二)jsp运行原理,九大内置对象
		
JSP运行原理: 每个JSP页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ...
 - Java Web(五) JSP详解(四大作用域九大内置对象等)
		
前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...
 - web开发(五) JSP详解(四大作用域九大内置对象等)
		
在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6427759.html>,在此仅供学习参考之用. 一.JS ...
 - 【转载】JSP详解(四大作用域九大内置对象等)
		
前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...
 - jsp九大内置对象 ,三大指令,四大作用域,七大动作
		
九大内置对象: application:应用程序对象 对整个web工程都有效 request:对当前请求的封装 pageConfig:只对当前页面有效,里面封装了基本request和session的对 ...
 - JSP九大内置对象和四大作用域和Servlet的三大作用域对象
		
一.JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 内置对象特点: 由JSP规范提供,不用编写者实例化. 通过Web容器实现和管理 所有 ...
 - servlet的三大作用域对象和jsp的九大内置对象及其四大作用域对象
		
servlet的三大作用域对象: request(HttpServletRequest) session(HttpSession): application(ServletContext):tomca ...
 - 转载:jsp九大内置对象和四大作用域
		
摘要: JSP的九大内置对象: page,application,session,request,response,out,exception,config,pageContext. JSP的四个作用 ...
 
随机推荐
- Pro Android学习笔记 ActionBar(1):Home图标区
			
 Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
 - C++11中提供了std::bind
			
再来看看std::bind C++11中提供了std::bind.bind()函数的意义就像它的函数名一样,是用来绑定函数调用的某些参数的. bind的思想实际上是一种延迟计算的思想,将可调用对象保存 ...
 - c++线程同步和通信
			
一.线程的创建 你也许会说我一直用CreateThread来创建线程,一直都工作得好好的,为什么要用_beginthreadex来代替CreateThread,下面让我来告诉你为什么. 回答一个 ...
 - Python错误TypeError: write() argument must be str, not bytes
			
2016-07-03 20:51:25 今天使用Python中的pickle存储的时候出现了以下错误: TypeError: write() argument must be str, not byt ...
 - 洛谷P1979 华容道
			
神の契约 题目大意:自己看去... 题解:做了一下午...本蒟蒻立志要写全网最详细的题解.╭(╯^╰)╮ begin.... 暴力70分.可以让空格子到处乱走,只要某个状态的指定格子到目标格子,那么此 ...
 - jQuery的ajax跨域实现
			
今天有人问我跨域ajax请求是否可以发送,之前没接触过此类问题,没答上,后来查了下,以下备忘. 我在本地建了三个站点,并设置了host文件模拟跨子域和跨全域 coolkissbh.com blog.c ...
 - Linux修改数据库的访问权限
			
以下方法可以帮助你解决这个问题了,下面的语句功能是,建立一个用户为monitor密码admin权限为和root一样.允许任意主机连接.这样你可以方便进行在本地远程操作数据库了. CREATE USER ...
 - 对象的克隆,Dozer的使用
			
现在有个复杂对象bean需要在赋值后在另一个地方用,想通过复制的方式拿到这个对象.首选是深度克隆,虽然发现该对象的父类已经实现了Cloneable接口,但父类是通过jar包引入的,而且在clone方法 ...
 - 第13篇 PSR-2代码样式
			
这个规范原文如下: 1. Overview Code MUST follow a "coding style guide" PSR [PSR-1]. Code MUST use 4 ...
 - YUV
			
https://msdn.microsoft.com/en-us/library/aa904813(VS.80).aspx