基于jsp和servlet编写的网上商店 1
DBUtil:
这里有一个如何遍历map的注意点:!!!!
注意点2:就是导入的东西如果是sql下面的,优先选择
1.创建一个QueryRunner对象,用它来执行query方法
参数:
sql语句
handler是用来处理结果集的(有好几种)
用来填写对应?的值
1.删除
2.修改
3.插入
4.查询
增删改都是使用update方法,查询使用query方法
查询里面会用到handler对象
对于处理不同的处理结果,会有不一样的handler,一共有8种
handler
使用什么样的handler就会有什么样的返回值
1.ArrayHandler处理结果集
它只会查询到一条记录,它会把这条记录封装成一个数组
2.ArrayLIstHandler处理结果集
得到多条记录,这就是arraylisthandler和arrayhandler的差别
3.BeanHandler处理结果集
他是按照名字来设置这些数据的,把数据库中查到的数据,放到Good对象中
这样就需要创建一个数据模型和我们的数据库表中的数据做对应
从数据库中查出的数据和java类中的对象属性做对应,组装成一个对象,有了对象以后就很方便的取出需要的数据
4.BeanListHandler
但是上面的beanhandler只能取得一条记录,就需要BeanListHandler
5.ColumnListHandler获取某一类
如果你只需要取出表中的一列记录,比如所有商品的名称,就用这个handler
6.ScalarHandler是这个结果集只有一个数据的情况
7.MapHandler
8.MapListHandler
打开项目到servlet中,跳转到jsp页面
第一步:因为datasource只要有一个(相对于连接池),连接则可以有多个
连接(2种方法):
第一种
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n3fjjTi5-1603342353637)(C:\Users\lwr\AppData\Roaming\Typora\typora-user-images\image-20201021171209970.png)]
第二种
第二种是在利用事务进行CRUD的时候,我们需要拿到connection对象,才可以开启事务,第一种方式不能拿到connection对象
默认欢迎界面
把html改成jsp页面,再添加上面2个头部声明,声明jsp使用的语法格式和语言等等
另一个是jstl的标签库,引用之前要保证jstl的jar包引入了
servlet
提取公共的jsp(头和尾)
把头和尾的jsp包含到其他jsp页面中,这样子的话就不用
头
包含头部
尾部
包含尾部
查询热销商品
sql分析
得到热销商品的id以及详细信息(内连接)
这是查询出type=2的表,但是还需要它所属于的系列
这个时候就需要它所属的类目(type)
需要再前端展示的是 类型名:经典系列 名字:夜礼服 价格:299 图片 以及id用来查找这个商品
sql语句
使用sql来实现热销商品的查询
数据模型的创建
首先创建GoodsService,GoodsDao,然后创建model层对象
Goods
在数据库中的外键,在我们的对象里面,需要这样子去表示,如下:
Type
Recommend
修改:需要关联一个商品
dao
1.有异常都抛出去,dao层就做增删改查的操作,其他的丢给service层
service
在service层中要去try-catch我们的异常
servlet
以上就会把数据传递到我们的jsp页面上去,接下来要把我们的热销产品展示在我们的页面上
把传递过来的数据展示在我们的页面上
jstl的foreach 遍历我们的这个div图层,这里面有个items=“${el表达式}” 取个别名叫 g
然后再修改里面的数据
绝对路径
其他的修改
个人想法:
就是把数据库中的东西赋值到我们的map中,或者bean中,然后通过调用就可以使用,这里用了el表达式来调用
查询新品
其实热销和新品没有什么区别,为了防止代码冗余,我们就在热销上进行代码的修改
dao层修改
再修改个名字,不能叫getHotGoodsList了
然后在service这边调用的话
在service这边进行修改
在servlet中修改
在页面 中删掉多余的div 保留一个模板
查询条幅商品(最上面的)
service层中
servlet层中
查询类目1.在application中放参数
创建监听器,监听application的创建
创建dao
创建service
以及类目的Bean
监听器
这里面在application(arg0.getServletContext())里面放入type(类目)的所有类型,传递给前端
这样子,所有的页面就都可以获取到类目
查询类目2.在head.jsp中显示
添加jstl的声明
C:\Users\lwr\AppData\Roaming\Typora\typora-user-images\image-20201021224749565.png)]
这样子就可以从数据库中取出type的类型,并且只需要取出一次
效果
创建分页的数据模型
封装起来是为了后期的开发
310创建Servlet控制商品列表页面跳转
首页的跳转
点击商品分类的跳转
会传递一个参数给我们的servlet
获取商品分类中的商品,显示,并分页
311-创建分页查询的方法
先获取到这些id的值
dao层
Service层
在servlet中调用service层中的方法,然后在jsp页面上去显示这些数据
jstl标签 修改jsp页面
商品列表的显示,默认显示第一页,默认每一页显示8条数据
获取分页数据模型并传递到页面上(不理解)
接下来因为需求不同,我们还需要展示分页的数据模型,所以要对这个方法进行修改,并且之前的service被抛弃了
Dao层
写一个新的service
查询当前总记录数,我们只需要总记录数,不用传递pageNo
最后代码
在servlet中
在jsp中
小错误
在分页的数据模型中:
分页的前端显示
因为前端需要一个id,当我们点击首页的url(上面)
首页和上一页
下一页
尾页
显示商品列表所属的商品分类
dao层
service层
servlet层
再把t传递出去,当id==0时,t的值为null
在jsp页面中
错误
当后面一个为0时,下一页和尾页可以点击