jsp中的四种对象作用域

page:当前页面,也就是只要挑到别的页面就失效了,可以近似理解为java的this对象

request:一次会话,简单的理解就是一次请求范围内有效,例如如果通过forward方式跳转,则forward目标页面仍然可以拿到request中的属性值,再例如如果通过redirect方式进行页面跳转,由于redirect相当于重新发出的请求,request中的值会消失

session:浏览器进程,只要当前页面没有被关闭(没有被浏览器强制清除),不管怎么跳转都是有效的(也可以说是存在一个会话周期中)

application:服务器,只要服务器没有重启(没有被程序强制清除),数据就有效

pageScope.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<body>

<%

//设置两个page范围的数据key->value

pageContext.setAttribute("name","page_barry");

pageContext.setAttribute("age",21);

%>

<%

//取值

String name=(String)pageContext.getAttribute("name");

int age=(Integer)pageContext.getAttribute("age");

%>

<font>姓 名:<%=name %></font>

<font>年 龄:<%=age %></font>

</body>

</html>

pageContext01.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="java.util.*" %>

<%@ page errorPage="error.jsp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<%

pageContext.setAttribute("name0","pageInfo");

request.setAttribute("name1","requestInfo");

session.setAttribute("name2","sessionInfo");

application.setAttribute("name3","applicationInfo");

out.println("使用pageContext<br/>");

out.println("page中的属性值:"+pageContext.getAttribute("name0")+"<br/>");

out.println("request中的属性值:"+pageContext.getRequest().getAttribute("name1")+"<br/>");

out.println("session中的属性值:"+pageContext.getSession().getAttribute("name2")+"<br/>");

out.println("application中的属性值:"+pageContext.getServletContext().getAttribute("name3")+"<br/>");

%>

</body>

</html>

pageScope_2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<body>

<%

//设置两个page范围的数据key->value

pageContext.setAttribute("name","page_barry");

pageContext.setAttribute("age",21);

%>

<jsp:forward page="pageTarget_2.jsp"></jsp:forward>

</body>

</html>

pageTarget_2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<body>

<%

//取值

String name=(String)pageContext.getAttribute("name");

int age=(Integer)pageContext.getAttribute("age");

%>

<font>姓 名:<%=name %></font>

<font>年 龄:<%=age %></font>

</body>

</html>

requestScope.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//设置两个request范围的数据key->value

request.setAttribute("name","request_barry");

request.setAttribute("age",12);

%>

<jsp:forward page="requestTarget.jsp"></jsp:forward>

</body>

</html>

requestTarget.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//取值

String name=(String)request.getAttribute("name");

int age=(Integer)request.getAttribute("age");

//获取头信息

Enumeration enu=request.getHeaderNames();

while(enu.hasMoreElements()){

String headerName=(String)enu.nextElement();

String headerValue=request.getHeader(headerName);

%>

<h4><%=headerName %>&nbsp;<%=headerValue %></h4>

<%

}

%>

<font>姓名<%=name %></font><br>

<font>年龄<%=age %></font>

</body>

</html>

requestScope_2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//设置两个request范围的数据key->value

request.setAttribute("name","request_barry");

request.setAttribute("age",12);

%>

<%response.sendRedirect("requestTarget_2"); %>

</body>

</html>

requestTarget_2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//取值

String name=(String)request.getAttribute("name");

int age=(Integer)request.getAttribute("age");

//获取头信息

Enumeration enu=request.getHeaderNames();

while(enu.hasMoreElements()){

String headerName=(String)enu.nextElement();

String headerValue=request.getHeader(headerName);

%>

<h4><%=headerName %>&nbsp;<%=headerValue %></h4>

<%

}

%>

<font>姓名<%=name %></font><br>

<font>年龄<%=age %></font>

</body>

</html>

sessionScope.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//设置两个session范围的数据key->value

session.setAttribute("name","session_barry");

session.setAttribute("age",12);

%>

<h1>session值设置完毕!</h1>

</body>

</html>

sessionTarget.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

String name=(String)session.getAttribute("name");

Integer age=(Integer)session.getAttribute("age");

%>

<font>姓名<%=name %></font><br>

<font>年龄<%=age %></font>

</body>

</html>

applicationScope.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//设置两个application范围的数据key->value

application.setAttribute("name","application_barry");

application.setAttribute("age",12);

%>

<h1>application值设置完毕!</h1>

</body>

</html>

applicationTarget.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//取值

String name=(String)application.getAttribute("name");

int age=(Integer)application.getAttribute("age");

%>

<font>姓名<%=name %></font><br>

<font>年龄<%=age %></font>

</body>

</html>

时间: 2024-11-03 21:49:16

jsp中的四种对象作用域的相关文章

C++ Primer 学习笔记_23_类与数据抽象(9)--四种对象生存期和作用域、static 用法总结

C++ Primer 学习笔记_23_类与数据抽象(9)--四种对象生存期和作用域.static 用法总结 前言: 从上图可知,程序占用的内存被分了以下几部分. (1).栈区(stack) 存放函数的参数值,局部变量的值等,内存的分配是连续的.栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限 注意:通常栈空间容量比较小,一般是1MB-2MB,所以体积比较大的对象不适合在栈中分配. (2).堆区(heap) 由malloc系列函数或new操作符

Jsp中的四个域对象

Jsp中的四个域对象 四个域对象: pageContext      page域 request          request域 session          session域 application       context域 1)域对象作用: 保存数据  和 获取数据 ,用于数据共享. 2)域对象方法: setAttribute("name",Object) 保存数据 getAttribute("name")  获取数据 removeAttribute

Activity中的四种启动模式

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: [html] view plaincopy Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" 

C++中的四种转型操作符

在详细介绍C++中的四种转型操作符之前,我们先来说说旧式转型的缺点: ①它几乎允许将任何类型转换为任何其他类型,这是十分拙劣的.如果每次转型都能够更精确地指明意图,则更好. ②旧式转型难以辨识.旧式转型的语法结构是由一对小括号加上一个对象名称组成,而小括号和对象名称在C++的任何地方都有可能被使用. 为解决C旧式转型的缺点,C++导入了4个新的转型操作符:static_cast.const_cast.dynamic_cast.reinterpret_cast.下面我来一一分析这四种转型操作符.

JAVA中的四种引用以及ReferenceQueue和WeakHashMap的使用示例

简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用).SoftReferenc(软引用).WeakReferenc(弱引用).PhantomReference(虚引用)的作用.同时我们还将介绍ReferenceQueue和WeakHashMap的功能和使用示例. 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. JAVA中的四种引用 四种引用中,软引用.若引用.虚引用都需要相关类来创建.创建的时候

JSP中的内置对象和Struts中的Web资源的详解

JSP中的内置对象有如下几种: request :继承于HttpServletRequest, HttpServletRequest继承ServletRequest, 获得的Request对象的方法:只能在Servlet中获取的doGet()和doPost()方法中获取 作用:封装用户请求信息 response   : 继承于HttpServletResponse,   HttpServletResponse继承ServletResponse 获得response对象的方法:只能在Servlet

JSP中的几种注释

JSP中的几种注释: HTML中的注释:格式为<!--注释内容-->,注释内容在客户端浏览里是看不见的,但是在查看源代码时可以在客户端看见,称为显示注释.该注释不安全. JSP文件中的注释:格式为<%--注释内容--%>,客户端在查看源代码时看不到注释内容,称为隐式注释,安全性比较高. JavaScript中的注释:脚本就是嵌入到<%与%>之间的代码,使用的语言是Java语言.该注释分文两种:单行注释和多行注释.均为隐式注释. 单行注释: <% //注释内容 %&

java中的四种单例实现方式

在java中,单例设计模式是非常常见的设计模式,对单例设计模式的概念,不做过多的介绍,下面将逐一介绍四种单例设计模式: 1.第一种单例设计模式 1.1 代码实现 package com.singleton.one; /**  * 第一种单例设计模式  * @author Administrator  *  */ public class SingleTonOne { // 实例化 private static SingleTonOne instance = new SingleTonOne();

对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)

对称加密和分组加密中的四种模式(ECB.CBC.CFB.OFB) 一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充 e.g.: PKCS#5填充方式 三. 流密码:   四. 分组密码加密中的四种模式: 3.1 ECB模式 优点: 1.简单: 2.有利于并行计算: 3.误差不会被传送: 缺点: 1.不能隐藏明文的模式: 2.可能对明文进行主动攻击: 3.2 CBC模式: 优点: 1.不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL.IPSec的标准.