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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



商城CRUD案例

```

* 重复提交的问题:
    * 添加完商品之后,转发到一个页面,刷新该页面.
    * 网速很慢,点击提交的按钮,其实已经在提交了但是网速慢,不停的点击提交.
* 解决重复提交的根本解决办法:令牌机制(一次性).
    * 生成随机的令牌保存在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;
            }

```
##分页
```
分页功能的实现:
* 物理分页:一次只查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 关键字.

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

```

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马