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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2017-2-26 12:33 编辑

【济南中心】JavaEE就业班同步笔记第一阶段:
JavaWeb之核心技术--JDBC综合案例

1 完成对商品的CRUD的操作,进行条件查询,分页查询.
1.1 需求:
购物的网站中需要显示商品的信息,在商品信息的显示中,如果商品的信息比较多.需要将比较多

的商品进行分页的显示.进行条件查询.同时对商品进行修改,插入,删除.

1.2 分析:
1.2.1 技术分析:
使用MVC设计模式JSP + Servlet + JavaBean + JDBC实现商品信息的CRUD的操作.
1.2.2 步骤分析:
【步骤一】:创建数据库和表
[Shell] 纯文本查看 复制代码
create database web_14;
use web_14;

[Shell] 纯文本查看 复制代码
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的包:两个
【步骤三】:创建包结构.

【步骤四】:创建一个首页:
[HTML] 纯文本查看 复制代码
<h1>欢迎来到商品信息管理平台</h1>
<h3><a href="${ pageContext.request.contextPath }/ProductFindAllServlet">查询所有商
品</a></h3>

1.3 代码实现:
1.3.1 商品的查询的功能:
在首页上点击【查询所有商品】链接:
提交到Servlet中:
    * 调用业务层-->调用DAO:
    * 将商品列表保存到request域中:
    * 转发到商品列表页面:
在商品列表的页面中显示商品:
1.3.2 商品的添加的功能:
在首页点击【添加】链接:跳转到添加页面.
在添加页面中输入信息:点击【提交】提交到Servlet
在Servlet中:
    * 接收数据:
    * 封装数据:
    * 调用业务层:
    * 页面跳转

    * 重复提交的问题:
    * 添加完商品之后,转发到一个页面,刷新该页面.
    * 网速很慢,点击提交的按钮,其实已经在提交了但是网速慢,不停的点击提交.
    * 解决重复提交的根本解决办法:令牌机制(一次性).
    * 生成随机的令牌保存在session中.
    * 在表单的提交的时候,将随机的令牌放入到表单的隐藏字段中.
    * 在Servlet中获得session中和表单中的令牌是否一致.
    * 如果一致执行插入操作,不一致跳转到其他页面.将令牌销毁.
* 代码实现:
   
[Java] 纯文本查看 复制代码
// 判断是否是重复提交:
   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.3.3 商品的信息的修改:
在列表页面上点击【修改】链接:
提交到Servlet:根据id查询该商品.将商品的信息显示到修改页面:
在修改的页面上修改数据,点击【提交】按钮:
提交到Servlet:完成商品信息的修改:
1.3.4 商品的信息的删除:
在列表页面上点击【删除】链接:
提交到Servlet:
调用业务层完成删除的操作:

***** 扩展删除多条记录:
1.3.5 商品模糊查询:
1.3.6 商品分页显示:
分页条: 【首页】【上一页】[1][2][3][4]【下一页】【尾页】

分页功能的实现:
* 物理分页:一次只查10条记录,点击下一页,再去查询后10条.使用SQL语句进行控制的分页.
    * 缺点:经常需要和数据库交互.
    * 优点:数据量特别大,不会导致内存的溢出.
    * 逻辑分页:一次性将所有数据全都查询出来,根据需要进行截取.List集合进行控制. subList
();
    * 缺点:数据量如果特别大,容易导致内存溢出.
    * 优点:与数据库交互次数少.

    * 不同的数据库对分页的语句也是不一样的:
    * MYSQL进行分页: 使用limit关键字.
        * 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;
         * 参数的传递:
         * 前台--->后台:currPage
         * 后台--->前台:currPage,totalPage(总页数),totalCount(总记录

数),pageSize,List集合.
    * 使用JavaBean封装参数:
         * 后台--->前台:传递一个JavaBean就可以.
    * Oracle进行分页: 使用SQL语句嵌套.
    * SQL Server数据库进行分页: 使用 top 关键字.

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

2 个回复

倒序浏览

回帖奖励 +15

小鲁哥哥威武!
回复 使用道具 举报
谢谢分享 赞赞赞!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马