1.Js代码,login.js文件
//用户的登陆信息写入cookies
function SetCookie(form)//两个参数,一个是cookie的名子,一个是值
{
var name = form.name.value;
var password = form.password.value;
var Days = 1; //此 cookie 将被保存 7 天
var exp = new Date(); //生成一个现在的日期,加上保存期限,然后设置cookie的生存期限!
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = "user="+ escape(name) + "/" + escape(password) + ";expires=" + exp.toGMTString();
}
//取cookies函数--正则表达式(不会,学习正则表达式)
function getCookie(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]);
return null;
}
//取cookies函数--普通实现
function readCookie(form){
var cookieValue = "";
var search = "user=";
if(document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if(offset != -1){
offset += search.length;
end = document.cookie.indexOf(";",offset);
if (end == -1)
end = document.cookie.length;
//获取cookies里面的值
cookieValue = unescape(document.cookie.substring(offset,end))
if(cookieValue != null){
var str = cookieValue.split("/");
form.name.value = str[0];
form.password.value = str[1];
}
}
}
}
//删除cookie,(servlet里面:设置时间为0,设置为-1和session的范围是一样的),javascript好像是有点区别
function delCookie()
{
var name = "admin";
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
2.jsp代码,文件login.jsp
<%@ page contentType="text/html; charset=gb2312" language="java"
import="java.sql.*" errorPage=""%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>javascript 控制 cookie</title>
<link href="css/style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="js/login.js"></script>
</head>
<script language="javascript">
function checkEmpty(form){
for(i=0;i<form.length;i++){
if(form.elements[i].value==""){
alert("表单信息不能为空");
return false;
}
}
}
</script>
<body onload="readCookie(form)"> <!-- 作为JavaScript控制的cookie-->
<div align="center">
<table width="324" height="225" border="0" cellpadding="0" cellspacing="0">
<tr height="50">
<td ></td>
</tr>
<tr align="center">
<td background="images/back.jpg">
<br>
<br>
登陆
<form name="form" method="post" action="" onSubmit="return checkEmpty(form)">
<input type="hidden" name="id" value="-1">
<table width="268" border="1" cellpadding="0" cellspacing="0">
<tr align="center">
<td width="63" height="30">
用户名:
</td>
<td width="199">
<input type="text" name="name" id="name">
</td>
</tr>
<tr align="center">
<td height="30">
密码:
</td>
<td>
<input type="password" name="password" id="password">
</td>
</tr>
</table>
<br>
<input type="submit" value="提交">
<input type="checkbox" name="cookie" onclick="SetCookie(form)">记住我
</form>
</td>
</tr>
</table>
</div>
</body>
</html>
目的:当你再次打开login.jsp页面,表单里面的内容已经写好了,是你上一次的登陆信息!
问题:1.JavaScript里面取cookie都是写死的,不是很灵活!
2.JavaScript的cookie是按照字符串的形式存放的,所以拿出的时候,你要按照你放进去的形式来选择!
3.本来是想实现自动登陆的,可我的每个页面都要session的检查!一个客户端,一个服务器端,没能实现!