JSP第二次作业_7小题
原创
©著作权归作者所有:来自51CTO博客作者dream666uping的原创作品,请联系作者获取转载授权,否则将追究法律责任
7、使用Cookie记录用户名和密码。本题包括4个JSP程序,login.jsp、check.jsp、succ.jsp、failure.jsp。(选做)
login.jsp运行效果如图E2-11所示。用户输入用户名和密码,如果选择了保存信息的时间,则下次登录网站时不用再填写表单。按下确认后,信息提交到check.jsp,check.jsp判断用户输入信息的正确性,如用户名为”tom”,密码”123”, 将验证信息保存到Cookie,登录成功,跳转到succ.jsp,如图E2-12所示。此时如果新打开一个浏览器,然后直接打开“succ.jsp”页面,会提示已登录,说明Cookie起到了自动登录的作用,如图E2-13所示,注意图E2-12和图E2-13的地址栏的地址是不同的;若输入的信息没有通过验证则check.jsp跳转到failure.jsp,如图E2-14所示。若用户在login.jsp页面输入用户名和密码,选择了不保存信息,提交信息后,如果信息输入正确,本次可以成功登录。但是如果新打开一个浏览器,然后直接打开“succ.jsp”页面,则提示未登录,如图E2-15所示,说明Cookie未保存登录信息。
图E2-11 longin.jsp运行效果
图E2-12 check.jsp验证登录信息成功后跳转到succ.jsp页面
图E2-13 Cookie保存了登录信息后直接打开“succ.jsp”页面
图E2-14 check.jsp验证登录信息失败跳转到failure.jsp页面
图E2-15 Cookie未保存登录信息直接打开“succ.jsp”页面
做的:
7、使用Cookie记录用户名和密码。本题包括4个JSP程序,login.jsp、check.jsp、succ.jsp、failure.jsp。(选做)
login.jsp:
<%@ page contentType="text/html;charset=utf-8"%>
<mce:script language="javaScript"><!--
function validate(f){
if(!(/^/w{5,15}$/.test(f.userId.value))){
alert("用户id必须为5-15位!");
f.userId.focus();
return false;
}
if(!(/^/w{5,15}$/.test(f.password.value))){
alert("密码必须为5-15位!");
f.password.focus();
return false;
}
return true;
}
// --></mce:script>
<form action="check.jsp" method="post" onSubmit="return validate(this)">
<table border="0">
<tr>
<td>用户登录</td>
</tr>
<tr>
<td>
用户名:
</td>
<td>
<input type="text" name="userid">
</td>
</tr>
<tr>
<td>
密 码:
</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr>
<td>
记住密码?
</td>
<td>
<select name="savetime">
<option value="0" selected>不保存</option>
<option value=<%=24*60*60%>>一天</option>
<option value=<%=24*60*60*7%>>一周</option>
</select>
</td>
</tr>
<tr>
<td> <input type="submit" value="确认"></td>
<td> <input type="reset" value="重置"></td>
</tr>
</table>
</form>
success.jsp:
<%@ page contentType="text/html;charset=utf-8"%>
<%
boolean flag = false ; // 表示登陆成功或失败的标记
if(session.getAttribute("userid")==null){
Cookie[] c=request.getCookies();
String userid=null;
String password=null;
if(c!=null){
for(int i=0;i<c.length;i++){
if("userid".equals(c[i].getName())){
userid = c[i].getValue() ; // 接收Cookie信息
}
if("password".equals(c[i].getName())){
password = c[i].getValue() ; // 接收Cookie信息
}
}
if(userid!=null&&password!=null){
if(userid.equals("mjh")&&password.equals("123")){
// 如果有内容,则此处执行,表示查询出来,合法用户
flag = true ;
session.setAttribute("userid",userid);
}
}
}
}
if(session.getAttribute("userid")!=null){
%>
<h1>登录成功,欢迎光临!</h1>
<%
}else{
%>
<h1> 您还未登录!</h1>
<%
}
%>
check.jsp:
<%@ page contentType="text/html;charset=utf-8" %>
<%
boolean flag = false ; // 表示登陆成功或失败的标记
String userid = request.getParameter("userid") ; // 接收表单参数
String password = request.getParameter("password") ; // 接收表单参数
String savetime=request.getParameter("savetime");
System.out.println(savetime);
if(userid.equals("hwp")&&password.equals("123456")){
// 如果有内容,则此处执行,表示查询出来,合法用户
flag = true ;
session.setAttribute("userid",userid);
//将验证信息保存到Cookie
Cookie cid=new Cookie("userid",userid);
Cookie cpass=new Cookie("password",password);
cid.setMaxAge(Integer.parseInt(savetime));
cpass.setMaxAge(Integer.parseInt(savetime));
response.addCookie(cid);
response.addCookie(cpass);
}
%>
<%
if(flag){ // 登陆成功,应该跳转到success.jsp
%>
<jsp:forward page="success.jsp"/>
<%
}else{ // 登陆失败,跳转到failure.jsp
%>
<jsp:forward page="failure.jsp"/>
<%
}
%>
failure.jsp:
<%@ page contentType="text/html;charset=utf-8"%>
<h1>登录失败,请重新<a href="login.html" mce_href="login.jsp">登录</a></h1>
测试:
登陆账号:hwp,密码:123456
让保留信息一周