SSH实战 · 唯唯乐购项目(中)
- 创建一级分类表并导入基本数据
- 建包及相应的类:
- com.weiwei.shopping.category
- action :CategoryAction
- service :CategoryService:业务层对象
- dao :CategoryDao:持久层对象
- vo :Category:实体对象 ;Category.hbm.xml:映射文件
- 对Service和DAO进行配置:
- 在DAO中注入sessionFactory
- 在Service中注入DAO
- 需要在IndexAction中注入一级分类的Service.
- IndexAction 调用 CategoryService 调用 CategoryDao
- 将一级分类的数据显示到页面
- 将一级分类的数据存入到session中:因为之后很多页面都会用到。
- 建表:
- 建包及相应的类:
- com.weiwei.shopping.product
- action :ProductAction
- service :ProductService:业务层对象
- dao :ProductDao:持久层对象
- vo :Product:实体对象 ;Product.hbm.xml:映射文件
- 对Service和DAO进行配置:
- 在DAO中注入sessionFactory
- 在Service中注入DAO
- 需要在IndexAction中注入商品的Service.
- IndexAction 调用 ProductService 调用 ProductDao
- 查询热门商品
- is_hot: 0:不是热门商品 1:是热门商品;
- 查询带有个数
- 分页查询
- 将查询到的数据保存到值栈中
- IndexAction 调用 ProductService 调用 ProductDao
- 查询最新商品:
- 按商品上传日期倒序进行排序 只显示10个.
- 将查询到记录保存到值栈中:
- 点击商品链接:
- 编写Action:
- 配置Action:
- 在Action中调用Service完成根据ID进行查询的方法:
- 在页面上显示相应数据 :
- 创建二级分类的包及类:
- com.weiwei.shopping.categorysecond
- action :CategorySecondAction
- service :CategorySecondService
- dao :CategorySecondDao
- vo :CategorySecond
- CategorySecond.hbm.xml
- 配置一级分类和二级分类的关联关系:
- Category.xml
- CategorySecond.hbm.xml
- 点击一级分类的链接:
- 传递一级分类的cid,根据cid查询所有商品.
- 编写Action:
- 接收cid:
- 编写一个执行的方法:因为再ProductService中已经做了FindAll()方法,所以在这里直接注入ProductService 调用方法,然后返回字符串进行页面跳转。
- 在页面上用迭代标签迭代显示左侧分类 ;
- 关联查找:直接从session中获得一级分类的数据,需要在映射文件中配置一级分类上二级分类的集合(lazy="false" );并且为了数据顺序不变,按二级分类的遍号排序显示(order-by="csid" )。
- 查询商品,带有分页显示商品
- 回到商品列表页面
- 需要查询:商品集合,当前页数,总页数(总记录数),每页显示记录数.( 将后台的这些数据带到页面上,首选:值栈 )
- 将这些数据封装到一个分页类中。(最后将分页类保存到值栈中就OK)。
- 在工具包中封装一个PageBean。
- 完成查询:
- 传递当前页数到ProductAction中,提供set方法;
- 调用ProductService的FindByPageCid()方法完成查询;参数:Cid,page;
- 配置二级分类和商品关联关系——类似于一级分类月二级分类的配置。
- 点击二级分类链接:
- 传递csid
- 传递page=1
- 编写Action :
- 接收csid:
- 接收page
- 调用Service完成查询:
- 封装成PageBean
- 在页面中进行显示
- 封装购物车对象
- Cart:购物车对象
- CartItem的集合
- total:总计 = 小计相加
- 功能:
- 将购物项添加到购物车
- 从购物车中移出购物项
- 清空购物车
- CartItem:购物项
- Product:商品信息
- count:购买某种商品的数量
- subtotal:购买某种商品的小计=单价*数量(Product.shop_price*count)
- 在CartAction中:
- 获得购物车
- 调用clearCart()方法
- 在页面上:
- 用struts迭代标签判断
- 若购物车为空则不显示相关按钮、表单
- 若不为空则显示表单、相关商品
- 点击页面的移出链接,传入pid
- 在CartAction中:
- 获得购物车
- 调用removeCart()方法

- com.weiwei.shopping.order
- action :OrderAction
- service :OrderService
- dao :OrderDao
- vo :
- Order
- Order.hbm.xml
- OrderItem
- OrderItem.hbm.xml
- applicationContext.xml
- 配置映射
- OrderAction 调用 OrderService 调用 OrderDao
- 实现提交订单时页面的跳转:修改我的购物车页面的提交按钮链接,再编写OrderAction、配置struts.xml
- 生成订单
- 保存订单的数据
- 在页面中显示订单数据
- 通过模型驱动的对象将数据传递到页面.(原理还是值栈)
- 我的订单
- 根据用户的uid查询当前用户的所有的订单
- 在线付款原理图:

- 在线付款流程分析

- 本项目付款功能流程
- 跳转到页面:根据订单的oid查询订单.
- 在页面中对其进行付款
- 付款功能的实现
- 在线支付的方式
- 在线支付
- 与第三方支付公司对接:(易宝)
- 在线支付的流程
- 付款功能代码实现
- 修改订单数据:(收货人,地址,电话)
- 完成付款的功能
SSH实战 · 唯唯乐购项目(中)的更多相关文章
- SSH实战 · 唯唯乐购项目(上)
前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...
- SSH实战 · 唯唯乐购项目(下)
后台模块 一:后台用户模块 引入后台管理页面 创建adminuser表: CREATE TABLE `adminuser` ( `uid` int(11) NOT NULL AUTO_INCREM ...
- 《 .NET并发编程实战》实战习题集 - 3 - CRUD项目中使用FP
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- SSH实战 · SSH项目开发环境搭建
一:SSH整合 创建一个新的WEB项目 引入struts2.3.15.3: jar包: struts-2.3.15.3\apps\struts2-blank.war\W ...
- RabbitMQ之项目中实战
说了那么多,还不是为了在项目中进行实战吗,在实践中检验真理,不然我学他干嘛,不能解决项目中的实际问题的技术都是耍流氓... 一.后台管理系统发送消息 瞎咧咧:后台管理系统发送消息到交换机中,然后通知其 ...
- 【一起学设计模式】观察者模式实战:真实项目中屡试不爽的瓜娃EventBus到底如何实现观察者模式的?
申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 之前出过一个设计模式的系列文章,这些文章和其他讲设计模式的文 ...
- 实战派 | Java项目中玩转Redis6.0客户端缓存!
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. 在前面的文章中,我们介绍了Redis6.0中的新特性客户端缓存client-side caching,通过tel ...
- MVC项目中WebViewPage的实战应用
由于公司的项目可能会卖到国外,所以需要支持多语言.今天我就在目前的项目中实现了多语言功能,下面记录我的具体实现. 1.相信很多朋友在用MVC做项目时候,都会遇到“视图必须派生自 WebViewPage ...
- 【知识必备】浅淡MVP在Android项目中的实战演习,让代码结构更简单~
一.写在前面 讲道理,这次是真的笔者很久都没有更新blog了,主要最近维护的框架问题也是层出不穷,而且对技术交流群的解答也让我身心疲惫,所以在这里跟关注我的人说声抱歉,没有定期给你们带来福利,那么这里 ...
随机推荐
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- 高大上的微服务可以很简单,使用node写微服务
安装 npm install m-service --save 使用 编写服务处理函数 // dir1/file1.js // 使用传入的console参数输出可以自动在日志里带上request id ...
- web api接口同步和异步的问题
一般来说,如果一个api 接口带上Task和 async 一般就算得上是异步api接口了. 如果我想使用异步api接口,一般的动机是我在我的方法里面可能使用Task.Run 进行异步的去处理一个耗时的 ...
- ASP.NET MVC5----常见的数据注解和验证
只要一直走,慢点又何妨. 在使用MVC模式进行开发时,数据注解是经常使用的(模型之上操作),下面是我看书整理的一些常见的用法. 什么是验证,数据注解 验证 从全局来看,发现逻辑仅是整个验证的很小的一部 ...
- 【Java每日一题】20170105
20170104问题解析请点击今日问题下方的"[Java每日一题]20170105"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- maven 快照
大型应用软件一般由多个模块组成,一般它是多个团队开发同一个应用程序的不同模块,这是比较常见的场景.例如,一个团队正在对应用程序的应用程序,用户界面项目(app-ui.jar:1.0) 的前端进行开发, ...
- Atitit.项目修改补丁打包工具 使用说明
Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...
- 聊聊从web session的共享到可扩展缓存设计
先从web session的共享说起 许多系统需要提供7*24小时服务,这类系统肯定需要考虑灾备问题,单台服务器如果宕机可能无法立马恢复使用,这必定影响到服务.这个问题对于系统规模来说,从小到大可 ...
- Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...
- HTML5 摇一摇加强版之一次失败的探索
最近在看设备传感器的API,当然也少不了研究一下让微信称神的“摇一摇”了.关于“摇一摇”的实现,网上很多资料所以不详细说了,但总是有布局.效果不全等各种问题,所以作为一名资深copypaster,代码 ...