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>

登录的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 }

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

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

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

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

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

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

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

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

时间: 2024-08-03 19:17:12

estore商城案例(二)------登录&添加商品&商品列表(上)的相关文章

estore商城案例(二)------登录&amp;添加商品&amp;商品列表(下)

撸完了登录模块,接着撸商品添加,和商品列表模块: 先亮出数据库: 1 DROP TABLE IF EXISTS products; 2 CREATE TABLE products ( 3 id varchar(100) NOT NULL, 4 name varchar(100) DEFAULT NULL, 5 price double DEFAULT NULL, 6 category varchar(100) DEFAULT NULL, 7 pnum int(11) DEFAULT NULL,

estore商城案例(三)------Filter过滤器:自动登录&amp;权限管理

前面写好了用户登录\注册\添加商品的功能模块.下面写一下对于这些功能模块的相关过滤器---自动登录与权限管理: 一.自动登录: 业务逻辑是这样的:jsp登录页面有个“自动登录选项”,如果登录这勾选了,那么在serlvet程序中则会额外的生成一个保存用户名和密码的cookie,然后每次用户向服务器发送请求时,Filter过滤器都会先判断用户的登录状态(session),如果已经登录那么无需做出受任何操作直接放行,如果没有登录(无session),那么这时体现自动登录功能作用的时候到了,先获取自动登

estore商城案例(四、五)------添加购物车&amp;购物车显示/生成订单&amp;在线支付

一.添加购物车 1.获得商品id提交到servlet程序 2.根据id获取product对象 3.判断seesion中是否有存在购物车session.没有的话表示  添加的第一件商品  需要先创建session:有的话直接在session里添加获得的produce(添加product 要先判断session中是否存在对应的商品,存在话直接修改商品数量,没有的话新添加这个商品). servlet程序代码: 1 public void doGet(HttpServletRequest request

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

先补上昨天注册页面的验证码代码: 1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 BufferedImage bf=new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); 4 Graphics2D graphice=(Graphics2D

用PHP添加购物商品

1 <?php 2 session_start(); 3 header ( "Content-type: text/html; charset=UTF-8" ); //设置文件编码格式 4 require("system/system.inc.php"); //包含配置文件 5 /** 6 * 1表示添加成功 7 * 2表示用户没有登录 8 * 3表示商品已添加过 9 * 4表示添加时出现错误 10 * 5表示没有商品添加 11 */ 12 $reback =

零基础学习java------35---------删除一个商品案例,删除多个商品

一. 删除一个商品案例 将要操作的表格 思路图  前端代码 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>> <!DOC

在基础管理下添加一个商品类型维护的模块(7-31)

一    验证不能为空的操作: 在form中添加代码@NotEmpty(field="商品类型", message="{errors.required}") 在controller中对应不能为空的位置添加 if(results.hasErrors()) return "manager/commodityType/addCommodityType"; 3.不能为空的格式:<td style="background-color: #f

Cookie小案例-----记住浏览过的商品记录

Cookie小案例------记住浏览过的商品记录 我们知道,这个功能在电商项目中很常见.这里处理请求和页面显示都是由servlet实现,主要是为了体现cookie的作用, 实现功能如下: 1,点击购买的商品后,显示到另一页面 2,记住用户浏览过的商品,并在页面时中显示 3,当浏览过的数量超过最大值限度时,最下面一个商品被挤下去 4,当浏览过的商品本身就在浏览记录中,显示列表将其从中间移到最上面 显示一打开网站的样子和显示用户的浏览记录: package cn.itcast.cookie; im

MySQL主从复制故障案例二

案例二: 一主多从的架构下,主库master宕机 解决思路: 1,登录从库 show processlist: 查看两个线程的更新状态 结果说明: 之前主从同步正常 分别登录其余2个从库32,33查看: cat   /data/3306/data/master.info cat   /data/3307/data/master.info 比较,那个POS最大,说明更接近主库,那么我们就选举此slave作为新的master. 或者利用半同步技术,直接选举实时同步了的这个库为新的master 如果,