application认识(一)

本文介绍了Java Web开发中Session与Application的作用域概念及其使用场景。详细解释了两者的区别,包括如何保存会话状态信息及实现数据共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事先说明几个常见的内置对象:

out:用于向客户输出数据

request:主要用于客户端请求的数据信息

response:用于响应客户端请求并向客户端输出信息

session:用于记录会话状态的相关信息

application:类似于系统的全局变量,用于实现web应用中的资源共享

使用session可以保存当前用户的会话状态信息,一个人用户对应一个session,但是如果要访问人数,需要web应用系统中的所有用户共享,这时候就要用到application。

application对象类似于系统的“全局变量”用于同一个应用内的所有用户之间数据共享。

例子:

<%

Integer count=(Integer)application.getAttribute("count");

if(count!=null){

count=count+1;

}else{

count=1;

}

%>

展示页面 

<%

Integer i=(Integer)application.getAttribute("count");

out.print("统计访问量:目前有"+i+"个人访问过本网站");

%>

application作用域是针对整个web应用,被该应用下所有用户所共享,在web应用运行期间,所有页面都可以访问application作用域内的变量,其作用域做大,application作用域通过application对象的setAttribute()和getAttribute()方法访问。

例子:

testOne.jsp页面

<%

String app="abc";

String ses="session";

session.setAttribute("sesName",ses);

applicatin.setAttribute("appNmae",app); 

response.sendRedirect("xxxxx.jsp");

%>

testTwo.jsp页面:

app:<%=session.getAttribute("sesName")%>

ses:<%=application.getAttribute("appNmae")%>

如果运行testOne页面则输出:

app:abc

ses:session

如果直接运行testTwo.jsp页面

app:abc

ses:null

说明原因:

由于session作用域是针对当前会话,多个会话之间不能共享,所以无法读取ses变量。而application作用域是正对整个应用,所以appName变量可以被再次读取(注:若重启web应用,现有的application作用域会失效)

对比:

1 session在服务器,cookie在客户端 
2 session默认被存在在服务器的一个文件里(不是内存) 
3 session的运行依赖sessionid,而sessionid是存在cookie中的,也就是说,如果浏览器禁用了cookie ,同时session也会失效,可以通过其它方式实现 
4 session可以放在文件、数据库、或内存中都可以。 
5 登录验证或保持一段时间登录状态,一般会用session来验证

转载于:https://my.oschina.net/u/3740271/blog/1605116

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值