java web之路 jsp状态管理 cookie在登陆中的应用
程序员文章站
2022-07-03 23:26:30
...
通过cookie保存登陆使用的使用名及密码
login.jsp页面中输入用户名及密码,选择是否将帐户信息保存在cookie中
提交至dologin.jsp页面中,在dologin.jsp中使用cookie保存用户信息,设置链接到user.jsp页面
user.jsp页面通过cookie来读取帐户信息,验证cookie保存是否成功
login.jsp
<form action="dologin.jsp" name="login" method="post">
<table>
<tr>
<td>用户名:<input type="text" name="username" value="<%=username%>"></td>
</tr>
<tr>
<td>密码:<input type="password" name="password" value="<%=password%>"></td>
</tr>
<tr>
<td><button type="submit" value="dologin">登陆</td>
</tr>
<tr>
<td><input type="checkbox" name="usecookie" checked="checked">十天内记住用户名密码</td>
</tr>
</table>
</form>
dologin.jsp
<%
String username="";
String password="";
//获得是否选择了保存帐户信息
String isusecookie = request.getParameter("usecookie");
/* String[] isusecookie = request.getParameterValues("usecookie"); */
if(isusecookie!=null){
username=request.getParameter("username");
password=request.getParameter("password");
Cookie usernamecookie=new Cookie("username",username);//新建username cookie对象
Cookie passwordcookie=new Cookie("password",password);
usernamecookie.setMaxAge(846000);//设置cookie存在的时间,单位秒
passwordcookie.setMaxAge(846000);
response.addCookie(usernamecookie);//将username cookie对象写入cookie中
response.addCookie(passwordcookie);
}else{
Cookie[] cookies=request.getCookies();//不保存帐户信息时需要清除原cookie信息
if(cookies!=null&&cookies.length>0){
for(Cookie c : cookies){
if(c.getName().equals("username")||c.getName().equals("password")){
c.setMaxAge(0);
response.addCookie(c);
}
}
}
}
%>
<a href="user.jsp">链接到user.jsp</a>
user.jsp
<%
String username="";
String password="";
Cookie[] cookie = request.getCookies();
for (Cookie c : cookie) {
if(c.getName().equals("username")){
username=c.getValue();
}
if(c.getName().equals("password")){
password=c.getValue();
}
}
%>
用户名:<%=username %>
<br>
密码:<%=password %>
login.jsp页面 如果保存了帐户信息,那么在帐户输入框中显示,修改后的页面
<%
String username="";
String password="";
Cookie[] cookie = request.getCookies();
for (Cookie c : cookie) {
if(c.getName().equals("username")){
username=c.getValue();
}
if(c.getName().equals("password")){
password=c.getValue();
}
}
%>
<body>
<form action="dologin.jsp" name="login" method="post">
<table>
<tr>
<td>用户名:<input type="text" name="username" value="<%=username%>"></td>
</tr>
<tr>
<td>密码:<input type="password" name="password" value="<%=password%>"></td>
</tr>
<tr>
<td><button type="submit" value="dologin">登陆</td>
</tr>
<tr>
<td><input type="checkbox" name="usecookie" checked="checked">十天内记住用户名密码</td>
</tr>
</table>
</form>
题外话:
学习的过程中,有过一点迷糊:什么时候使用request/resonpse ?
web有页面->页面, 页面->服务器
页面之前跳转,A到B,A提交信息至B,那么在B中使用request对象来得到相关信息,相反,B要把信息返回给A或者返回给客户端,B中使用response。
无论是谁传给谁,获取信息时使用requset, 发出信息时使用response;
在cookie的使用中,需要将cookie信息给到客户端,所以只有response对象才有addCookie方法