day02_JavaWeb企业实战项目

1. 任务

1_用户激活
2_登录,
3_退出,
4_抽取公共页面
5_查询所有分类
6_首页热门商品_最新商品显示
7_商品详情显示
8_基础分页操作
9_首页分类商品带分页查询
开发通用步骤: 1_准备工作2_Servlet 3_service 4_Dao 5_jsp页面

2. 用户激活

  • 原理
    在这里插入图片描述

  • 步骤实现

  • 1_准备工作(忽略)
    用户点击邮箱中的激活链接,向服务端发送method=active&code=234123adf22234

  • UserServlet___>active
    获取到激活码
    调用service功能,对账户进行激活操作

在这里插入图片描述

  1. service_dao
    1 ServiceImp
    在这里插入图片描述 2 Dao
    在这里插入图片描述
  2. /jsp/login.jsp 获取到注册成功的提示信息

3. 用户登录功能

  1. 实现用户登录页面跳转
    在 /jsp/index.jsp修改修改登录链接
<a href="${pageContext.request.contextPath}/UserServlet?method=loginUI">登录</a>
  1. 修改 servlet, 添加 loginUI方法
    在这里插入图片描述
  2. 登录原理分析
    在这里插入图片描述
  3. 编写步骤
  4. 完善 login.jsp 表单
  5. 在登录页面输入用户名和密码, 点击登录, 发送请求到 UserServlet
  6. 获得用户名和密码, 通过用户名和密码查询用/户
  7. 如果用户存在表示登录成功 , 将用户信息保存到 session, 并重定向到首页
  8. 如果用户不存在, 给用户错误提示, 井重新登录
  9. 代码实现
    1. 完善表单在这里插入图片描述
    2. 修改 UserServlet, 添加 login 方法在这里插入图片描述 3. DaoImp中的方法在这里插入图片描述 4. serviceImp
      在这里插入图片描述 5. 完善首页, 根据是否登录, 实现不同的程序入口。

在这里插入图片描述## 用户退出

  1. 分析
    在这里插入图片描述
  2. 实现
    1_准备工作
    /jsp/index.jsp 修改连接
<a href="${pageContext.request.contextPath}/UserServlet?method=logOut">退出</a>

2_UserServlet___>logOut
清除session
重新定向到首页
return null;

4. 抽取公共页面

  1. 步骤

    • 复制info.jsp___>header.jsp
    • 打开/jsp/index.jsp ,将页面部分的导航和菜单区域复制到header.jsp
      在header.jsp通过tag导入标签库
      在这里插入图片描述3. 打开其他的所有页面进行替换

5. 获取首页分类信息

  1. 原理分析在这里插入图片描述
  2. 代码实现
    1. 完善IndexServlet,显示/jsp/index.jsp 前查询分类

在这里插入图片描述

	  2. 创建分类模块的相关程序

CategoryServlet CategoryService CategoryServiceImp CategoryDao
CategoryDaoImp Category

	 3. 调用业务层获取全部分类数据
	
	 4. 将全部分类信息放入request 转发到真实的首页/jsp/index.jsp


*_/jsp/header.jsp 获取全部分类信息
 PS:  由于获取分类要遍历数据,需要用到c:forEach标签,需要导入标签库 
 
弊端:当访问首页是可以看到全部分类信息,但是如果访问其它页面,看不到分类信息.
  1. 优化 Ajax 异步加载
    • 分析
      当访问首页时可以显示分类导航条,但访问其他模块时无法访问显示分类。通过比较程序我们发现,显示首页前我们查询了所有分类,显示登录等其他模块时我们没有查询分类。为了所有模块都可以显示分类,我们需要发送 ajax 单独查询分类。
      在这里插入图片描述2. 步骤实现
> 1_/jsp/header.jsp
当页面加载完毕之后,向服务端发起Ajax请求,服务端经过处理,
将所有分类信息以JSON格式的数据返回,客户端获取到返回的所有分类,
绑定在页面的显示分类区域
页面底部
$.post(url,{},function(data){},”json”){}

2_CategoryServlet__>getAllCats
		//调用业务层获取全部分类
		//将全部分类转换为JSON格式的数据
		//将全部分类信息响应到客户端
3_调试
   观察本次请求,响应网络传输情况, 
   目的:排除2端错误
4_实现/jsp/header.jsp中AJAX代码的剩余部分

弊端:如果用户频繁的访问包含分类信息的页面,每次都要去DB中取获取分类信息,影响性能.

4. 增强:缓存技术

  1. 当我们在不同模块之间切换时,发现菜单栏显示的分类数据都是一样的。浏览器每发送一次请
    求,服务器端都会查询一次数据库,从而对数据库服务器造成不必要的访问。实际开发中,我们采 缓存(Cache):通常指的就是内存中的一块空间,介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。
    常见的缓存技术
    redis 是一个 key-value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多。
    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。
    EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点。
    导入 jar 包:在这里插入图片描述
    1. 代码在这里插入图片描述

6. 首页热门商品和最新商品显示

  1. sql语句
#查询商品表中最新的9件商品信息
SELECT * FROM product WHERE pflag=0 ORDER BY pdate DESC LIMIT 0 ,9 
#查询商品表中最热,最新的9件商品信息
SELECT * FROM product WHERE pflag=0 AND is_hot=1 ORDER BY pdate DESC LIMIT 0 ,9 

  1. 分析
    在这里插入图片描述

3.实现在这里插入图片描述在这里插入图片描述

7. 商品详情显示

  1. 分析在这里插入图片描述
  2. 分析
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值