java 购物商城小项目训练
- java web 模拟购物车练习(项目一)
- 首页(index.jsp)
<div align="center" class="index">
<h1>Estore商城</h1>
<marquee class="work_text" scrollamount="4" width="800" height="100" direction="left" loop="-1">
<b>欢迎大家访问的我的首页!烟花散尽13141!</b>
</marquee>
<br/><br/><br/><b>
<c:if test="${user==null }">
欢迎光临,游客!<br/><br/>
<a href="${pageContext.request.contextPath }/register.jsp"><img alt="注册" src=".//images/Rej_s.png">注册</a><br/><br/>
<a href="${pageContext.request.contextPath }/login.jsp"><img alt="登录" src=".//images/Log_s.png">登录</a><br/><br/>
</c:if>
<c:if test="${user!=null }">
欢迎回来!${user.username }<br/><br/>
<a href="${pageContext.request.contextPath }/addProd.jsp"><img alt="添加商品" src=".//images/List_s.png">添加商品</a><br/><br/>
<a href="${pageContext.request.contextPath }/LogOutServlet"><img alt="注销用户" src=".//images/out_s.jpg">注销用户</a><br/><br/>
<a href="${pageContext.request.contextPath }/OrderListServlet"><img alt="订单查询" src=".//images/list_s.jpg">订单查询</a><br/><br/>
</c:if>
<a href="${pageContext.request.contextPath }/ProdListServlet"><img alt="商品列表" src=".//images/List_s.png">商品列表</a><br/><br/>
<a href="${pageContext.request.contextPath }/SaleListServlet"><img alt="榜单下载" src=".//images/List_s.png">榜单下载</a><br/><br/>
<a href="${pageContext.request.contextPath }/car.jsp"><img alt="查看购物车" src=".//images/SeeBuy_s.jpg">查看购物车</a>
</b>
</div>
- 在首页中我们大体上为两种身份的人提供界面欣赏,一个是管理员另外一个是普通用户还有一个是以有课的身份去浏览本网页的。在我们的注册页面中我们只提供注册普通用户的,由于时间紧张我们并没有提供对管理员的身份的认证,下面我简单说一下普通员工的身份的认证,
- 注册(register.jsp)
- 在注册页面中我们比较首页而言是复杂的,在注册的页面我们需要在提交前对用户提交的数据进行相关的检查,首先用户需要提交的数据是用户名+密码+密码2+昵称+邮箱+验证码对于这六个数据大前提是我们用户提交的数据不能为空,其次就是两次密码必须是一致的,还有提交的邮箱要符合邮箱的格式。这些都符合了才能通过客户端提交到服务器上,在服务器上为了安全起见我们还是得在进行这些数据的检查目的就是为了防止别人截取到我们的数据进行修改。为了给用户呈现一种友好的界面我有使用了无闪刷新,这样就会在用户焦点离开某项时就会对用户进行相应的提示,总的说来在这个注册页面中我们还是做了不少的前期工作的,。前期标准都符合的才能提交有服务起判断是否合法。这个数据的合法性有后面我们要介绍的RegisteServlet来解决,
- 刚才也说了数据最后是提交到服务器上的,那么我们下面说的是服务器是如何处理服务器的(RegisteServlet)
- 第一步验证用户提交的验证码是否正确
if(code!=null && !code.equals("") && !code.equals(AuthCode))
{
//验证码错误
request.setAttribute("msg", "验证码错误!请核实");
request.getRequestDispatcher("/register.jsp").forward(request, response);
}
- 第二步对提交的数据进行封装,方便数据库进行相关操作
User user=new User();
BeanUtils.populate(user, request.getParameterMap());
- 第三步业务类调用数据方法操作数据的注册
user.setPassword(MD5Utils.md5(user.getPassword()));
/**
* 第四步 调用service方法注册
*/
service.regist(user);
- 第五步成功调回首页这里也可以直接调到登陆页
response.getWriter().write("注册成功!请注意留意邮箱的激活码进行账号激活!");
- 讲完注册当然就是登录了,有了注册的页面基础上我们的登录做起来就得心应手了,所以登录我就不说了,那么现在我们已经可以登录我们的购物商城的系统中去了,那么我们在这个商城中到底能干什么呢,下面才是我们的重点,针对两个身份我们有不同的功能,首先我来说普通用户
- 下订单
- 首先我们的用户能够看到商城先所有的代售商品,并可以将他们加入到属于自己的购物车中,并进行支付或者取消支付,在我们上面的一句话转换到我们的程序中我们就需要好几个类来实现
- 第一个我们需要一个ProdList.jsp界面来将商城中的所有商品进行展示,在展示之前我们需要ProdListServlet来获取商城中到底有哪些东西,获得到商城中商品后我们需要一个购物车car.jsp相当于容器来装下我们选择购买的东西,这里我们将自己购买的东西放在一个HashMap中,而这个Map我们将他放在session中,读者如果想实现客户端缓存的话可以将这个map存储到cookie中,最后想要支付我们还需要一个pay.jsp和计算金额的Servlet来实现支付功能。
- ProdListServlet
ProdService service=(ProdService) BasicFactory.getFactory().getInstance("ProdService");
User user=(User) request.getSession().getAttribute("user");
List<Prod> list=null;
/*
if(user!=null && "admin".equals(user.getRole()))
{
int uid=user.getId();
list=service.getAllProds(uid);
}
else
{
list=service.getAllProds();
}
加入监听器后就不需要再这里进行判断了
*/
list=service.getAllProds();
request.getSession().setAttribute("list", list);
request.getRequestDispatcher("/prodlist.jsp").forward(request, response);- ProdList.jsp
<c:forEach items="${list }" var="l">- 只需要取到在ProdListServlet中存储的list就可以进行遍历了,就可以实现购物商城中的商品的浏览,到这里我们的购物商城已经实现了,
- 下面就是加入购物车,加入购物车笔者建议在加入之前我们就开始判断数数据的合法性,基本合法就是购买数量不能为0 还有就是不能大于商城中商品的数量,在合法的数据中我们就将这个商品加入到我们自己的购物车(HashMap)。计入购物车中我们得将他展现出来供用户操作Car.jsp
- car.jsp
<c:forEach items="${carMap }" var="car" varStatus="status">
<c:set var="i" value="${i+1 }"></c:set>
<tr align="center">
<td><img src="${pageContext.request.contextPath }/GetImgServlet?id=${car.key.id }"></td>
<td>${car.key.name }</td>
<td>${car.key.category }</td>
<td>${car.key.price }元</td>
<td><b><a href="${pageContext.request.contextPath }/ChangeCarServlet?id=${car.key.id}&buynum=${car.value-1}"> - </a></b><input type="text" name="pnum" value="${car.value }" style="width: 30px;" onblur="check('${car.key.id }',this,'${car.value }','${status.count }')" /><b><a href="${pageContext.request.contextPath }/ChangeCarServlet?id=${car.key.id}&buynum=${car.value+1}"> + </a></b></td>
<td><input type="text" name="oneprice" value="${car.value * car.key.price }" width="5px;"/>元</td>
<c:set var="sum" value="${sum + car.value * car.key.price }"></c:set>
<td name="price"><a href="${pageContext.request.contextPath }/DeleteProdServlet?id=${car.key.id}">删除商品</a></td>
</tr>
</c:forEach>
- 第一个我们需要一个ProdList.jsp界面来将商城中的所有商品进行展示,在展示之前我们需要ProdListServlet来获取商城中到底有哪些东西,获得到商城中商品后我们需要一个购物车car.jsp相当于容器来装下我们选择购买的东西,这里我们将自己购买的东西放在一个HashMap中,而这个Map我们将他放在session中,读者如果想实现客户端缓存的话可以将这个map存储到cookie中,最后想要支付我们还需要一个pay.jsp和计算金额的Servlet来实现支付功能。
- 到这里我们购物商城的框架就已经搭建好了,下面还剩下的就是管理员的一些操作和用户购物车结算或取消的一些相关操作,这些只是我们留在下一节进行讲解,在文章的最后我也会将我们的开发过程的笔记和最终的项目源码奉上。尽请期待!
java 购物商城小项目训练的更多相关文章
- java客房管理小项目,适合java小白练手的项目!
java客房管理小项目 这个客房管理小项目,适合java初学者练手.功能虽然不多,但是内容很齐全! 喜欢这样文章的可以关注我,我会持续更新,你们的关注是我更新的动力!需要更多java学习资料的也可以私 ...
- Java Swing客户端小项目
记录一下两个用java swing写的客户端. 项目1: 关键词:swing jtable 代码如下: 1.主类: package com.my.agent.client; import java. ...
- java基础部分小项目
贪吃蛇项目 import java.awt.Color; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.even ...
- 27.Java 飞机游戏小项目
开篇 游戏项目基本功能开发 飞机类设计 炮弹类设计 碰撞检测设计 爆炸效果的实现 其他功能 计时功能 游戏项目基本功能开发 这里将会一步步实现游戏项目的基本功能. 使用 AWT 技术画出游戏主窗口 A ...
- Java基础自学小项目
实现一个基于文本界面的<家庭记账软件> 需求:能够记录家庭的收入,支出,并能够收支明细表 主要涉及一下知识点: - 局部变量和基本数据类型 - 循环语句 - 分支语句 - 方法调用和返回值 ...
- Java小项目之:教你做个聊天系统!
Java小项目之:聊天系统 今天给大家带来的java练手小项目是一个简单的聊天室,界面简单,操作不难. 分为注册系统,登录系统和聊天系统三部分,很适合java小白练手. 完整的源码和素材请关注并私信我 ...
- 【实战小项目】python开发自动化运维工具--批量操作主机
有很多开源自动化运维工具都很好用如ansible/salt stack等,完全不用重复造轮子.只不过,很多运维同学学习Python之后,苦于没小项目训练.本篇就演示用Python写一个批量操作主机的工 ...
- 你要的SSM(Spring+Springmvc+Mybatis)小项目来了!!!
SSM-Maven-Heima 这是一个使用 SSM(Spring+Springmvc+Mybatis)框架的商城小项目,使用Maven构建项目,以MySQL为数据库系统,Redis的缓存服务器(并不 ...
- 毕业设计代做,各种系统微服务项目ssm项目,员工管理系统,微信小程序,购物商城,二手商城系统,销售系统,等等
毕业设计代做,各种系统,微服务项目,ssm项目 小程序,商城等,期末作业等都可以,价格好说,长期接单, 有项目说明书,软件介绍相关文档,答辩的时候包过,知识点对接好,给你讲解等, 毕业设计代做,各种系 ...
随机推荐
- Java学习笔记之---比较接口与抽象类
Java学习笔记之---比较接口与抽象类 抽象类是描述事物的本质,接口是描述事物的功能 接口与抽象类的异同 1.一个类只能继承一个父类,但是可以有多个接口 2.抽象类中的抽象方法没有方法体,但是可以有 ...
- Java底层技术系列文章-总揽
对于工作中经常用到的东西,还是多看看实现原理,这样用着才能放心. 源码思想学习计划: 1.java基础库 HashCode深入理解 java线程框架窥探 2.集合类 java枚举类使用 递归 ...
- LoadRunner Community Edition 12.60 无法获取Community License
更新:该问题于2018/9/28已修复.附邮件: Hi Morris, Thank you for your update. I would like to tell you that we had ...
- [原创]Greenplum数据库集群实践
GreenPlum实践 ============================================== 目录: 一.安装环境准备 二.GP数据库安装 三.集群添加standby节点 四. ...
- ASP.NET CORE配置用户密码验证
在 class Startup 中配置 public void ConfigureServices(IServiceCollection services) { services.AddDbConte ...
- 为git伸冤(使用git中可能会踩的一些坑)
窦娥被冤,六月飞霜.今天我两次遇到git被冤枉的情况,要是其它人也遇到这种情况导致git使用量缩小,那也要六月飞霜了. git第一次被冤枉是同事以为git的版本管理有问题.事情是这样的,同事提交新版本 ...
- Samba与nfs与ftp
Samba服务 samba是一个网络服务器,用于Linux和Windows之间共享文件. samba端口号 samba (启动时会预设多个端口) 数据传输的TCP端口 139.445 进行NetBIO ...
- kubernetes的volume的权限设置(属主和属组)
apiVersion: v1kind: Podmetadata: name: hello-worldspec: containers: # specification of the pod's c ...
- python函数基础-参数-返回值-注释-01
什么是函数 函数就是有特定功能的工具 # python中有内置函数(python解释器预先封装好的)与自定义函数(用户自定义封装的)之分 为什么要用函数 # 可以减少代码冗余,增加代码复用性 # 使代 ...
- 知识图谱学习与实践(4)——通过例句介绍Sparql的使用
通过例句介绍Sparql的使用 1 简介 SPARQL的定义,是一个递归的定义,为SPARQL Protocal and RDF Query Language,是W3C制定的RDF知识图谱标准查询语言 ...