为了账号安全,请及时绑定邮箱和手机立即绑定

WEB14-JDBC案例篇

标签:
前端工具

今日任务
Ø 使用JDBC技术完成对商品的添加修改查询及分页的操作
教学导航
教学目标
掌握JDBC的CRUD的操作
掌握JDBC的分页操作
教学方法
案例驱动法
1.1 上次课内容回顾:
JSP的模式:

  • JSP的设计模式:

    • Connection:

    • setAutoCommit(boolean flag);

    • commit();

    • rollback();

    • 未提交读:以上情况都能发生.

    • 已提交读:解决脏读,但是不可重复读和虚读有可能发生

    • 重复读:解决脏读和不可重复读,但是虚读有可能发生.

    • 串行化:可以解决以上的所有情况.

    • 脏读                :一个事务读到另一个未提交的数据.

    • 不可重复读        :一个事务读到另一个事务已经提交的update的数据,导致多次的查询结果不一致.

    • 虚读                :一个事务读到另一个事务已经提交的insert的数据,导致多次的查询结果不一致.

    • 原子性:事务的不可分割

    • 一致性:事务执行的前后,数据完整性保持一致.

    • 隔离性:一个事务的执行不应该受到另一个事务的干扰

    • 持久性:事务一旦结束,将会永久修改到数据库.

    • 获得类的字节码对象:Class对象.三种获得的方式.

    • 获得构造器:Constructor

    • 获得属性:Field

    • 获得方法:Method
      JDBC的事务管理:

    • 类名.class;

    • 类的实例.getClass();

    • Class.forName();

    • M:Model

    • V:View

    • C:Controller

    • JSP的模式一:JSP + JavaBean设计模式:

    • JSP的模式二:JSP + Servlet + JavaBean设计模式:MVC设计模式.

    • MVC和EE开发三层结构的关系:

    • 反射:(*****)

    • 事务的概念:指的是逻辑上的一组操作,要么一起成功,要么一起失败.

    • 事务的特性:

    • 如果不考虑隔离性:

    • 解决读问题:

    • JDBC进行事务的管理:

    • DBUtils进行的事务的管理:
      1.2 完成对商品的CRUD的操作,进行条件查询,分页查询.1.2.1 需求:
      购物的网站中需要显示商品的信息,在商品信息的显示中,如果商品的信息比较多.需要将比较多的商品进行分页的显示.进行条件查询.同时对商品进行修改,插入,删除.

      1.2.2 分析:1.2.2.1 技术分析:
      使用MVC设计模式JSP + Servlet + JavaBean + JDBC实现商品信息的CRUD的操作.
      1.2.2.2 步骤分析:
      【步骤一】:创建数据库和表

  • create database web_14;

  • use web_14;

  • create table product (
    pid varchar (96),
    pname varchar (150),
    market_price double ,
    shop_price double ,
    pimage varchar (600),
    pdate date ,
    is_hot double ,
    pdesc varchar (765),
    pflag double ,
    cid varchar (96)
    );
    【步骤二】:创建工程导入jar包.

  • msysql驱动

  • c3p0的包

  • dbutils的包

  • beanUtils的包:两个.

  • JSTL的包:两个
    【步骤三】:创建包结构.
    【步骤四】:创建一个首页:
    <h1>欢迎来到商品信息管理平台</h1>
    <h3><a href="${ pageContext.request.contextPath }/ProductFindAllServlet">查询所有商品</a></h3>
    1.2.3 代码实现:1.2.3.1 商品的查询的功能:
    在首页上点击【查询所有商品】链接:
    提交到Servlet中:

    • 调用业务层-->调用DAO:

    • 将商品列表保存到request域中:

    • 转发到商品列表页面:
      在商品列表的页面中显示商品:
      1.2.3.2 商品的添加的功能:
      在首页点击【添加】链接:跳转到添加页面.
      在添加页面中输入信息:点击【提交】提交到Servlet
      在Servlet中:

    • 接收数据:

    • 封装数据:

    • 调用业务层:

    • 页面跳转

  • 重复提交的问题:

    • 添加完商品之后,转发到一个页面,刷新该页面.

    • 网速很慢,点击提交的按钮,其实已经在提交了但是网速慢,不停的点击提交.

  • 解决重复提交的根本解决办法:令牌机制(一次性).

    • 生成随机的令牌保存在session中.

    • 在表单的提交的时候,将随机的令牌放入到表单的隐藏字段中.

    • 在Servlet中获得session中和表单中的令牌是否一致.

    • 如果一致执行插入操作,不一致跳转到其他页面.将令牌销毁.

  • 代码实现:
    // 判断是否是重复提交:
    String token1 = (String)request.getSession().getAttribute("token");
    String token2 = request.getParameter("token");
    // 清空session中的令牌:
    request.getSession().removeAttribute("token");
    if(!token2.equals(token1)){
    request.setAttribute("msg", "亲!您已经提交过!请不要重复提交了!");
    request.getRequestDispatcher("/jsp/msg.jsp").forward(request, response);
    return;
    }
    1.2.3.3 商品的信息的修改:
    在列表页面上点击【修改】链接:
    提交到Servlet:根据id查询该商品.将商品的信息显示到修改页面:
    在修改的页面上修改数据,点击【提交】按钮:
    提交到Servlet:完成商品信息的修改:
    1.2.3.4 商品的信息的删除:
    在列表页面上点击【删除】链接:
    提交到Servlet:
    调用业务层完成删除的操作:
    ***** 扩展删除多条记录:
    1.2.3.5 商品模糊查询:
    1.2.3.6 商品分页显示:
    分页条: 【首页】【上一页】[1][2][3][4]【下一页】【尾页】
    分页功能的实现:

  • 物理分页:一次只查10条记录,点击下一页,再去查询后10条.使用SQL语句进行控制的分页.

    • 缺点:经常需要和数据库交互.

    • 优点:数据量特别大,不会导致内存的溢出.

  • 逻辑分页:一次性将所有数据全都查询出来,根据需要进行截取.List集合进行控制. subList();

    • 缺点:数据量如果特别大,容易导致内存溢出.

    • 优点:与数据库交互次数少.

  • 不同的数据库对分页的语句也是不一样的:

    • 后台--->前台:传递一个JavaBean就可以.

    • 前台--->后台:currPage

    • 后台--->前台:currPage,totalPage(总页数),totalCount(总记录数),pageSize,List集合.

    • select * from xxx where .. Group by ... Having ... Order by ... limit a,b; -- a:从哪开始  b:查询的记录数.

    • 根据页数计算 limit后面的两个参数:

    • currPage                        begin             pageSize
      1                    0                    10
      2                    10                   10
      3                    20                   10

    • begin = (currPage - 1) * pageSize;

    • MYSQL进行分页: 使用limit关键字.

    • 参数的传递:

    • 使用JavaBean封装参数:

    • Oracle进行分页: 使用SQL语句嵌套.

    • SQL Server数据库进行分页: 使用 top 关键字.

  • 在首页上添加一个分页查询的链接:

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
18
获赞与收藏
134

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消