回顾:BaseServlet的抽取
统一处理请求的方法request.getParameter("method")
通过反射获取方法对象
让方法执行
统一处理请求转发
规定所有的方法都有返回值:String
若需要转发,返回转发路径
若不需要转发,返回null
统一处理错误页面
设置默认执行方法(index)
用户注册 发送邮件
用户激活 先通过code查找用户 再修改
用户登录 判断是否激活了
用户退出 session.invalidate()
前台分类信息展示
需求:访问任意页面的时候,都需要将分类的信息展示出来
技术分析:
将共同的内容抽取包含(静态包含和动态包含)
访问任意一个页面应该携带包含的信息(ajax)
步骤分析
1.创建分类表(见store.sql文件中,category表创建数据插入部分)
2.抽取所有页面上 logo和菜单部分(head.jsp),把index.jsp里面写菜单栏和导航条部分的代码抽取到head.jsp中,然后在index.jsp中<%@include file=""%>静态包含:注意包含与转发路径写内部路径
页面加载的时候
编写函数
发送ajax请求 $.post(url,params,fn,type);
url:/store/category(category:分类,这次查分类模块的servlet)
params:method=findAll
founction(方法):将返回值遍历,每一个分类封装成li标签,插入到ul标签内部
type(返回):返回list集合,list集合扔页面不好使,所以用json。将json转list用JsonList
后台编写categoryservlet,继承baseservlet,编写findAll方法
调用service,查询所有的分类, 分类列表 的json字符串(String)
现在有了字符串,需要将字符串 写回 页面
categroyservice中的操作
调用dao,获取所有的分类
将list转成json返回
3.在所有的页面里将head.jsp包含进去(代码上面)
获取json返回值
遍历返回值
每一个分类封装成li标签,插入到ul标签内部
由于导航条和菜单栏部分一般不变化,如果每个人访问都进行遍历一次,那么服务器的压力会很大。所以使用redis进行优化
(理解)。。。。。。没学redis.。。。。。跳过
最新商品和热门商品展示
需求:访问首页的时候,需要将 最新商品 和 热门商品 展示出来(这些东西都是从数据库中查出来的)
方式一:ajax异步(太啰嗦,东西要拼字符串)
方式二:同步方式(思考:jsp只是展示的,那么数据要什么时候去查?数据是servlet去查的,但是由谁去发请求什么时候发?)
使用同步分析:请求的是localhost:8080/store但首页是localhost:8080/store/jsp/index.jsp如何保证路径不变,但是页面显示----------请求转发
0.创建商品表
1.访问项目首页,请求转发indexservlet
indexservlet中使用默认index处理,调用productservice查询热门商品(is hot字段)和最新商品(时间排序),每一个都返回一个list
将两个list放入request域中,请求转发到/jsp/index.jsp
2.在页面上将数据遍历出来
单个商品的详情
需求:
在首页上点击每个商品,将这个商品的详细信息展示在页面上(product_info.jsp)即点击上面的商品图片出现商品详细信息
步骤分析:
1.给每个商品添加超链接<a href="/store/product?method=getById&pid=xxx">yyy</a>
2.编写productServlet,继承BaseServlet,编写getById方法
获取商品的pid
调用service获取一个商品,返回值:product
请求转发到product_info.jsp
3.service.dao
4.在product_info.jsp将商品展示
分类商品的展示
需求:点击菜单栏上某一个分类的时候,将该分类下的商品,分页展示出来(默认第一页)
技术分析:
分页
页面上需要的数据(将其封装成一个bean)
当前页数据 当前页 总页数 总记录数 每页显示的条数
limit m,n----------->limit (当前页-1)*每页显示的条数,每页显示的条数
步骤分析:
1.点击菜单栏的一个分类超链接,修改head.jsp上的每个分类的超链接(点击后出现的页面是分页的)
<a href = "/store/product?method = findByPage&pageNumber=1&cid=xxx">
2.在productservlet中需要编写findByPage方法
获取pagenumber 获取cid 设置pageSize
调用service获取分页的数据 返回值:PageBean
将pagebean放入request域中,请求转发/jsp/product_list.jsp
3.编写service
返回值pagebean 创建一个pagebean
设置当前页需要的数据 调用dao
设置总记录数 调用dao
4.dao
5.在jsp/product_list.jsp上展示商品
第二天总结
1.展示分类商品用到包含(jsp静态包含)和ajax(页面加载时确定了事件),用到了json
2.最新商品和热门商品(访问首页的时候就需要将他们展示出来 IndexServlet)
3.单个商品详情的展示
4.导航栏的分类信息的展示(展示后的页面点击单个商品,照样能获取到商品详情(添加链接到详情servlet)),涉及到分页功能