您的位置:首页 > Web前端 > JavaScript

JSP中cookie的使用方法(用户登入_客户端读取及发送)

2014-11-26 15:03 495 查看
JSP中cookie的使用方法(用户登入_客户端读取及发送):

一、向客户程序发送cookie
1、 创建cookie对象
Cookie c = new Cookie(“userId”,”landril”);
2、 设置最大时效
默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。 c.setMaxAge(60*60*24); //一天,如果设置为0则是删除该cookie
3、向客户端添加Cookie
将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定 的Set-Cookie头信息,而是创建新的头信息。

response.addCookie(c);

注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应头信息,即发送到客户程序。

二、从客户端读取cookie
 
1、 获取Cookie数组
调用HttpServletRequest的getCookies得到一个Cookie对象的数组

2、 对数组进行循环,调用cookie的getName方法,获取具体的cookie的值

Cookie[] cookies = request.getCookies();

if(cookies != null){

for(int i=0;i <cookies.length;i++){

Cookie c = cookies[i];

if(“userId”.equals(c.getName())){

System.out.println(c.getValue());

}

}

}

三、使用Cookie记录访问数

1.用户第一次访问网页时的操作
  ...

out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。"); //打印登录信息

cookie=newCookie("accpCount", "1"); //Cookie对象,并设置名称与值

cookie.setMaxAge(60*60*24); //设置最长保留时间为1天

response.addCookie(cookie); //添加到响应头信息,返回到客户端

...
2.用户非第一次访问网页时的操作
  ...

Cookie[] cookies =request.getCookies(); //从request对象中获取客户端Cookie信息

int count = 0; //初始访问次数为0

Cookie cookie=null; //定义Cookie对象

if (cookies != null) { //判断request对象中是否存在Cookie信息

for (int i = 0; i <cookies.length; i++) { //使用for循环遍历Cookie数组

cookie = cookies[i]; //获取数组元素

if("accpCount".equals(cookie.getName())) { //判断Cookie的名称是否为"accpCount"

count =Integer.parseInt(cookie.getValue())+1; //如果相等,加1

cookie.setValue(count+""); //重新设置Cookie对象的value值

cookie.setMaxAge(60*60*24); //设置保留最长时间

response.addCookie(cookie); //返回到客户端

out.println("你是第"+ count + "次登录该网页。");

break;

}

}

}

...

3.完整的使用Cookie对象获取客户Cookie数据,并通过Cookie名称取出相应的值,在页面上显示登录次数
...

public void doPost(HttpServletRequestrequest, HttpServletResponse response)

throws ServletException, IOException{

response.setContentType("text/html;charset=gb2312");

PrintWriter out =response.getWriter();

out .println("");

out.println("");

out.println(" ");

out.println(" ");

Cookie[] cookies =request.getCookies();

int count = 0;

boolean bool=true;

Cookie cookie=null;

if (cookies != null) {

for (int i = 0; i < cookies.length;i++) {

cookie = cookies[i];

if("accpCount".equals(cookie.getName())) {

count =Integer.parseInt(cookie.getValue())+1;

cookie.setValue(count+"");

cookie.setMaxAge(60*60*24);

response.addCookie(cookie);

out.println("你是第"+ count + "次登录该网页。");

bool=false;

break;

}

}

}

if(bool){

out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。");

cookie=newCookie("accpCount", "1");

cookie.setMaxAge(60*60*24);

response.addCookie(cookie);

}

out.println(" ");

out.println("");

out.flush();

out.close();

}

...

4.运行效果图

四、使用Cookie记录用户名和密码

一、用户登录操作
  在用户填写登录数据后,提交表单进行登录验证,如果用户名和密码正确,则把用户名和密码保存在客户端。页面如图1所示。

图1 保存Cookie信息的登录页面
实现代码如下所示。

...

  response.setContentType("text/html;charset=gbk");

//获取用户名

String userName = request.getParameter("username");

//获取用户密码

String password =request.getParameter("password");

//验证用户是否合法

if("accp".equals(userName) &&"accp".equals(password)) {

//如果合法,把用户名和密码保存在客户端Cookie中

//获取客户选择的Cookie保存时间

String cookieDate =request.getParameter("cookieDate");

int date = 0;

if (cookieDate != null&& cookieDate != "")

date =Integer.parseInt(cookieDate);

//创建用户名Cookie对象

Cookie cookieName =new Cookie("accpLoginName", userName);

//设置Cookie保存时间

cookieName.setMaxAge(date);

//添加到客户端

response.addCookie(cookieName);

//创建用户密码Cookie对象

Cookie cookiePass =new Cookie("accpLoginPass", password);

//设置保存Cookie时间

cookiePass.setMaxAge(date);

//添加到客户端

response.addCookie(cookiePass);

response.sendRedirect("success.jsp");

} else {

response.sendRedirect("fail.jsp");

}

...

二、用户再次登录时操作
  服务器首先读取客户端Cookie信息,如果存在用户名和密码数据,则直接登录,否则显示登录页面。

实现代码如下所示。

response.setContentType("text/html;charset=gbk");

//用户名和密码是否存在以及合法的判断参数

boolean bool=false;

//获取客户端Cookie数组

Cookie[] cookies =request.getCookies();

//判断客户端是否存在Cookie对象

if (cookies != null) {

//预定义保存用户名和密码的变量

String userName ="";

String password ="";

//遍历Cookie数组

for (int i = 0; i <cookies.length; i++) {

//取得每一个Cookie对象

Cookie cookie= cookies[i];

//判断Cookie的名称是否等于"accpLoginName"

if("accpLoginName".equals(cookie.getName())) {

userName = cookie.getValue();

}

//判断Cookie的名称是否等于"accpLoginPass"

if("accpLoginPass".equals(cookie.getName())) {

password = cookie.getValue();

}

}

//判断用户名和密码是否合法

if("accp".equals(userName) &&"accp".equals(password))

bool=true;

}

//判断对客户端的Cookie的操作是否成功,成功则显示登录成功后的页面,

//否则,重定向到登录页面

if(bool)

response.sendRedirect("success.jsp");

else

response.sendRedirect("login.jsp");
js设置Cookie
//页面测试:

<script type="text/javascript"src="/theme/js/mycenter/jquery.pack.js"></script>

<script type="text/javascript"

src="http://192.168.190.140:8088/sfbm/theme/js/collect/visit.js?cID=${param.u}"

charset="UTF-8">

</script>

$(function(){//(暂时不区分多个用户的情况)

varparams = getParams();

varvcID = params['cID'];//代码ID

if(vcID)

{

varcd = new Date().getTime();

$.get("http://localhost:8088/sfbm/collect/visit.action",{"cID": vcID, t: cd});//记录visit

//varrID = getCookie("clct_vst_rID");//行为ID

varfDt = getCookie("clct_vst_fDt");//首次访问时间

if(fDt== undefined || fDt == null)

{

// setCookie("clct_vst_rID", cd,30);//行为ID

setCookie("clct_vst_fDt",cd, 30);//首次访问时间

setCookie("clct_vst_cID",vcID, 30);//访问的产品ID

}else{

//更新有效时间

// setCookie("clct_vst_rID", rID,30);//行为ID

setCookie("clct_vst_fDt",fDt, 30);//首次访问时间

setCookie("clct_vst_cID",vcID, 30);//访问的产品ID

}

}

functiongetParams()

{

varsc=document.getElementsByTagName('script');

var paramsArr=sc[sc.length-1].src.split('?')[1].split('&');

var args={}, argsStr=[], param, t, name,value;

for(var i=0, len=paramsArr.length;i<len; i++){

param=paramsArr[i].split('=');

name=param[0], value=param[1];

if(typeof args[name]=="undefined"){//参数尚不存在

args[name]=value;

}else if(typeofargs[name]=="string"){ //参数已经存在则保存为数组

args[name]=[args[name]]

args[name].push(value);

}else{ //已经是数组的

args[name].push(value);

}

}

return args;

}

//写cookies

functionsetCookie(name, value, days)

{

if(days== undefined){

document.cookie= name + "=" + escape(value);

}else{

varexp = new Date();

exp.setTime(exp.getTime()+ days*24*60*60*1000);

document.cookie= name + "="+ escape(value) + ";expires=" +exp.toGMTString();

}

}

//读取cookies

functiongetCookie(name)

{

var arr,reg=new RegExp("(^|)"+name+"=([^;]*)(;|$)");

if(arr = document.cookie.match(reg))

{

returnunescape(arr[2]);

}

else

{

returnnull;

}

}

});

1:在客户端将用户的信息放入到Cookie中

String cookieName="Sender";

Cookie cookie=new Cookie(cookieName,"Test_Content"); // 创建一个Cookie对象

cookie.setMaxAge(10);

response.addCookie(cookie);

2:从Cookie中取到用户的信息和sessionID

// 得到sessionID

StringsessionID = request.getSession(true).getId(); // 从session中得到 JSESSIONID

System.out.println("sessionID --->"+sessionID);

// 从cookie中得到JSESSIONID 值

Cookiecookies[] = request.getCookies();

if(cookies!=null){

for(inti=0;i<cookies.length;i++){

Cookiecookie = cookies[i];

System.out.println(cookie.getName()+"--->"+cookie.getValue());

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐