基于maven的java黑马商城项目(J2EE)

1、项目的实现目标

基于Windows系统 使用IDEA java—maven开发一个简单商城系统,其中主要包含登录页面、注册页面、主页面、分类页面、商品详情页面、购物车页面、订单页面、支付页面,实现最基本的商城购物功能。。

2、项目背景

完整的前端代码,其中包含HTML、CSS、JS、img、Mysql(数据库)等信息,本项目直接使用,不是自我创建。(该信息都将在准备资料上传)

3、前期准备资料

3.1maven环境的配置

https://blog.csdn.net/qq_40738741/article/details/106759866

3.2初次maven工程搭建

https://blog.csdn.net/qq_40738741/article/details/106767817

3.3前端资料及数据库【项目完整代码已经包含】

此处包含完整项目源代码、数据库语句(创建连接可直接运行)、redis缓存
视频教学、各功能导图
https://github.com/zhangweiweiweiweiwei/itcast.git

3.4前端代码放置

(1)前端代码源文件全部放置webapp文件下,直接存放不包含父文件操作、
(2)配置WEB-INF下的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <welcome-file-list>
        <welcome-file>main.html</welcome-file>
    </welcome-file-list>
</web-app>

文件框架
在这里插入图片描述

3.5数据库配置

数据库建立新建查询(此处使用Navicat)
语句插入放置数据库 依次完成(或其它方法导入数据库皆可)
在这里插入图片描述
在这里插入图片描述

3.6实体类、工具类、公共类配置

(1)实体类(要求必须与数据库属性一致)
(2)工具类
JDBCUtils主要实现与数据库的连接
dateUtils主要实现时间的管理
AlipayConfig主要实现转接阿里支付
jedisUtils主要实现redis缓存
(3)公共类
Result {flag,Data集合[{},{},{}],msg}

4、项目学习流程及解析

4.1登录页面(member_login)

在这里插入图片描述
1、登录功能
(1)前端
为登录按钮添加点击事件,向servlet发送ajax请求,路径为/member/login
数据为用户输入电话和密码,方式为post请求。对返回的的数据flag属性判断进行页面跳转。
(2)servlet层
获取前端传入的电话号码和密码,调用service层login(mobile, pwd)方法
返回的member集合,不为空则登录成功,将信息缓存到session中,并且使用json返回到前端result集合Result{“flag”:true,“Date{}”:member,“msg”:登录成功}
(3)service层
从servlet调用方法中获取参数,再次调用dao层findByMobileAndPwd(mobile, pwd)方法,返回member集合,再次返回给servlet层。

(4)dao层
//访问数据库使用QueryRunner对象来完成
QueryRunner runner = new QueryRunner(JDBCUtils.getDataSource());
使用sql、mobile, pwd来访问数据库member表,判断是否符合登录。并且返回member信息。

4.2注册页面(member_register)

在这里插入图片描述
1、注册功能
(1)前端
为注册按钮添加点击事件,向servlet发送ajax请求,路径为/member/register
数据为用户输入电话和密码,方式为post请求。对返回的的数据flag属性判断若为真则返回登录页面,否则显示登录失败。
(2)servlet层
获取前端传入的电话号码和密码,封装到parameterMap集合,再将信息传给member对象,调用service 的regist(member)注册方法,
将member对象封装,返回到前端。
(3)service层
service获取servlet层方法调用传入的member对象,调用dao层方法add(member),返回值为true。
(4)dao层
将member对象的属性添加到数据库member表中。无返回值。

@Override
    public void add(Member member) {
   
        String sql = "insert into member values(null,?,?,?,?,?,?,?)";
 runner.update(sql,member.getMobile(),member.getPwd(),member.getNick_name(),member.getReal_name(),member.getEmail(),member.getGender(), DateUtil.date2String(member.getRegister_time()));
    }

4.3主页面(top)

在这里插入图片描述
1、欢迎用户功能
(1)前端
登录后显示为主页面,左上角将显示欢迎会员用户,向servlet发送ajax请求,路径为/member/findNickName,方式为get请求。对返回的的数据Date属性判断,,集合若为空,则不显示会员登录,否则显示欢迎会员某某。
(2)servlet层
根据session获取member对象,若登录通过,则返回member对象,转换为json传回前端。

2、退出功能
(1)前端
为退出按钮添加单击事件,向servlet发送ajax请求,路径为/member/logout
。对返回的的数据flag属性判断若为真则返回登录页面,
(2)servlet层
根据session进行判断,销毁session缓存,定义result对象属性,转换为json传回前端。

3、分类导航栏功能
(1)前端
导航栏部分发送ajax请求,请求路径为/category/findAll,请求方式为get.
(2)servlet层
使用MySQL+radis 调用categoryService的findAllById()方法,访问业务层。
将返回的List类型集合的categoryList转为json返回到前端,注意此处未被封装Result对象。
(3)service层
根据jedis缓存,若jedis为空,则访问mysql的category数据库表,若不为空,则访问jedis数据库的category表,若访问mysql数据库则需访问categoryDao层的findAll()方法,若不需要则直接从jedis中获取categoryJSON。其后返回到servlet层。
(4)dao层
访问Category表,使用BeanListHandler方法,返回 List类型集合的categoryList。

QueryRunner runner = new QueryRunner(JDBCUtils.getDataSource());

    @Override
    public List<Category> findAll(){
   
        String sql = "select * from category";
            List<Category> categoryList = runner
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值