利用Servlet+JavaBea+JDBC简单实现购物车
Servlet+JavaBea+JDBC应用(利用sql数据库实现购物车)
一、任务描述
网上购物是人们日常生活的重要事情之一。在超市中有很多日常生活的用品,如电饭煲、蒸锅、洗衣机、电冰箱等。
本任务要求,通过所学Servlet、JavaBean和Session知识以及购物车的访问流程(详见P.152),模拟实现购物车功能。用户需要先登录,然后跳转到商品列表页面,点击购买则跳转到购物车中所购买商品的列表页面,否则,返回商品列表页面。另外,在商品列表页面,可以按照商品名称进行查询。
- 本任务需要编写3个JSP页面(可以参考下图)、5个Servlet文件(一个是实现登录,一个是商品列表,一个实现商品查询,一个实现添加购物车功能,一个现实购物车信息)、2个JavaBean文件和2个dao文件和1个数据库连接文件,参考下图
-
当首次登录商品列表页面,提示用户进行登录。登录成功进入到商品列表页面
-
选择某个商品,点击“购买”,可以把该商品添加到购物车内
-
要求商品列表页面,能够根据商品名称筛选出相应的商品
二、运行结果
登录页面
商品列表页面
名称筛选后的商品列表页面
购物车列表页面
首次登陆购物车列表页面
三、任务目标
-
学会分析“实现购物车”程序的实现思路
-
根据思路独立完成“实现购物车”的源代码编写、编译和运行
-
掌握Servlet和JSP运行原理
-
掌握购物车的工作流程
-
掌握JavaBean、EL表达式和JSP标签库(JSTL)的使用
-
熟练应用Servlet技术、JavaBean和Session对象完成购物车
四、实现思路
4.1 用户进行登录思路
完成简单Login.html页面设置标签的id,首先在servlet中通过request.getParameter("username");request.getParameter("password");获取输入信息,其次通过dao层的Username中的login(User user)方法实现查询数据库信息对照是否相等,在相等时实现跳转商品页面,在不相等时返回登入界面;
4.2 显示全部商品信息
当用户验证登入成功后在LoginServlet跳转至sy1Allbook(Servlet),通过dao层的BookManager的getALLBooks()获取数据库中的所有信息保存于list中,并设置JSP的内置对象的request将信息以传至manager_Page.jsp(商品信息表)中,通过EL表达式的${}与JSP标签库(JSTL)显示在页面中;
4.3 点击“购买”
当用户点击购买时带参数(ID)跳转至myCartServelet中当首次点击时创建HttpSession对象保存信息,再次点击时将信息加值session对象中。最后显设置JSP的内置对象的request将信息以传至myselfCart.jsp (购物车信息表)中,通过EL表达式的${}与JSP标签库(JSTL)显示在页面中;
4.4 查询思路
首先通过选择查询的标签(pressName、bookAuthor、bookName),以及填写的信息(Keyword)传至sy1SearchServelet中,其次通过BookManager的getSearch(String Query_conditions, String Keyword) 查询数据库方法返回list,最后显设置JSP的内置对象的request将信息以传至manager_Page.jsp(商品信息表)中,通过EL表达式的${}与JSP标签库(JSTL)显示在页面中;
五、总结或感悟
5.1 错误总结
使用response.sendRedirect():跳转导致信息无法显示。
5.2 错误解决
使用request.getRequestDispatcher().forward(request,response);跳转
5.3 错误笔记
- request.getRequestDispatcher().forward(request,response):
- 属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和request.getAttribute()
- 在前后两次执行后,地址栏不变,仍是当前文件的地址
- 不能转向到本web应用之外的页面和网站,所以转向的速度要快
-
URL中所包含的“/”表示应用程序(项目)的路径
-
response.sendRedirect():
- 属于重定向,也是客户端跳转,相当于客户端向服务端发送请求之后,服务器返回一个响应,客户端接收到响应之后又向服务端发送一次请求,一共是2次请求,前后页不共用一个request,不能读取转向前通过request.setAttribute()设置的属性值
- 在前后两次执行后,地址栏发生改变,是目标文件的地址
- 可以转向到本web应用之外的页面和网站,所以转向的速度相对要慢
- URL种所包含的"/"表示根目录的路径
特殊的应用:对数据进行修改、删除、添加操作的时候,应该用response.sendRedirect()。如果是采用了request.getRequestDispatcher().forward(request,response),那么操作前后的地址栏都不会发生改变,仍然是修改的控制器,如果此时再对当前页面刷新的话,就会重新发送一次请求对数据进行修改,这也就是有的人在刷新一次页面就增加一条数据的原因。
如何采用第二种方式传递数据:
-
可以选择session,但要在第二个文件中删除
-
可以在请求的url中带上参数,如"add.htm?id=122"
5.4 总结感悟
访问数据库的也时一次次的连接数据库、执行SQL语句等出现代码大量的冗余;学习方法的封装,将访问数据库的操作,以及执行SQL语句的操作封装在一个类中,减少代码冗余。经过这次的课程设计,在实验中学习到了我对前端的请求相应有了更深的理解。
参考文献
- 基于B/S结构的电子商务的研究与应用(哈尔滨工程大学·车彦朋)
- 基于贪心算法的物流配送系统设计与实现(西北师范大学·柴荣)
- 汽车用品电子商务网站设计与实现(吉林大学·郑志远)
- 网上交易系统的设计与实现(厦门大学·杨云)
- 电子产品网络购物系统的设计与实现(电子科技大学·李睿)
- 基于JSP的在线购物系统(吉林大学·李可)
- 基于B/S结构的电子商务的研究与应用(哈尔滨工程大学·车彦朋)
- 基于Struts与Hibernate的网上购物系统的设计与实现(武汉理工大学·崔跃海)
- 电子商务中JSP技术的应用研究(吉林大学·王白石)
- 基于JSP网上购物系统的实现与应用(南昌大学·曾磊)
- 龙城电子商城购物系统的设计与实现(电子科技大学·任艳梅)
- 网上购物系统的设计与实现(电子科技大学·汤莹莹)
- 基于.NET的在线购物平台研究与实现(东北师范大学·刘雪娇)
- 网上交易系统的设计与实现(厦门大学·杨云)
- 基于JavaEE架构的网上购物系统的设计与实现(河北工业大学·李国娟)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕业设计货栈 ,原文地址:https://m.bishedaima.com/yuanma/35193.html