A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

同学们,今天内容比较复杂,难度比较大。敲代码一定不要看着老师代码敲,先把逻辑理顺了再敲。

今日需要掌握的有:
  • 掌握我的订单功能
  • 了解在线支付功能
  • 掌握权限过滤器是


请同学们按照如上要求,总结今日所学。




8 个回复

倒序浏览
陈叶隆
分页显示订单:(OrderDaoImpl层代码:多表联合查询!)
QueryRunner qr= new QueryRunner(JDBCUtils.getDataSource());
                String sql="select * from orders where uid=? order by ordertime desc limit ?,?";
                Object[]params={existUser.getUid(),begin,pageSize};
        List<Order> list = qr.query(sql, new BeanListHandler<Order>(Order.class), params);
                for (Order order : list) {
                String sql2="select * from orderitem o,product p where o.pid=p.pid and o.oid=?";
//一条记录是一个map
List<Map<String, Object>> list2 = qr.query(sql2, new MapListHandler(), order.getOid());
                        for (Map<String, Object> map : list2) {
                                Product product=new Product();
                                BeanUtils.populate(product, map);
                               
                                OrderItem orderItem=new OrderItem();
                                BeanUtils.populate(orderItem, map);
                                orderItem.setProduct(product);
                                order.getOrderItemList().add(orderItem);
                        }
                }
                        return list;

点评

发表于 2019-7-16 00:19
发表于 2019-7-13 00:06
回复 使用道具 举报
郭明杰
根据用户的ID查询订单的功能实现
        接收当前页数,获得用户的信息,调用业务层orderService下的findByUid ,传入Uid跟当前页数
        在OrderService的实现类中传入Uid跟当前页 设置分页,获取当前用户所有订单  ,调用查询数据库的语句,获取Uid用户的订单集合,  ,遍历集合,编写sql语句获得订单项并分别封装到 Product 跟OrderItem 对象中并返回list

为订单付款的方法
        接收参数
        修改数据库姓名 地址 电话
        付款,跳转到网银界面
通过程序直接跟网银接口对接的
优点:免费,不会影响到你的资金链
缺点:开发人员需要了解各个对接银行的网银接口
网银系统升级,导致代码需要修改

通过程序跟第三方支付公司对接
优点:开发人员只需要与第三方支付公司对接,不需要了解各个银行的网银接口
缺点:收费的,会影响到资金链


权限过滤器的作用是约束用户行为,在过滤器方法中获取session中的用户名,如果用户名存在 则放行
回复 使用道具 举报
汪志阳:
我的订单思路整理:
1.menu.jsp点击"订单"跳转到servlet处理数据method=findByUid(用户的id),传当前页面
findByUid方法(根据用户的ID查询订单):接收参数,用户信息-调用业务层(订单需要分页查询,返回pageBean),保存pagebean,跳转到order_list.jsp
业务层:创建Bean对象,设置参数(当前页数,每页显示数,总记录数[连接数据库执行sql语句查询findCountByUid],设置总页数,每页显示内容的集合[开始显示的limit,findPageByUid]),返回pageBean对象
findCountByUid:返回Long类
findPageByUid:查询分页的方法,
findPageByuid:查询订单返回一个订单项的集合list,(sql语句:从订单项和商品两个表中查询pid对应的商品,且属于本订单的oid)遍历获取每一个订单项
将订单的oid传入,获取订单项和对象连接拼起来的数据集合list,遍历集合(获取每一条数据包含product,订单项的所有内容),
新建商品对象和订单项对象,将每条数据中属于各自的信息进行封装:BeanUtils.populate(orderItem, map)将map中属于orderItem的数据进行自动封装;(map的key为字段名即对象的属性名),
订单项还需要设置product,再将订单项封装进订单中,返回订单.


回复 使用道具 举报
许剑鸿 webDay29商城实战4思路总结


订单模块
我的订单功能
        登录后的用户点击【我的订单】查询该用户的所有的订单.
        * 提交到Servlet:
            * 查询该用户的所有的订单.
            * 查询订单的时候,将订单中的订单项一并查询.

根据订单ID查询订单:
        在订单列表页面上点击【付款】连接:
        提交到Servlet:
            * 接收oid:
            * 根据OID进行查询
            * 页面跳转到order_info.jsp

支付功能(了解)
回复 使用道具 举报
李思贤:我的订单:

登录后点击我的订单,查询到该用户所有订单,
1提交到Servlet查询所有订单.考虑到分页显示,这里也要传一个currPage
业务层:
PageBean<Order>pageBean = new PageBean();
                //设置当前页数
                pageBean.setCurrPage(currPage);
                //设置每页记录数
                Integer pageSize=5;
                pageBean.setPageSize(pageSize);
                //设置总记录数
                OrderDao orderDao = (OrderDao) BeanFactory.getBean("orderDao");
                Integer totalCount =  orderDao.fingByUid(uid);
                double tc =totalCount;
                Double num = Math.ceil(tc/pageSize);
                pageBean.setTotalPage(num.intValue());
                //设置每页显示的数据集合
                int begin =(currPage-1)*pageSize;
                List<Order> list =orderDao.findByUid(uid,begin,pageSize);
                pageBean.setList(list);
难点:查询订单时将订单项也全查出来.
跳转到页面显示.(前一页和后一页 那里要进行双重判断!)


根据订单ID查询订单:
点击付款,跳到Servlet,调用业务层查询单个订单,和上面一样查完订单还要查订单项...
拿到order后存入域中,跳转到order_info.jsp页面.



在线支付:
用易宝(第三方支付接口)实现一下:
点击付款->Servlet->接收参数->修改数据库姓名电话地址->
跳到银行付款页面(准备参数)

付款成功后->接收参数,修改订单状态为已付款->跳到msg.jsp显示付款成功..

最后可以添加一个过滤器,如果没登录,不能让他访问某些页面,在web.xml中配置,可以配置多个mapping...

点评

发表于 2019-7-13 00:07
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马