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

让保留信息一周

JSP第二次作业_7小题相关推荐

  1. JSP第二次作业_5小题

    题目描述: 5.编写两个JSP页面input.jsp和result.jsp.input.jsp页面提交一个数字给result.jsp页面,result.jsp页面使用response对象做出动态响应. ...

  2. JSP第二次作业_6小题

    题目描述: 6.猜数字游戏.本题包括4个JSP程序,inputGuess.jsp.resultGuess.jsp.small.jsp.large.jsp和success.jsp. inputGuess ...

  3. JSP第二次作业_4小题

    本题包括4个JSP程序,one.jsp.two.jsp.three.jsp.error.jsp. one.jsp具体要求如下: 要求one.jsp页面有一个表单,用户使用该表单可以输入一个1至100之 ...

  4. JSP第二次作业_2小题

    题目: 在JSP页面中静态包含文件.要求程序包含两个文件,主文件静态包含一个能够计算1到1000内的完数的页面.(如果一个正整数刚好等于它的真因子之和,这样的正整数为完数, 例如,6=1+2+3,因此 ...

  5. JSP第二次作业_3小题

    题目: 动态包含页面并传递数据.要求程序包含两个文件,主文件加载次文件,并将随机产生的50~100之间的数据传递给它,并且在页面上显示两个信息:该数据和这个数据的平方根. 进阶要求,把动态包含改为动态 ...

  6. JSP第二次作业_1小题

    题目: 编写一个JSP程序,计算1!+2!+3!+4!+5!,并显示出结果.要求先声明计算阶乘的方法,再调用该方法,最后在页面上输出结果. 进阶要求,通过表单提交一个正整数,然后计算它的阶乘和.例如: ...

  7. JSP第二次作业_8小题

    8.实现简单聊天室.要求以B/S方式实现多人聊天,可以保留聊天者的昵称和聊天内容. I DO: 8,实现简单聊天室.要求以B/S方式实现多人聊天,可以保留聊天者的昵称和聊天内容. login.jsp: ...

  8. 《算法设计与分析(第4版)》课后习题第二章第2小题

    <算法设计与分析(第4版)>课后习题第二章第2小题 下面的7个算法与本章中的二分搜索算法binarySearch略有不同.请判断这7个算法的正确性,并说明原因和证明. 第二章二分搜索算法b ...

  9. 第二章作业-第3题-万世想

    第3题是:完成小组的"四则运算"项目的需求文档(使用Markdown写文档),尝试同组成员在各自PC上修改同一文档后,如何使用Git命令完成GitHub上的文档的更新,而不产生冲突 ...

最新文章

  1. html5转apicloud,使用APICloud编写优雅的HTML5代码
  2. 如何将TensorFlow Serving的性能提高超过70%?
  3. android界面布局题,【填空题】Android 系统中, 用于定义布局显示在界面上的风格。...
  4. 视频 + PPT 下载 | 挣脱流量束缚,社交电商的未来在哪里?
  5. boost::mpl模块实现count_if相关的测试程序
  6. 【Python】base64模块对图片进行base64编码和解码
  7. 指针做形参,形参的传递详解
  8. [Python笔记]第一篇:基础知识
  9. python 设计简易计算器_python小项目——实现简易的计算器
  10. 【BZOJ2296】随机种子(构造)
  11. 【转】比较page、request、session、application的使用范围
  12. 纯CSS实现三列布局(两边固定,中间自适应)
  13. 第七篇:A133 Android 10 触摸提示音过大
  14. 如何将b站视频从手机传输到电脑上
  15. 【硬见小百科】数字电子时钟电路图设计原理
  16. 全桥电路matlab仿真,三相电压型桥式逆变电路及建模与仿真结构
  17. 详解圆形头像Shader
  18. 【TensorFlow】计算图graph的使用学习笔记(二)
  19. android后台通过View生成分享图片
  20. 震惊:竟然有大神做出了地府后台管理系统!!!

热门文章

  1. 赔偿谷歌1.8亿美元!前Uber自动驾驶主管被告到破产
  2. 旷视张祥雨:高效轻量级深度模型的研究和实践 | AI ProCon 2019
  3. 百度自动驾驶新突破:获首批T4牌照,升级Apollo 5.0,将进行复杂城市场景路测...
  4. 全栈AI工程师指南,DIY一个识别手写数字的web应用
  5. 想体验无人商店?去京东他们家直接刷脸!
  6. TensorFlow1.8.0正式发布,Bug修复和改进内容都在这里了
  7. 我把 Spring Boot 的 banner 换成了美女,老板说工作不饱和,建议安排加班
  8. ping 命令还能这么玩?
  9. 记住:永远不要在 MySQL 中使用 UTF-8
  10. 论机器学习领域的内卷