1、application对象
类似于系统的“全局变量”,用于同一个服务器内的所有用户之间的数据共享,对于整个web服务器,application有且只有一个示例。
application常用方法:
- void setAttribute(String key,Object value) //以key/value的形式将对象存储到application中
- Object getAttribute(String key) //通过key获取存储在application中的对象
- String getReadPath(String path) //返回相对路径的真实路径
application主要用于统计网站访问人数,示例:
Integer count =(Integer)application.getAttribute("count"); if(count!=null){ count+=1; }else{ count=1; } application.setAttribute("count",count);
小结:jsp常用内置对象
- out对象:用于想客户端输出数据
- request对象:主要用于处理客户端请求的数据信息
- response对象:用于响应客户端请求并向客户端输出信息
- session对象:用于记录会话的相关信息
- application对象:类似于系统的“全局变量”,用于实现web应用中的资源共享
2、对象的作用域
jsp中提供了四种作用域:
1、page作用域:同一个页面中有效
2、request作用域:通过request对象setAttribute()方法保存数据,然后调用RequestDispatcher的forward()方法转向的页面或者调用include()方法包含的页面时,都可以访问request作用域内的对象。
3、session作用域:通过session对象的setAttribute()方法保存数据后,只要不关闭会话(不关闭浏览器),都可以访问session作用域内的对象。
4、application作用域。只要web服务器不关闭,都可以访问。
3、cookie
什么是cookie?简单明了的说:缓存。你的网站有谁登录了、浏览了哪些页面,都可以存入cookie当中。并且,还可以设置cookie的有效时间。
- 创建cookie对象:Cookie newCookie = new Cookie(String name,String value),name表示cookie的名称,value表示当前key名称所对应的值。
- 写入cookie:response.addCookie(newCookie);
- 读取cookie:Cookie[] cookies = request.getCookie();
cookie的常用方法: - void setMaxAge(int expiry) 设置cookie的有效期,以秒为单位
- void setValue(String value) 在cookie创建后,为cookie赋予新的值
- String getValue() 获取cookie的值
- int getMaxAge() 获取cookie的有效时间
**注:**sessionid被保存在cookie中。
4、jsp访问数据库
与Java一致。
5、JavaBean
JavaBean是Java中的可以跨平台的重用组件。主要负责封装数据和封装业务处理。JavaBean的定义要遵循一定的规则:公有类,并提供无参的共有构造方法;属性私有,具有共有的访问属性的getter/setter方法。
page作用域:
%>
在服务器发送响应或请求转发其它页面或资源后无效
pageContext对象本身也属于page作用域,具有page作用域的对象被绑定到pageContext对象中
request作用域:
session作用域:
一个浏览器窗口对应一个session对象,当新开一个浏览器窗口时,会重新创建一个session对象
application作用域:
Cookie:
cookie是由Netscape公司发明的,最常用的跟踪用户会话的方式。它
是由服务器端生成,发送给客户端浏览器的,浏览器会将其保存为某一
个目录下的文本文件,方便下一次请求
cookie的作用:
》》》对特定对象的跟踪:如访问者的访问次数,最后访问时间,路径
》》》统计网页浏览次数
》》》在cookie有效期内,记录用户登录的信息
》》》针对用户的喜好推荐不同的内容
<%
//javax.servlet.http.Cookie这个包,当JSP翻译成.java文件时会自动导入
Cookie c=new Cookie("pwd","123");
c.setValue("456");
%>
<%=
//c.getMaxAge()---- -1 永不超时 c.setMaxAge(0); 0表示失效
// c.getPath()----null
//c.getVersion()---0
//c.getSecure()//cookie是否安全
// c.getName()//只有getName()没有setName(),因为名字不可改
c.getValue()
%> 如果未向cookie中添加数据,当创建session时,sessionid的值cookie的值是一样的,说明sessionid被保存在cookie中
当服务器对一个请求作出处理时,cookie才会被写入客户端
使用setMaxAge(int expiry)时,有以下几种情况:
通常情况下expiry为大于0的整数,表示cookie的有效存活时间
如果设置expiry参数等于0,表示删除cookie
设置expiry参数为负或者不设置,表示cookie会在当前窗口关闭后失效
cookie用于保存不重要的用户信息,重要的用户信息使用session保存
<%
response.addCookie(new Cookie("uname","Jack"));
response.addCookie(new Cookie("pwd","123"));
response.sendRedirect("look.jsp");
look.jsp
<%
Cookie[] cookie=request.getCookies();
String uname=null;
String pwd=null;
if(cookie==null){
out.println("用户名:"+uname+" "+"密码:"+pwd);
return;
}
for(Cookie c:cookie){
if(c.getName().equals("uname")){
uname=c.getValue();
}else if(c.getName().equals("pwd")){
pwd=c.getValue();
}
}
out.println("用户名:"+uname+" "+"密码:"+pwd);
%>