1,一个B2C网站最开始的工作(除了浏览基本信息之外)就是注册和登录(UserServlet)
1.1 注册
调用MailUtils给注册用户发一封激活邮件(有激活码. ) —> UserServlet/active方法去数据库查看激活码是否正确----> 跳转到longin.html 。
跟验证码的思路一样,只是一个存在session中,一个存在数据库中。都是服务端生成一个数字,一份保存,一份发客户端,客户端手抄一份过来一对比。
1.2 登录
1.3 退出
干掉session request.getSession().invalidate();
干掉cookie 存活时间设置为0.
1.4 封装
封装BaseServlet 和 ContextFactory 没啥说的。
BaseServlet 已知方法名通过反射 调用方法(this), 方法执行完成返回结果ResultInfo, 然后统一转json再response回去。
ContextFactory 已知类名,解析xml文件获得路径,通过反射new obj 返回。
2 ,信息展示 CategoryServlet
2.1 CategoryServlet 实在没啥说的加个redis。点击跳到RouteServlet
3, 线路查询RouteServlet
3.1 routeCareChoose 定义一个map<String, List>放到resultInfo.data中.在service调用三次dao(人气,最新,主题) 加到 map.put()。
3.2 findRouteListByCid 分页显示 一个PageBean的事。带两个条件(cid && 搜索框的 内容 keyword, 在dao层做拼接,不为空就加上 (like keyword) )
3.3 findRouteByRid 某一路线的详情 dao层三表联查放到map中。service层用
3.4 isFavoriteByRid 看是否能够收藏,给页面显示
a, 用户是否登录:登录才能收藏
b, 看用户是否已经收藏:tab_user 和 tab_route之间是多对多的关系,一个用户可以收藏多条线路,一条线路也可以被多个用户收藏,so有张中间表tab_favorite。查uid - rid有没有就行了。
4,FavoriteServlet 我的收藏
4.1 addFavorite(经过上面的判断,能点肯定能收藏)
判断用户是否登录 —>
重点:线程安全(多个网页可能同时收藏某一条线路,同时去修改Route里面的count)。开启事务
4.2 findFavoriteByPage 查看我的收藏(分页)
通过uid查tab_favorite 得到rid[] 联合 tab_route limit(,)。把结果封装成favoriteList 放到PageBean中传给页面。封装还有点繁琐,多表查询一般是得到多个表的key–value 只能放在map中,template最多把map封装成list。只能自己定义bean用BeanUtils.populate(xxx,map)封装。
4.3 收藏排行榜 favoriteRank
分页(PageBean) + 多条件查询(curPage, keyword,minPrice,maxPrice)单表。条件拼接和结果封装。