四大作用域对象

四大作用域对象

1.四大作用域对象介绍

对象

范围

PageContext

pageContext

当前页面(作用不大)

HttpRequest

request

一次请求(必需请求转发)

HttpSession

session

一次会话

ServletContext

application

整个应用(有且只有一个)



2.1 作用域对象中添加数据

作用域对象.setAttribute(key,value);

修改(再设制一个相同的key覆盖原有的)

 

2.2 从作用域对象中获取数据

作用域对象.getAttribute(key);

2.3 删除作用域中的数据

作用域对象.removeAttribute("key");

 

注意:存在哪个作用域对象里,就需要在哪个作用域对象中去取得



使用作用域的经典案例

/**
 *  完成计数器
 * 
 * */
@WebServlet("/scope/count")
public class CountServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		/**
		 * 测试request作用域
		 * 步骤:
		 *   1.从request对象中拿到计数器(如果计数器不存在,创建一个计数器)
		 *   2.拿到之后计数器加1
		 *   3.把这个计数器放到request作用域中
		 *   4.跳转到展示页面(浏览器)
		 * */
		//拿到计数器
		Integer req_count = (Integer)req.getAttribute("REQ_COUNT");
		//判断
		if(req_count==null){
			req_count = 0;
		}
		// 2.拿到之后计数器加1
		req_count = req_count + 1;
		//3.把这个计数器放到request作用域中
		req.setAttribute("REQ_COUNT",req_count);
		
		/**
		 * 测试session作用域
		 * 步骤:
		 *   1.从session对象中拿到计数器(如果计数器不存在,创建一个计数器)
		 *   2.拿到之后计数器加1
		 *   3.把这个计数器放到session作用域中
		 *   4.跳转到展示页面(浏览器)S
		 * */
		 //1.从session对象中拿到计数器(如果计数器不存在,创建一个计数器)
		HttpSession session = req.getSession();
		//2.拿到之后,计数器加1
		Integer session_count = (Integer)session.getAttribute("SESSION_COUNT");
		if(session_count==null){
			session_count = 0;
		}
		session_count = session_count + 1;
		// 3.把这个计数器放到session作用域中
		session.setAttribute("SESSION_COUNT", session_count);
		
		/**
		 * 测试application作用域
		 * 步骤:
		 *   1.从application对象中拿到计数器(如果计数器不存在,创建一个计数器)
		 *   2.拿到之后计数器加1
		 *   3.把这个计数器放到application作用域中
		 *   4.跳转到展示页面(浏览器)
		 * */
		ServletContext application = req.getServletContext();
		Integer application_count = (Integer)application.getAttribute("APPLICATION_COUNT");
		if(application_count==null){
			application_count = 0;
		}
		application_count = application_count + 1;
		application.setAttribute("APPLICATION_COUNT", application_count);
		
		 //4.跳转到展示页面(浏览器)  跳转使用请求转发,因为我们要把数据传过来(共享数据)
		req.getRequestDispatcher("/scope/show").forward(req, resp);
	}
}

/**
 *   显示作用域中的计数器
 * 
 * */

@WebServlet("/scope/show")
public class ShowCountServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		//显示request中的计数器
		Object req_count = req.getAttribute("REQ_COUNT");//得到request作用域中的值
		resp.getWriter().println("request:"+req_count);
		
		//显示session作用域中的计数器
		Object session_count = req.getSession().getAttribute("SESSION_COUNT");
		resp.getWriter().println("Session:"+session_count);
		
		//显示application作用域中的计数器
		Object application_count = req.getServletContext().getAttribute("APPLICATION_COUNT");
		resp.getWriter().println("application:"+application_count);
	}
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值