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)

九种对象简介:

  1. out对象:用于向客户端、浏览器输出数据。
  2. request对象:封装了来自客户端、浏览器的各种信息。
  3. response对象:封装了服务器的响应信息。
  4. exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
  5. config对象:封装了应用程序的配置信息。
  6. page对象:指向了当前jsp程序本身。
  7. session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
  8. application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
  9. 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四大作用域和九大内置对象的更多相关文章

  1. Java Web开发技术教程入门-JSP基本语法和九大内置对象

    这两天气温逐渐升高,好想把自己泡在冰块里······ 恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽.......今天阅读到了这本书的第四章-JSP基本语法.经过第一天的阅读,我们明白JSP技术是Java Web开 ...

  2. JavaWeb(二)jsp运行原理,九大内置对象

    JSP运行原理: 每个JSP页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ...

  3. Java Web(五) JSP详解(四大作用域九大内置对象等)

    前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...

  4. web开发(五) JSP详解(四大作用域九大内置对象等)

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6427759.html>,在此仅供学习参考之用. 一.JS ...

  5. 【转载】JSP详解(四大作用域九大内置对象等)

    前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...

  6. jsp九大内置对象 ,三大指令,四大作用域,七大动作

    九大内置对象: application:应用程序对象 对整个web工程都有效 request:对当前请求的封装 pageConfig:只对当前页面有效,里面封装了基本request和session的对 ...

  7. JSP九大内置对象和四大作用域和Servlet的三大作用域对象

    一.JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 内置对象特点: 由JSP规范提供,不用编写者实例化. 通过Web容器实现和管理 所有 ...

  8. servlet的三大作用域对象和jsp的九大内置对象及其四大作用域对象

    servlet的三大作用域对象: request(HttpServletRequest) session(HttpSession): application(ServletContext):tomca ...

  9. 转载:jsp九大内置对象和四大作用域

    摘要: JSP的九大内置对象: page,application,session,request,response,out,exception,config,pageContext. JSP的四个作用 ...

随机推荐

  1. [Mvel]Mvel2.0使用指南一 基础

    MVEL在很大程度上受到Java语法的启发,作为一个表达式语言,也有一些根本的区别,旨在更高的效率,例如:直接支持集合.数组和字符串匹配等操作以及正则表达式. MVEL用于执行使用Java语法编写的表 ...

  2. android 删除SD卡或者手机的缓存图片和目录

    public static final String TEMP_PHOTO_FILE_NAME = "temp_photo.jpg"; private static String ...

  3. Leetcode 1006. Clumsy Factorial

    class Solution(object): def clumsy(self, N): """ :type N: int :rtype: int "" ...

  4. golang:bson.ObjectId与string转化

    网上资料不好搜,记下来:两个变量:id bson.ObjectIdstr string bson.ObjectId—>string id.Hex() string—>bson.Object ...

  5. linux 备份svn

    下面具体描述备份的方法: =============== 1.svnadmin dump备份工具 ------------------------     这是subversion官方推荐的备份方式. ...

  6. tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Y events)

    /************************************************************************************ * tslib: Selec ...

  7. bzoj 4448 情报传递

    Written with StackEdit. Description 奈特公司是一个巨大的情报公司,它有着庞大的情报网络.情报网络中共有\(n\)名情报员.每名情报员能有若干名(可能没有)下线,除\ ...

  8. 剑指offer-第五章总结

    优化时间和空间效率的方法: 1,时间换空间. 2,动态规划. 3,找规律.

  9. 如何手玩5h uoj215 果冻运输得到 AC

    最近在大力练习提答颓提答,听说果冻运输很好玩就来试试. 然后玩的停不下来 QAQ ... 于是开一篇博客写一下每个点的解法.(一个个手玩出来的..) 首先我们每次都算什么下一步完后会发生什么在大脑中演 ...

  10. IT售前经验谈

    在IT界,成功的完成一个项目需要销售人员.售前人员.项目实施人员(开发人员).售后服务人员等密切协作.本文从售前技术支持人员的角度,对售前技术支持工作的过程进行了描述,根据作者在售前的经验,提出了各环 ...