JavaEE简易购物车(jsp+sqlserver+jdbc+javabean)

JavaEE简易购物车项目源文件

一、题目

利用JSP编程技术实现一个简单的购物车程序,具体要求如下:
(1)用JSP编程实现一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息。另外,登录页面请实现记住密码功能。
(2)编写一个JSP程序来获取用户提交的登录信息并查询数据库,如果用户名为本小组成员的名字且密码为对应的学号时,采用JSP内置对象的方法跳转到订购页面(显示店中商品的种类和单价等目录信息);否则采用JSP动作转到登录失败页面并提示用户重新登录。
(3)当顾客填好所需商品的数量并点击提交按钮时,将前面订购的商品放入购物车中并显示购物车里的相关信息,包括商品的名称和数量以及所有商品的总价格(请使用JavaBean实现业务功能)。
(4)将商品信息写入数据库,计算价格时通过查找数据库来完成。

以下功能选做:
(5)实现一个简单的注册功能,使新用户能够将自己的信息(姓名和学号)写进数据库,以供后面登录时使用
(6)将数据库的相关操作改写成一个JavaBean

二、实现

1、流程图

在这里插入图片描述

2、具体页面

(1)登录界面(Login.jsp)

在这里插入图片描述
1.1 获取用户名和密码

  • 获取所有的Cookie信息,当cookies不为空时,遍历获取用户名和密码,为了防止出现乱码,需要将用户名用 URLDecoder.decode(cookies[i].getValue(), “UTF-8”)方法解码。

2.1 用户输入用户名和密码

  1. 表单:
    <form name="login" action="LoginCheck.jsp" method="post" onsubmit="return a()">
  2. 用户名框:
    将input的placeholder属性设置为“UserName”可将提示内容显示在输入框中;value设为<%=username%>可以在记住用户名后,刷新页面后能够自动填入用户名信息;name属性设为“username”。密码框与用户名框一致,将placeholder、value、type、name的值改为对应的值即可;
  3. 记住密码
    input的type设为“checkbox”,即为复选框;value设为“yes”,用来标识是否勾选记住密码复选框;name设为“remember_pwd”;
  4. 重置按钮
    在表单中将button的type属性设为“reset”,即可重置输入的内容;
  5. 登录按钮
    在表单中将button的type属性设置为“submit”,在页面点击登录按钮时,会以post方法将表单内容提交到LoginCheck.jsp。
  6. 判断用户名密码是否为空
    用login.username.value和login.password.value;获取用户在表单中输入的信息,判断用户名、密码是否为空,不为空返回true提交表单;为空则提示错误。
(2)登录检查页面(LoginCheck.jsp)

2.1 <jsp:useBean id=“DBean” class=“com.DBean” />

  • 声明一个唯一id的JavaBean实例,LoginCheck,jsp通过DBean识别JavaBean,通过DBean.method来操作JavaBean。

2.2 获取用户名、密码和checkbox的值

  • 用request.getParameter方法从表单中获取用户名、密码和checkbox的值;创建用户名和密码cookie信息,因为用户名为中文,所以在创建usernameCookie时,需要用URLEncoder.encode()方法进行编码;

2.3 创建结果集对象ResultSet sqlRes;

  • 创建sql查询语句
    (sql_user = “SELECT username,password FROM User_info WHERE username=’” + username +"’")结合数据库操作DBean(DBean.executeQuery(sql_user))查询用户信息;
  • 用sqlRes.getString()方法获取用户的用户名和密码,用户信息与获取的表单的信息进行比较,用户名密码对应则用request.getSession().setAttribute()方法将用户名存入session中,并且跳转至购物界面(Shopping.jsp);如果用户名不存在则用jsp的forward动作跳转至登录失败界面,同时使用jsp的param动作将username的fail值传入:<jsp:forward page="LoginFail.jsp"> <jsp:param value="fail" name="username"/> </jsp:forward>
    如果密码错误则将password的fail值传入:
    <jsp:param value="fail" name="username"/>

2.4 是否记住密码

  • 判断用户是否在登录界面上勾选记住密码复选框,即通过request.getParameter
    (“remember_pwd”)获取的值与“yes比较”,如果为“yes”则设置MaxAge为一个月,否则设为0,然后将usernameCookie和pwdCookie添加到cookie信息中,最后通过sendRedirect方法跳转至购物界面。

2.5 关闭数据库连接

  • 最后调用DBean.closeDB(sqlRes);关闭数据库连接。
(3) 注册界面(Register.jsp)

在这里插入图片描述
3.1 用户输入用户名和密码

  1. 表单:
  2. 用户名框:将input的placeholder属性设置为“用户名”可将提示内容显示在输入框中;name属性设为“username”。
  3. 密码框与密码确认框,密码框将placeholder、type、name的值改为对应的“密码、pwd、password、pwd”;密码确认框则改为“确认密码、password、confirm_pwd”。
  4. 注册按钮:在表单中将button的type属性设置为“submit”,点击注册按钮以post方法将表单内容提交到RegisterCheck.jsp。

3.2 判断用户名密码是否为空且密码是否对应

  • 用loginCheck.username.value、loginCheck.pwd.value、loginCheck.confirm_pwd.value获取用户在表单中输入的信息,判断用户名、密码是否为空,为空则提示错误返回false;若不为空则判断pwd与confirm_pwd是否相等,不等则提示错误并返回false,相等则返回true提交表单信息。
(4)注册检查页面(RegisterCheck,jsp)
  1. <jsp:useBean id=“DBean” class=“com.DBean” />
    RegisterCheck,jsp通过DBean识别JavaBean,通过DBean.method来操作JavaBean。
  2. 用request.getParameter方法从表单中获取用户名、密码的值。
  3. 创建结果集对象ResultSet sqlRes、sql查询语句
    (select_user = “SELECT username FROM User_info”;)结合数据库操作DBean(DBean.executeQuery(select_user))查询用户信息,用sqlRes.getString()方法获取用户的用户名,与表单提交的用户名进行比较,如果相同则提示“用户已存在!”并刷新页面让用户重新注册;juge用来判断表单中的用户名是否已被占用,若为true则创建sql插入语句(insert_user = “INSERT INTO User_info(username,
    password) VALUES(” + username + “,” + password + “)” ),结合DBean(DBean.executeUpdate(insert_user))将表单信息插入数据库。
  4. 最后调用DBean.closeDB(sqlRes)关闭数据库连接。
(5)购物界面(Shopping.jsp)

在这里插入图片描述
在这里插入图片描述

  • 将商品信息展示在购物界面,商品下面有购买数量输入框();在购物界面的最下方设置“提交订单”按钮,点击“提交订单”按钮将所有输入的购买数量信息提交至购物车界面(ShoppingCart.jsp)。
(6)购物车界面(ShoppingCart.jsp)

在这里插入图片描述
6.1 <jsp:useBean id=“Goodsbean” class=“com.GoodsBean” />
ShoppingCart,jsp通过DBean识别JavaBean,通过DBean.method来操作JavaBean。
6.2 通过request.getParameterValues(“buy”)方法获得所有商品的数量信息。
6.3 通过for循环获取nums里的值,如果为0则跳过即没有购买;不为0则通过Goodsbean.SelectGoods(i)方法获取第i件商品(商品i标号与数据库中id的值相对应)。
6.4 获取商品信息:

  1. Goodsbean.GetName()通过数据库操作获取商品名字;
  2. (Goodsbean.GetPrice())通过数据库操作获取商品价格,再用Float.parseFloat()将价格转化为浮点型;
  3. Integer.parseInt(nums[i])将数量转化为整数;
  4. 通过sum += num * price计算总价格。

6.5 通过<%=%>表达式将商品名、数量、单价、总价显示在购物车界面。

(7)数据库操作(DBean.java)

7.1 定义相关变量:driver、dbURL、dataBaseName、dataBasePwd;
7.2 定义数据相关对象:Connection conn、Statement sqlState、ResultSet sqlRes;
7.3 连接数据库函数getconn()
conn = DriverManager.getConnection(dbURL, dataBaseName, dataBasePwd);
7.4 查询数据函数executeQuery(String sql)

  1. 首先创建DBean的实例化对象db(DBean db = new DBean(););
  2. 再连接数据库(conn = db.getconn(););
  3. 然后再调用Connection对象的createStatement来创建Statement对象(sqlState = conn.createStatement(););
  4. 最后执行sqlSatate的executeQuery方法(sqlRes = sqlState.executeQuery(sql);)查询相关的信息。

7.5 插入数据函数Update(String sql)
调用sqlState.executeUpdate(sql)将数据插入数据库对应的表中。
7.6 关闭数据库closeDB(ResultSet sqlRes)
关闭结果集对象:sqlRes.close();关闭语句对象:sqlState.close();关闭数据库Connection对象:conn.close()。

(8)商品操作(GoodsBean.java)

8.1 定义全局变量:goods_name、goods_price;
8.2 查询商品信息函数SelectGoods(int id)

  1. DBean对象实例化(DBean db = new DBean());
  2. 定义数据库结果集对象(ResultSet sqlRes);
  3. sql查询语句
    sql_user=“SELECT goods_name,goods_price FROM Goods_info WHERE id=”+id ;
  4. 调用DBean的查询函数(sqlRes = db.Query(sql_user));
  5. 获取商品信息
    sqlRes.getString(“goods_name”)、sqlRes.getString(“goods_price”);
(9)拦截非法登录(LoginFilter.java)
  • 在loginSuccess.html设置过滤器,用req.getSession().getAttribute(“nameSession”)方法获取在登录界面存的用户名session,判断session中是否为空,如果为空则提示未登录然后返回登录界面;如果不为空则执行chain.doFilter(request,response)语句,继续向下执行。
发布了41 篇原创文章 · 获赞 28 · 访问量 9049

猜你喜欢

转载自blog.csdn.net/wang15877/article/details/103686264