您的位置:首页 > 其它

同一用户的不同页面共享数据

2016-01-29 15:27 585 查看
四种方法:

 1.cookie技术

什么是cookie?

服务器在客户端保存用户的信息,比如登录名、密码……就是cookie。这些信息就像是小甜饼一样,数据量并不大,服务器端在需要的时候可以从客户端读取。
cookie可以用来做什么?

1.保存用户名、密码,在一定时间不用重新登录

2.记录用户访问网站的喜好,比如有无背景音乐、网页的背景色是什么

3.网站的个性化,比如定制网站的服务、内容
cookie使用

1.cookie有点像一张表,分两列,一个是名字,一个是值,数据类型都是String

2.如何创建一个cookie(在服务器端创建的)

Cookiec=new Cookie(String name, Stringval);

3.如何将一个cookie添加到客户端

response.addCookie(c);

4。如何读取cookie(从客户端读到服务器)

request.getCookie();

cookie其它说明

1.可以通过IE——工具——internet选项——隐私——高级来启用或是禁用cookie

2.由于cookie的信息是保存在客户端的,因此安全性不高

3.cookie信息的生命周期可以在创建时设置(比如30s),从创建那一时刻起,就开始计时,到时该cookie的信息就无效了。

//如何创建cookie案例
package com.CookieTest;
import javax.servlet.http.*;
import java.io.*;

public class CookieTest1 extends HttpServlet{
//处理get请求
public void doGet(HttpServletRequest req,HttpServletResponse res){
try {
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//当用户访问该servlet时, 就将信息创建到该用户的cookie中
//1. 现在服务器端创建一个cookie
Cookie myCookie=new Cookie("color1","red");
//2. 该cookie存在的时间
myCookie.setMaxAge(30);
//如果你不设置存在时间,那么该cookie将不会保存
//3. 将该cookie写回到客户端
res.addCookie(myCookie);
pw.println("已经创建了cookie");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}

//如何读取cookie案例
package com.CookieTest;
import javax.servlet.http.*;
import java.io.*;
public class CookieTest2 extends HttpServlet{
//处理get请求
public void doGet(HttpServletRequest req,HttpServletResponse res){
try {
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//从客户端得到所有cookie信息
Cookie [] allCookies=req.getCookies();
int i=0;
//如果allCookies不为空...
if(allCookies!=null){
//从中取出cookie
for(i=0;i<allCookies.length;i++){
//依次取出
Cookie temp=allCookies[i];
if(temp.getName().equals("color1")){
//得到cookie的值
String val=temp.getValue();
pw.println ("color1="+val);
break;
}
}
if(allCookies.length==i){
pw.println("cookie 过期");
}
}else{
pw.println ("不存在color1这个cookie/或是过期了!");
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}

//如何删除cookie案例
package com.CookieTest;
import javax.servlet.http.*;
import java.io.*;
public class CookieTest3 extends HttpServlet{
//处理get请求
public void doGet(HttpServletRequest req,HttpServletResponse res){
try {
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
//从客户端得到所有cookie信息
Cookie [] allCookies=req.getCookies();
int i=0;
//如果allCookies不为空...
if(allCookies!=null){
//从中取出cookie
for(i=0;i<allCookies.length;i++){
//依次取出
Cookie temp=allCookies[i];
if(temp.getName().equals("color1")){
//将该cookie删除
temp.setMaxAge(0);
pw.println("删除了color1这个cookie");
break;
}
}
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}


4.session技术

什么是session?

当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占。这个空间就是session空间,该空间中的数据默认存在时间为30min,你也可以修改该值。

session可以用来做什么?

  1.网上商城中的购物车

  2.保存登陆用户的信息

  3.将某些数据放入到session中,供同一用户的各个方面使用

  4.防止用户非法登陆到某个页面

如何理解session?
c326

可以把session看做一张表,这张表有两列,而表有多少行理论上没有限制,每一行就是session的一个属性。每个属性包含有两个部分,一个是该属性的名字String,另外一个是它的值Object

如何使用session?

1.得到session

  HttpSession hs=request.getSession(true);

2.向session添加属性

  hs.setAttribute(Stringname,Objectval);

3.从session得到某个属性

  Stringname=hs.getAttribute(Stringname);

4.从session中删除掉某个属性

  hs.removeAttribute(Stringname);

5.注销session中的内容(比较安全的一种方式)

  ht.setMaxInactiveInterval(0);

session的注意事项:

1.session中属性存在的默认时间是30min,你也可修改它存在的时间:(a)修改web.xml   (b)在程序中修改

2.上面说的这个30min指的是用户的发呆时间,而不是累计时间

3.当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的sessionid,并以此来区分不同的浏览器(即客户端)

4.因为session的各个属性要占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用

<span style="font-size:14px;">//session 案例---如何得到session/和在session中添加属性
package com.SessionTest;
import javax.servlet.http.*;
import java.io.*;

public class SessionTest1 extends HttpServlet {
//处理get请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try {
//中文乱码
res.setContentType("text/html;charset=utf-8");
PrintWriter pw=res.getWriter();
//得到和req相关联的session,如果没有就创建session
HttpSession ht=req.getSession(true);
//得到session 的id,这是由容器分配的
String sessionId=ht.getId();
pw.println("sessionTest1 的session id="+sessionId+"<br>");
//向session中添加一个属性(String 类型的)
ht.setAttribute("name","韩顺平");
//如果不指定时间,那么该session的有效期是30min
//你也可以指定时间,30s
ht.setMaxInactiveInterval(30);
pw.println("在session中放入了一个属性 name=韩顺平");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
//猫类
//class Cat{
//	private String name;
//	private int age;
//	public Cat(String name,int age){
//		this.name=name;
//		this.age=age;
//	}
//	public String getName(){
//		return this.name;
//	}
//	public int getAge(){
//		return this.age;
//	}
//}

//			//向session中添加一个属性(Vector v)
//			Cat myCat=new Cat("xiaoming",34);
//			ht.setAttribute("maomao",myCat);
//			pw.println("在session中放入一只猫 <br>");</span>


//session 案例---如何得到session
package com.SessionTest;
import javax.servlet.http.*;
import java.io.*;
public class SessionTest2 extends HttpServlet {
//处理get请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try {
//中文乱码
res.setContentType("text/html;charset=utf-8");
PrintWriter pw=res.getWriter();
//得到和req相关联的session,如果没有就创建session
HttpSession ht=req.getSession(true);
//得到session 的id
String sessionId=ht.getId();
pw.println("sessionTest2 的session id="+sessionId);
//得到session中的某个属性
String myName=(String)ht.getAttribute("name");
pw.println("name="+myName);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}

//	//得到session中的某个属性
//			String myName=(String)ht.getAttribute("name");
//			pw.println("name="+myName);
//
//			//得到猫
//			Cat myCat=(Cat)ht.getAttribute("maomao");
//			pw.println("你的猫的名:"+myCat.getName()+"<br>");
//			pw.println("你的猫的年龄:"+myCat.getAge()+"<br>");

//session 案例---如何删除属性/如何使得session无效
package com.SessionTest;
import javax.servlet.http.*;
import java.io.*;
public class SessionTest3 extends HttpServlet {
//处理get请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try {
//中文乱码
res.setContentType("text/html;charset=utf-8");
PrintWriter pw=res.getWriter();
//得到和req相关联的session,如果没有就创建session
HttpSession ht=req.getSession(true);
//向session中添加一个属性(String 类型的)
ht.setAttribute("you","周星星");
ht.setAttribute("he","刘德华");
pw.println("在没有删除you属性前 you 的 值="+
ht.getAttribute("you")+"<br>");
//从session中删除you属性
//	ht.removeAttribute("you");
ht.setMaxInactiveInterval(0);
pw.println("删除you属性后 you 的 值="+
ht.getAttribute("you")+"<br>");
pw.println("删除you属性后 he 的 值="+
ht.getAttribute("he")+"<br>");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//处理post请求
//req: 用于获得客户端(浏览器)的信息
//res: 用于向客户端(浏览器)返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: