Servlet中cookie记住密码

青旅半醒 2023-02-25 02:02 74阅读 0赞

Servlet中通过学到的Cookie,做出一个记住密码的操作
用到HTML+Servlet+Cookie+JavaScript
利用cookie设置记住密码的时间,到期失效.setMaxAge()–cookie设置时间. addCookie()–添加cookie

jsp页面

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>login</title>
  5. <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  6. <script type="text/javascript">
  7. /** * 记住密码操作 * @type {string[]} */
  8. //通过js获取cookie 用split方法分割“;”
  9. //第一次分割得到cookies数组{username=111,password=111,remb=1}
  10. var cookies = document.cookie.split(";");
  11. //封装一个函数
  12. function findCookie(Kname){
  13. //迭代cookies
  14. for (var i=0;i<cookies.length;i++){
  15. //二次分割得到键值对 k,v {username,111}
  16. var kv = cookies[i].split("=");
  17. //判定是否有一样的,如果有返回kv[1]值
  18. if(Kname==kv[0].trim()){
  19. return kv[1].trim();
  20. }
  21. }
  22. return '';
  23. }
  24. window.onload = function(){
  25. //根据用户名
  26. var username = findCookie("username");//这里的参数要和servlet创建的参数值的对象名一致
  27. var password = findCookie("password");
  28. var remb = findCookie("remb");
  29. //点击了记住密码就给输入框赋值
  30. if('1'==remb){
  31. document.getElementById("username").value = username;
  32. document.getElementById("pwd").value = password;
  33. document.getElementById("remb").checked = "checked";
  34. }
  35. }
  36. </script>
  37. </head>
  38. <body>
  39. <form action="login" method="post">
  40. <table cellpadding="0" cellspacing="0" border="0">
  41. <tr>
  42. <td valign="middle" align="right">
  43. username:
  44. </td>
  45. <td valign="middle" align="left">
  46. <input type="text" name="username" id="username" />
  47. </td>
  48. </tr>
  49. <tr>
  50. <td valign="middle" align="right">
  51. password:
  52. </td>
  53. <td valign="middle" align="left">
  54. <input type="password" name="pwd" id="pwd" />
  55. </td>
  56. </tr>
  57. <tr>
  58. <td valign="middle" align="right"></td>
  59. <td valign="middle" align="left">
  60. <input type="checkbox" name="remb" value="1" id="remb" />记住密码
  61. </td>
  62. </tr>
  63. </table>
  64. <p>
  65. <input type="submit" value="Submit »" />
  66. </p>
  67. </form>
  68. </body>
  69. </html>

serlvet

  1. @WebServlet("/login")
  2. public class LoginServlet extends HttpServlet {
  3. public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
  4. //设置请求的编码
  5. //设置响应的格式和编码
  6. //获取请求参数值
  7. //用户名
  8. String username = request.getParameter("username");
  9. //密码
  10. String password = request.getParameter("pwd");
  11. //记住密码的值
  12. String remb = request.getParameter("remb");
  13. //查询数据库,进行dao操作,判定当前输入是否有对应用户存在
  14. UserDao dao = new UserDaoImpl(); //创建dao对象
  15. User u = dao.login(username,password); //调用dao里的login()方法
  16. //用户如果为空,表示数据库不存在此用户,则登录失败
  17. if(u != null){
  18. //调用cookie记住密码方法
  19. rem_pwd(response,username,password,remb);
  20. response.getWriter().println("登录成功");
  21. } else {
  22. response.getWriter().println("登录失败");
  23. }
  24. }
  25. /** * cookie封装记住密码 * @param response * @param username * @param password * @param remb */
  26. private void rem_pwd(HttpServletResponse response,String username,String password,String remb){
  27. //判断登录时是否点击了记住密码
  28. if ("1".equals(remb)){
  29. //构建用户名,密码记住密码三个Cookie
  30. Cookie c1 = new Cookie("username",username);
  31. Cookie c2 = new Cookie("password",password);
  32. Cookie c3 = new Cookie("remb",remb);
  33. //设置cookie的存活时间一个小时
  34. c1.setMaxAge(60*60);
  35. c2.setMaxAge(60*60);
  36. c3.setMaxAge(60*60);
  37. //添加cookie
  38. response.addCookie(c1);
  39. response.addCookie(c2);
  40. response.addCookie(c3);
  41. }
  42. }
  43. }

发表评论

表情:
评论列表 (有 0 条评论,74人围观)

还没有评论,来说两句吧...

相关阅读