第14章WEB14-JDBC案例篇
1.1 完成对商品的CRUD的操作,进行条件查询,分页查询.
1.1.1 需求:
购物的网站中需要显示商品的信息,在商品信息的显示中,如果商品的信息比较多.需要将比较多的商品进行分页的显示.进行条件查询.同时对商品进行修改,插入,删除.
1.1.2 分析: 1.1.2.1 技术分析:
使用MVC设计模式JSP + Servlet + JavaBean + JDBC实现商品信息的CRUD的操作.
1.1.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的包:两个
【步骤三】:创建包结构.
【步骤四】:创建一个首页:
1.1.3 代码实现:
1.1.3.1 商品的查询的功能:
在首页上点击【查询所有商品】链接: 提交到Servlet中:
* 调用业务层-->调用DAO: * 将商品列表保存到request域中: * 转发到商品列表页面: 在商品列表的页面中显示商品:
1.1.3.2 商品的添加的功能:
在首页点击【添加】链接:跳转到添加页面.
在添加页面中输入信息:点击【提交】提交到Servlet 在Servlet中: * 接收数据: * 封装数据: * 调用业务层: * 页面跳转
* 重复提交的问题:
* 添加完商品之后,转发到一个页面,刷新该页面.
* 网速很慢,点击提交的按钮,其实已经在提交了但是网速慢,不停的点击提交. * 解决重复提交的根本解决办法:令牌机制(一次性). * 生成随机的令牌保存在session中.
* 在表单的提交的时候,将随机的令牌放入到表单的隐藏字段中. * 在Servlet中获得session中和表单中的令牌是否一致. * 如果一致执行插入操作,不一致跳转到其他页面.将令牌销毁. * 代码实现:
// 判断是否是重复提交:
String token1 = (String)request.getSession().getAttribute(\String token2 = request.getParameter(\// 清空session中的令牌:
request.getSession().removeAttribute(\if(!token2.equals(token1)){
request.setAttribute(\亲!您已经提交过!请不要重复提交了!\request.getRequestDispatcher(\