博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
estore商城案例(二)------登录&添加商品&商品列表(上)
阅读量:4986 次
发布时间:2019-06-12

本文共 3365 字,大约阅读时间需要 11 分钟。

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

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

登录页面代码:

1  2    3      4     My JSP 'login.jsp' starting page 5      6     19   20   21   22   

登录的页面

23 ${msg }//选择自动登录后,下次直接从session中获取username和pwd24
25
26
27
28
29
30
31
32
33
35
36
37
38
39
41
42
43
44
45
46
用户名
密码 34
自动登陆
40
47
48 49
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","");//清除其他的登录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 }
View Code

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

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

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

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

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

转载于:https://www.cnblogs.com/cmds/p/3906119.html

你可能感兴趣的文章
蚂蚁拼图
查看>>
java是传值还是传引用
查看>>
angularJS快速入门
查看>>
markdown基本语法
查看>>
【译】为什么估算很难?!从旧金山到洛杉矶的旅行
查看>>
半年没玩机会碰到驱动了,最近才有机会研究了下所谓防黑墙demo
查看>>
我记录开源系统1.6源码解析(一)
查看>>
256. Paint House房屋染色
查看>>
671. Second Minimum Node In a Binary Tree 非递减二叉树中第二小的元素
查看>>
747. Largest Number At Least Twice of Others比所有数字都大两倍的最大数
查看>>
105. Construct Binary Tree from Preorder and Inorder Traversal根据前中序数组恢复出原来的树...
查看>>
MS-SQL Server [摘改]
查看>>
实验五 6 6
查看>>
进阶攻略|前端最全的框架总结
查看>>
网站二次开发的总结
查看>>
把手账打印成书 把回忆装订成册
查看>>
洛谷P4116 Qtree3
查看>>
洛谷 P1195 口袋的天空
查看>>
网络协议
查看>>
网络基础之网络协议
查看>>