事先说明几个常见的内置对象:web
out:用于向客户输出数据数据库
request:主要用于客户端请求的数据信息浏览器
response:用于响应客户端请求并向客户端输出信息服务器
session:用于记录会话状态的相关信息cookie
application:相似于系统的全局变量,用于实现web应用中的资源共享session
使用session能够保存当前用户的会话状态信息,一我的用户对应一个session,可是若是要访问人数,须要web应用系统中的全部用户共享,这时候就要用到application。app
application对象相似于系统的“全局变量”用于同一个应用内的全部用户之间数据共享。jsp
例子:网站
<%spa
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来验证