• estore商城案例(二)------登录&添加商品&商品列表(上)


    今天继续写一下第二个功能:登录&添加商品&商品列表

    1、登录页面,很简单做个表单提交一下就可以了,记住登录的功能也先简单写一下,明天写filter过滤器会完善自动登录的功能,以及权限管理.

    登录页面代码:

     1 <html>
     2   <head>
     3     
     4     <title>My JSP 'login.jsp' starting page</title>
     5     
     6     <script type="text/javascript">
     7     function validateForm()
     8     {
     9         var username=document.getElementById("username").value;
    10         var password=document.getElementById("password").value;
    11         
    12         if(username==""||password=="")
    13             {
    14             alert("不能有空");
    15             return false;
    16             }
    17     }
    18     </script>
    19   </head>
    20   
    21   <body>
    22   <h3>登录的页面</h3>
    23 <font color="red">${msg }</font>//选择自动登录后,下次直接从session中获取username和pwd
    24     <form action="${pageContext.request.contextPath }/login" onsubmit="return validateForm();" method="post">
    25         <table>
    26             <tr>
    27                 <td>用户名</td>
    28                 <td><input type="text" name="username" id="username"></td>
    29                 <td id="username_msg"></td>
    30             </tr>
    31             <tr>
    32                 <td>密码</td>
    33                 <td><input type="password" name="password" id="password">
    34                 </td>
    35                 <td id="password_msg"></td>
    36             </tr>
    37             <tr>
    38                 <td>自动登陆</td>
    39                 <td><input type="checkbox" name="autologin" value="on"><!--自动登录-->
    40                 </td>
    41             </tr>
    42             <tr>
    43                 <td></td>
    44                 <td><input type="submit" value="登录"></td>
    45             </tr>
    46         </table>
    47     </form>
    48   </body>
    49 </html>
    View Code

    登录的servlet:

    1 public void doPost(HttpServletRequest request, HttpServletResponse response)
     2             throws ServletException, IOException {
     3         String username=request.getParameter("username");
     4         String password=request.getParameter("password");
     5         if(username!=null&&!"".equals(username)&&password!=null&&!"".equals(username))
     6         {
     7             UserService userService=new UserServiceImpl();
     8             User u=new User();
     9             u.setUsername(username);
    10             u.setPassword(MD5.getMD5(password));//如果在dao里md5对密码处理,那么当选择自动登录时,cookie获得的密码将是md5处理后的,当filter去再次验证这个cookie的密码是就会二次md5处理,所以导致这个cookie无法正确验证
    11             u=userService.loginUser(u);
    12             if(u==null)
    13             {
    14 //登录错误
    15                 request.setAttribute("msg","用户名或密码错误");
    16                 request.getRequestDispatcher("/login.jsp").forward(request, response);
    17                 return;
    18             }
    19             else{
    20 //登录成功
    21                 if("on".equals(request.getParameter("autologin")))
    22                 {
    23 //用户选择了自动登录
    24                     Cookie cookie=new Cookie("autologin",u.getUsername()+"#"+u.getPassword());
    25                     cookie.setMaxAge(60*60*24*14);
    26                     cookie.setPath("/");
    27                     response.addCookie(cookie);
    28                 }
    29                 else{
    30 //用户没有选择自动登录
    31                     Cookie cookie=new Cookie("autologin","");//清除其他的登录cookie
    32                     cookie.setMaxAge(0);
    33                     cookie.setPath("/");
    34                     response.addCookie(cookie);
    35                 }
    36                 request.getSession().setAttribute("existUser", u);//创建session
    37                 response.sendRedirect(request.getContextPath()+"/index.jsp");
    38                 return;
    39             }
    40         }
    41         response.sendRedirect(request.getContextPath()+"/index.jsp");
    42     }
    43 
    44 }
    View Code

    登录的业务大概是这样的:提交表单→首先获得表单数据,beanutils绑定到user实体中→判断数据用户名和密码有效性→有效,则判断用户是否选择了自动登录,如果选择了自动登录则保存一个cookie来记录用户名密码和一个保存user实体的session.否则仅仅创建一个个session.

    这里注意点:一般保存到数据的密码都是加密的,这里用的是md5加密.本来是直接把form表单中的密码传到dao层,然后在进行md5加密的,但是因为后面要做过滤器,实现自动登录功能的.在过滤器中会根据自动登录时保存的cookie(用户名和密码)数据去数据库中核对数据的有效性然后返回所有user对象保存给session,这时session保存的密码已经是md5加密后的密码了,所以在需要判断session的时候,这个密码就会重复md5,所以这里索性就把md5放到serlvet中了,以免出错.

    涉及到的service层和dao层的代码在前两篇博客中:

    estore商城案例(一)------用户注册&邮件激活(上)

    estore商城案例(一)------用户注册&邮件激活(下)

    添加商品涉及到文件上传,可能涉及到的代码会多点,所以就放到明天写了.

    明天子啊继续撸......

  • 相关阅读:
    tf.get_variable
    tf.Variable
    tf.placeholder
    conda命令详解
    linux查看程序运行时占用的内存
    ubuntu安装openssh-server
    sed命令
    二分查找
    vue简单使用
    斐波那契数列求解
  • 原文地址:https://www.cnblogs.com/cmds/p/3906119.html
Copyright © 2020-2023  润新知