在论坛等网页登录页面,常常会碰到小窗口提示保留登录信息3天。这究竟是如何实现的呢
其实很简单,用cookie就可以实现,下面上图:
<body>
<%
String username="";
String password="";
Cookie[] cookies1 = request.getCookies();//获取所有cookies对象
if(cookies1!=null&&cookies1.length>0)
{
for(Cookie c:cookies1)
{
if(c.getName().equals("username"))
{
username=c.getValue();
}
if(c.getName().equals("password"))
{
password=c.getValue();
//out.print(password);
}
}
}
%>
<div style="margin: 0 auto; width:400px;">
<form action="cookie.jsp" method="post">
<table>
<tr>
<td><label>用户名:</label></td>
<td><input type="text" name="username" value="<%=username %>"/></td>
</tr>
<tr>
<td><label>密码:</label></td>
<td><input type="password" name="password" value="<%=password %>"/></td>
</tr>
<tr>
<td colspan="2"><input type="checkbox" name="isUseCookie"/>
<label>3天内保存用户登录信息</label></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="login"/></td>
</tr>
</table>
</form>
</div>
</body>
跳转页代码如下:
<body>
<%
String[] cookies = request.getParameterValues("isUseCookie");//values这里是获取一串数据
if(cookies!=null&&cookies.length>0)//如果数组不为空且大于0,说明被选中了
{
String username= request.getParameter("username");
String password = request.getParameter("password");
Cookie name = new Cookie("username", username);
Cookie pwd = new Cookie("password", password);//将index页面文本框的值存入cookie对象
name.setMaxAge(86400);
pwd.setMaxAge(86400);//设置生效时间,单位是秒 86400秒为1天
response.addCookie(name);
response.addCookie(pwd);//返回cookie对象
//System.out.println(username);
}else//如果登录时没有勾选,则要清空以保存的cookie
{
Cookie[] cookies1 = request.getCookies();//获取所有cookies对象
if(cookies1!=null&&cookies1.length>0)
{
for(Cookie c:cookies1)
{
if(c.getName().equals("username")||c.getName().equals("password"))
{
c.setMaxAge(0);//是cookie失效
response.addCookie(c);//重新保存
}
}
}
//System.out.println("8888888888888");
}
%>
<a href="show.jsp">点击显示登录信息</a>
</body>
最后是展示页:
<body>
<%
String username="";
String password="";
Cookie[] cookies1 = request.getCookies();//获取所有cookies对象
if(cookies1!=null&&cookies1.length>0)
{
for(Cookie c:cookies1)
{
if(c.getName().equals("username"))
{
username=c.getValue();
}
if(c.getName().equals("password"))
{
password=c.getValue();
//out.print(password);
}
}
}
%>
用户名:<%=username %>
密码: <%=password %>
</body>
最后再附上一张session和cookie的知识对比图:
为了程序的健壮性,在每次jsp尖括号中打上request.setCharacterEncoding("utf-8");
识别汉子。