今天继续写一下第二个功能:登录&添加商品&商品列表
1、登录页面,很简单做个表单提交一下就可以了,记住登录的功能也先简单写一下,明天写filter过滤器会完善自动登录的功能,以及权限管理.
登录页面代码:
1 2 3 448 49My JSP 'login.jsp' starting page 5 6 19 20 21 22登录的页面
23 ${msg }//选择自动登录后,下次直接从session中获取username和pwd24
登录的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","");//清除其他的登录cookie32 cookie.setMaxAge(0);33 cookie.setPath("/");34 response.addCookie(cookie);35 }36 request.getSession().setAttribute("existUser", u);//创建session37 response.sendRedirect(request.getContextPath()+"/index.jsp");38 return;39 }40 }41 response.sendRedirect(request.getContextPath()+"/index.jsp");42 }43 44 }
登录的业务大概是这样的:提交表单→首先获得表单数据,beanutils绑定到user实体中→判断数据用户名和密码有效性→有效,则判断用户是否选择了自动登录,如果选择了自动登录则保存一个cookie来记录用户名密码和一个保存user实体的session.否则仅仅创建一个个session.
这里注意点:一般保存到数据的密码都是加密的,这里用的是md5加密.本来是直接把form表单中的密码传到dao层,然后在进行md5加密的,但是因为后面要做过滤器,实现自动登录功能的.在过滤器中会根据自动登录时保存的cookie(用户名和密码)数据去数据库中核对数据的有效性然后返回所有user对象保存给session,这时session保存的密码已经是md5加密后的密码了,所以在需要判断session的时候,这个密码就会重复md5,所以这里索性就把md5放到serlvet中了,以免出错.
涉及到的service层和dao层的代码在前两篇博客中:
添加商品涉及到文件上传,可能涉及到的代码会多点,所以就放到明天写了.
明天子啊继续撸......