session域和application域的数据共享情况

  • session域是基于会话的,即网页关闭后数据消失,session清空。创建session对象:
// 创建session对象
		HttpSession session = request.getSession();
  •  application域是基于服务器的,即当服务器(比如tomcat)关闭时,内部的application域的数据清空。
  • page指当前页面。只在一个jsp页面里有效 。
  • request 指从http请求到服务器处理结束,返回响应的整个过程。在这个过程中使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。

比较直观的理解的话,可以参照下面的代码来看(一个累加器)

session:

package servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class PrivateSum extends HttpServlet {
	/**
	 * 初始化
	 */
	public void init() {
	}

	/**
	 * doGet方法
	 * <li> 完成局部私有累加计数
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		int count;
		// 设置输出类型和编码格式
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		// 通过表单中的控件名称获得控件的value值
		String str = request.getParameter("number");
		// 将字符串转为整型数据
		int num = Integer.parseInt(str);
		// 创建session对象
		HttpSession session = request.getSession();
		// 返回由count指定的会话属性
		String o = (String) session.getAttribute("count");
		if (o != null) {
			count = Integer.parseInt(o);
		} else {
			count = 0;
		}
		// 累加,但在同一个session中会一直累加
		count += num;
		String result = String.valueOf(count);
		session.setAttribute("count", result);
		out.println("现在的累加结果是" + count);
	}

	/**
	 *	销毁方法
	 */
	public void destroy() {
	}
}

application:

package servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;


/**
 * @author fhzheng
 * <li> 全局计数器,即置于容器中的共享数据
 */
public class PublicSum extends HttpServlet
{
	//声明上下文对象
	ServletContext sc;
	
	public void init()
	{
		//实例化上下文对象
		sc=this.getServletContext();    
	}
	public void doGet(
			HttpServletRequest request,
			HttpServletResponse response)throws ServletException,IOException{
		int count;									//计数器
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		//通过表单中的控件名称获得控件的value值
		String str=request.getParameter("number");   
		int num=Integer.parseInt(str);    			//字符串型转变为整型
		//返回Servlet上下文中count的对象,如没有count的对象,则返回null
		String o=(String)sc.getAttribute("count");
		
		if( o != null ) {   //如果在当前服务器中,曾调用过该应用程序,则有count的对象。
			count=Integer.parseInt(o);
		} else {
			count=0;
		}
		// 累加,同一个服务一旦户动,会一直累加
		count += num;
		String result = String.valueOf(count);    	//整型转变为字符串型 
		sc.setAttribute("count",result);       		//把result对象的值赋给count对象,即count的值为result的值
		out.println("现在的累加结果是"+count);
	}
	public void destroy(){}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值