-
实现步骤
-
实现总体思路
-
1.通用步骤
-
1.创建Web项目
-
可能会遇到的问题:创建工程时没有添加编译环境
-
解决方式
- 1.重新创建
- 2.添加编译环境
-
2.将一些相关的工具类及jar包拷贝项目中
-
拷贝
-
注意:检查数据库连接的配置信息
-
3.对项目进行分包(java类分包及模块分包)
-
2.后台模块
-
商品类别管理
-
1.创建数据库及表结构和相应的数据库操作
- 1.创建表结构
- -- 商品类别表
create table T_MCTYPE
(
TYPEID NUMBER primary key,
TYPENAME VARCHAR2(50),
FATHERID NUMBER
);
- 2.创建序列
- --商品类别序列
create sequence seq_t_mctype
start with 20
increment by 1;
- 3.添加测试数据
- --- 商品类别表数据
insert into T_MCTYPE (TYPEID, TYPENAME, FATHERID)
values (1, '计算机', 0);
insert into T_MCTYPE (TYPEID, TYPENAME, FATHERID)
values (2, '台式机', 1);
insert into T_MCTYPE (TYPEID, TYPENAME, FATHERID)
values (3, '笔记本', 1);
insert into T_MCTYPE (TYPEID, TYPENAME, FATHERID)
values (4, '掌上电脑', 1);
insert into T_MCTYPE (TYPEID, TYPENAME, FATHERID)
values (5, '数码产品', 0);
insert into T_MCTYPE (TYPEID, TYPENAME, FATHERID)
values (6, '数码照相机', 5);
insert into T_MCTYPE (TYPEID, TYPENAME, FATHERID)
values (7, '数码摄像机', 5);
commit;
-
2.根据表结构创建对应的JavaBean
- McTypeBean.java
-
3.实现dao层
- 接口:定义商品类别管理的方法
- 查询
- 查询单个记录
- 查询多个记录
- 添加
- 修改
- 删除
- 实现类:实现定义的方法
- McTypeDaoImpl.java
-
4.实现service层
- 接口
- 与dao层一致
- 实现类
- 实现接口,调用dao层中实现方法
-
5.创建对应的Servlet,并实现处理方法
- 1.创建service对象实例
- IMcTypeService service = new McTypeServiceImpl();
- 2.调用service中的方法执行查询操作
- List<McTypeBean> list = service.query(null);
- 3.将查询出的结果保存在作用域中
- request.setAttribute("list", list);
- 4.跳转页面(数据保存在request中,所以使用服务器跳转)
- request.getRequestDispatcher("/back/mctype/index.jsp").forward(request, response);
-
6.在页面中展示查询出的数据
- 1.导入JSTL库
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 2.使用循环标签及EL获取数据并展示
-
7.将展示页面改成jsp页面(后台管理页面)
- 1.在back目录下创建后台相关的管理页面
- 2.将对应html代码,转jsp
- main.jsp
- top.jsp
- left.jsp
- index.jsp
- right.jsp
- 注意:将html中body中的代码以及head标签中样式和js拷贝到对应的jsp页面中
- 3.将相关的图片css,js拷贝到(webContent)根目录下
- 4.给每个jsp页面添加完整路径(绝对URL地址)
- http://localhost:8888/hdshop/css/style.css
-
8.商品类别管理
- 1.查询
- 部分思路
- 1.找到left.jsp页面修改菜单的链接
- 2.去掉right.jsp不相关的数据
- 3.修改Servlet中的跳转地址
- 4.在right.jsp页面中导入jstl库
- 5.使用jstl和EL获取数据并展示
- 6.调整展示界面的显示数据(以树状形式显示)
- 1.将所有的大类先显示出来(判断fatherid为0显示)
- 2.在所属的大类下显示所属的小类(判断fatherid 是否等于当前类别的typeid)
- 在判断标签中添加增强型循环,判断fatherid
- 3.将小类的类别名称居中显示
- 2.添加
- 添加思路
- 1.创建添加页面mctypeadd.jsp,并将设置动态绝对URL地址
- 2.完成设计添加页面
- 1.将form.html中的代码拷贝到mctypaadd.jsp页面中,并将不需要的数据给删除
- 2.添加表单标签
- 3.添加父类名称的下拉框
- 1.将tab.html中的代码拷贝到mctypeadd.jsp页面中
- 2.将样式拷贝到mctypeadd.jsp页面中
- 4.修改展示页面中的添加按钮的链接
- 5.修改Servlet的代码,执行查询所有大类信息
- 6.在添加页面中将作用域中的数据显示出来
- 1.导入jstl库
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 2.使用增强型循环遍历集合(EL表达式获取作用域中的集合)
- 3.添加功能实现
- 1.修改确认保存按钮的提交地址
- 2.在Servlet中判断task任务是不是add命令
- 3.获取表单提交的信息
- 获取fatherid是字符串的,需要将其转化为int类型
- 获取表单提交的数据
- 4.调用service中的添加方法执行添加操作
- //执行添加操作
int i = service.add(mt);
- 5.根据执行的结果响应客户端
- 1.添加成功
- 查询所有商品类别信息
- query(request, response, service);
- 跳转页面
- 2.添加失败
- 6.处理乱码,添加一个过滤器
- 常见问题
- 1.404错误:请求的URL地址有问题
- 1.检查请求的URL地址是否正确
- 2.检查你所请求的资源(jsp,html,servlet)有没有部署到项目中
- 2.服务器错误(启动服务器失败)
- 1.Servlet对外映射的地址有问题(例如:两个Servlet公用一个映射地址)
- 2.映射地址不符合格式
- 3.SQL异常
- 1.表名写错了
- 2.序列获取不到序列的下一个数字
- 3.序列名称写错,写了一个不存在的序列
- 4.插入语句中的values写错了
- 5.执行basedao中的方法传入参数缺失
- 6.当错误提示是“值过多”或“缺少值”
- 插入语句中字段列表数量与值列表的数量不一致
- 4.在jsp页面中弹出以下错误提示
- 1.在JavaBean中没有这个名称的成员属性,也就是成员属性名称写错了
- 2.没有获取到对应的对象的,页就获取不到该对象中的属性
- 1.在作用域中没有保存该对象的数据
- 3.EL表达式获取参数失败,EL表达式格式有错误(没有明显的提示)
- 命名不规范
- 在花括号后多了空格
- 3.修改
- 1.复制一个类别修改页面(从mctypeadd.jsp复制过来),并修改名称为mctypeupdate.jsp
- 2.修改mctypeupdate.jsp页面中的表单信息
- 3.修改right.jsp页面中的修改按钮的链接地址
- 4.修改Servlet中的处理方法
- 1.判断task命令是否是queryForUpdate
- 2.如果是该命令,则获取请求中的参数
- 3.根据参数获取对应要修改的数据的信息
- 1.获取要修改的类别信息
- 2.获取所有大类的信息
- 4.将获取的数据保存到作用域中
- 5.跳转页面(mctypeupdate.jsp)
- 6.如果获取数据失败的话,则响应客户端
- 7.控制下拉选项选中当前要修改的类别所属的大类
- 5.提交数据保存到数据库
- 1.确认提交表单的地址
- 2.在Servlet中判断task命令是否是update
- 3.获取表单提交过来的数据,并将其转化为int
- 4.将获取的数据保存到JavaBean中
- 5.调用service中方法执行修改操作,并处理响应
- 4.删除
- 1.修改删除按钮的链接(JS代码)
- 2.添加del(id)js代码,删除方法
- 3.修改Servletd的处理方法
- 4.修改删除语句,删除大类的同时删除小类(删除小类的时候不能删除大类)
-
商品信息管理
-
查询
- 商品所有数据展示
- 1.在数据库中操作基本数据
- 1.创建表结构
- 2.创建序列
- 3。添加测试数据
- 2.根据表结构创建JavaBean
- 3.实现dao层
- 与商品类别管理的一致
- 4.实现service层
- 与商品类别管理的一致
- 5.实现servlet
- 6.创建展示页面mclist.jsp
- 1.将right.html文件中的代码拷贝到mclist.jsp中
- 2.导入jstl库
- 3.使用增强型循环获取作用域中的数据并遍历
- 步骤与商品类别管理的查询是一致的
- 商品信息的分页查询
- 1.将mclist.jsp中自带的分页栏目去掉
- 2.将封装好的分页栏目PageBar.jsp,拷贝到工程中
- 3.在mclist.jsp页面中将PageBar.jsp包含到当前页面中
- 4.将分页的表单拷贝到mclist.jsp页面中,并改变表单提交的地址
- 5.修改Servlet,在Servlet动态获取客户端传递过来的currentPage和pageSize
- 6.获取service对象的实例,调用其中的方法执行分页查询
- 7.修改Servcie,添加一个分页查询的方法,并实现(直接调用dao层中的方法)
- 8.修改dao层,添加一个分页查询的方法,并实现该方法
- public PageModel queryPageModel(McBean mc, int currentPage, int pageSize) {
/**
* querySql 要分页的数据的查询语句 确定分页的结果集(要对哪些数据进行分页显示)
* countSql 统计我们分页的数据的总记录数
* whereSql 查询要分页的数据的结果集的条件
* otherSql 对要分页的数据进行排序
*/
StringBuffer querySql = new StringBuffer(" select * from t_mc where 1=1 ");
StringBuffer countSql = new StringBuffer(" select count(1) from t_mc where 1=1 ");
StringBuffer whereSql = new StringBuffer();
StringBuffer otherSql = new StringBuffer(" order by mmcid asc");
/**
* params 保存的是sql语句中占位符对应的参数
*/
List params = new ArrayList();
/**
* 判断查询条件
*/
if(mc.getMcname()!=null||!"".equals(mc.getMcname())){
//拼接SQL语句,查询的条件
whereSql.append(" and mcname=?");
//对SQL语句中的占位符进行赋值
params.add(mc.getMcname());
}
return super.queryPageModel(querySql, countSql, whereSql, otherSql, McBean.class, currentPage, pageSize, params);
}
- 9.Servlet中的完整的步骤
- 带条件分页查询
- 1.在mclist.jsp页面中,添加查询的表单
- 2.在Servlet中获取查询的条件,并将条件保存到JavaBean
- 3.在dao层实现类中将查询的条件给拼接到SQL语句
-
添加
- 1.创建一个mcadd.jsp页面
- mcadd.jsp
- 2.实现添加页面中加载商品类别的信息
- 第一种方式
- 点击添加按钮直接请求McServlet,查询商品类别信息,保存到作用域,跳转页面共享数据
- 第二种方式
- 使用ajax实现
- 1.页面加载完成就像服务器发出请求
- 2.修改Servlet中代码,处理ajax发出的请求
- dao层的修改
- 3.实现将所属的大类数据加载到下拉菜单中
- 4.实现商品类别数据的加载
- 1.确定大类选择发生改变触发的事件
- 2.执行事件处理的方法
- 1.向服务器发出请求,并获取到响应的数据
- 2.将获取到的数据一一取出,并根据数据动态生成下拉选项
- 3.修改Servlet,处理请求
- 3.修改表单的提交方式及制定enctype的属性值为二进制形式提交
- 4.导入文件上传的jar包
- 4.修改Servlet,处理添加请求
- 1.普通输入项获取
- 2.文件输入项的获取
- 3.将保存在McBean中的信息添加到数据库中,并返回值做不同的响应
- 4.dao层中修改
- 5.修改mclist.jsp中的图片的显示
- 修改
- 删除
-
后台登录功能
-
1.数据库的设计及相关的操作
- 1.创建表结构
- 2.创建序列
- 3.添加测试数据
- 2.根据数据表结构创建JavaBean
-
3.实现Dao层
- 接口类
- 实现类
-
4.实现Service层
- 接口类
- 实现类
-
5.添加Servlet
-
6.新建登录页面back_login.jsp
-
7.后台页面的安全验证
- 1.创建一个过滤器,并指定过滤拦截的条件
- 2.判断请求是否允许通过,依据:是否登录
-
8.登录成功后,在首页显示登录用户的信息
-
3.前台模块
-
前台首页界面
- 1.将首页的相关的样式和图片拷贝到项目中
-
2.将首页分页的home.jsp和top.jsp以及member.jsp拷贝到项目中
-
3.将home.jsp页面中的数据改成动态数据
- 1.新建一个index.jsp页面,并修改转发请求
- 2.处理请求
- 1.获取当前页面(currentPage)和每页显示的记录数(pageSize)
- 2.创建service对象实例,并调用该实例中的方法执行分页查询
- 3.将获取到的分页模型对象保存到作用域中并跳转页面
- 3.将分页栏目PageBar.jsp包含到home.jsp页面中
- 4.在home.jsp页面中修改,展示保存在作用域中的数据
- 1.导入jstl包
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 2.使用增强型循环展示数据
- 5.待条件查询
-
4.在home.jsp页面中显示所有商品类别信息
- 1.修改Servlet,查询所有商品类别的信息
- 2.在home.jsp页面中展示数据
-
前台登录功能
-
1.修改请登录的链接地址
-
2.创建front_login.jsp页面
- front_login.jsp
- 3.数据库设计及相关的操作
- 4.根据表结构创建JavaBean
- 5.实现dao
- 6.实现service
- 7.添加UserServlet ,并处理请求
-
8.验证码的使用
- 思路
- 1.在登录页面中引入验证码的图片
- 如果点击请求验证码的时候,验证码没有变化,则是因为请求的是缓存中的数据,请求的时候请求的地址要时刻改变
- 2.在Servlet判断验证码是否正确
- 3.验证码的错误问题
- 是因为response.getOutPutStream()和Response.getWriter()发生冲突了,出现了异常
- 解决方式
-
注销功能
-
前台页面
-
后台页面
-
Servlet
-
购物车功能
-
购物车的设计
-
1.创建一个购物车的对象ShopCar
- ShopCar.java
- 1.往购物车中添加商品
- 2.从购物车中删除商品
- 3.清空购物车
- 4.修改购物车中的商品件数
- 5.获取购物车中的商品总件数
- 6.获取购物车中商品的总类数
- 7.获取购物车中商品的总价格
- 8.获取购物车的对象实例
-
2.实现购物车的功能
- 1.修改商品首页的购买按钮的请求地址
- 2.创建ShopCarServlet,修改Servlet,接收客户端的请求
- 3、在top.jsp页面中获取购物车中有多少件商品
- 4.实现购物车的界面及相关的功能
- 1.界面效果实现
- 1.top.jsp
- 2.shopcar.jsp
- shopcar.jsp
- 效果
- 2.展示购物车中的商品
- 1.导入jstl库
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 2.使用增强型循环展示数据
- 3.继续购物
- 4.清空购物车
- 1.jsp页面修改
- 2.Servlet的修改
- 4.修改商品数量
- 1.jsp页面修改
- 2.Servlet的修改
- 5.删除商品
- 1,jsp修改
- <input onclick="location.href='ShopCarServlet?task=delete&mcid=${mc.mcid}'" type="button" value="删除"/>
- 2.Servlet的修改
-
3.下订单
- 1.下订单界面的实现
- order.jsp
- 2.订单表和订单详情表
- 1.创建表结构并添加测试数据
- 表之间的关系
- 3.创建JavaBean
- OrderBean
- OrderDetailBean
- 4.实现dao层
- 订单的管理
- 接口
- IOrderDao.java
- 实现类
- OrderDaoImpl.java
- 订单详情的管理
- 接口
- IOrderDetailDao.java
- 实现类
- OrderDetailDaoImpl.java
- 5.实现service层
- 6.下订单的按钮事件实现
- 确定表单中的输入项的name属性值
- 7.OrderServlet的实现
- 1.接收客户端的数据
- 1.从客户端的表单中获取订单的相关的数据
- 2.从购物车中获取订单的信息
- 3.从购物车中获取订单详情的信息
- 4.从session获取下订单的用户信息
- 2.将获取的数据保存
- 3.将数据插入到数据库中
- 4.情况购物车
- 5.调换页面
-
我的订单
-
1.我的订单展示页面
- orderlist.jsp
-
2.修改会员中心的我的订单的请求地址
-
3.dao层的修改
-
4.Servlet的修改
-
5.根据登录用户的信息来查询该用户下的订单信息
- 1.修改Servlet
- 2.修改dao层