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商城案例(一)------用户注册&邮件激活(下)

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

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

posted @ 2014-08-11 23:58  chainyu  阅读(2535)  评论(3编辑  收藏  举报