四种方法:
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?
可以把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);
}
}