题目:
在用户登录界面中输入账号和密码,如果账号和密码相等,则登录成功,进入欢迎界面; 在登录时,如果选择了“保持登录状态”,下次访问登录页面时,则直接进入欢迎页面,无需重新登录(重开页签/重启浏览器/重启Tomcat/重启客户端电脑情况下访问登录页面均能直接进入欢迎页面,可逐项测试,分析原因);
在登录时,如果没有选择“保持登录状态”,下次访问登录页面,则不会跳转欢迎页面,需要重新输入用户名密码登录。
三个页面
login.jsp页面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<body>
<!-- Cookie的作用:当你访问注册页面,
首先检查是否之前有把数据保存到Cookie中,如果是,遍历Cookie找到数据并赋值给变量
-->
<%
Cookie[] cookies = request.getCookies();
String account = "";
String psd = "";
if(cookies!=null && cookies.length!=0){
for(int i=0;i<cookies.length;i++){
if(cookies[i]!=null){
<!--为什么需要equals函数?Cookie可以看做是一个乱序的键值对的数组,所以当对其遍历时,需要进行比对-->
if("account".equals(cookies[i].getName())){
account = cookies[i].getValue();
}
else if("psd".equals("psd")){
psd = cookies[i].getValue();
}
}
}
}
if(!account.equals("")&&!psd.equals("")&&account.equals(psd)){
response.sendRedirect("welcome.jsp");
}
%>
<form action="login1.jsp" method="post">
请输入账号:<input type="text" name="account" ><br>
请输入密码:<input type="password" name="psd" ><br>
是否保存登录状态:
<input type="radio" name="state" value="yes" >是
<input type="radio" name="state" value="no" >否<br>
<input type="submit" value="登录" >
</form>
</body>
</html>
login1.jsp页面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<body>
<%
request.setCharacterEncoding("utf-8");
String account = request.getParameter("account");
String psd = request.getParameter("psd");
String state = request.getParameter("state");
//确定用户是否可登录,即account、psd是否存在且两者相等
if(!account.equals("")&&account!=null
&& !psd.equals("")&&psd!=null&&account.equals(psd)){
//通过state判断是否存在且是否需要保存
//如果state=yes,则把数据保存到Cookie中,并跳转到welcome页面
if(state!=null&&state.equals("yes")){
Cookie c1 = new Cookie("account",account);
c1.setMaxAge(60*60*24);
response.addCookie(c1);
Cookie c2 = new Cookie("psd",psd);
c2.setMaxAge(60*60*24);
response.addCookie(c2);
}
response.sendRedirect("welcome.jsp");
}
//条件不符合,则登录失败,返回到注册页面
else{
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
welcome页面:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<body>
欢迎登录!
</body>
</html>