Java Web 网络商城案例演示二十一 利用工厂模式解耦(适用于不同数据库的配置)

这个Java代码示例展示了如何通过Service层实现DAO操作,包括获取所有分类、添加用户、用户注册、用户激活、用户登录以及产品相关操作。涉及到数据库查询、异常处理和Redis缓存的更新与删除。在用户登录时,如果密码错误或用户未激活会抛出相应异常。
摘要由CSDN通过智能技术生成

}

public class CategoryServiceImpl implements CategoryService {

CategoryDao categoryDao = (CategoryDao) BeanFactory.createObject(“CategoryDao”) 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 ;

@Override

public List getAllCats() throws Exception {

return categoryDao.getAllCats();

}

@Override

public void addCategory(Category category) throws Exception {

// 本质是向mysql插入一条数据

categoryDao.addCategory(category);

// 更新redis的缓存

Jedis jedis = JedisUtils.getJedis();// 获取到Jedis的实例

jedis.del(“allCats”);// 删除redis当中对应allCats的数据

JedisUtils.closeJedis(jedis);// 关闭当前jedis对象

// 当访问页面时会在CategoryServlet类当中从新开启redis获取对应数据库当中的内容并将其再次放入到redis

}

}

public class UserServiceImpl implements UserService {

UserDao userDao = (UserDao) BeanFactory.createObject(“UserDao”);

@Override

public void userRegist(User user) throws SQLException {

// TODO Auto-generated method stub

// 实现注册功能

userDao = new UserDaoImpl();

userDao.userRegist(user);

}

@Override

public boolean userActive(String code) throws SQLException {

// TODO Auto-generated method stub

// 对DB发送select * from user where code = ?

User user = userDao.userActive(code);// 将code传入到dao层查看数据,返回该code对应的user,以方便后面操作user

if (null != user) {

// 可以根据激活码查询到一个用户

// 修改用户的状态,清除激活码

user.setState(1);

user.setCode(null);

// 对数据库执行一次真实的更新操作

// update user set username=? ,password = ? ,name = ? ,email = ? ,telephone = ?

// , birthday = ?,sex = ? ,state = ? ,code = ? where uid = ?

userDao.updateUser(user);

return true;

} else {

// 不可以根据激活码查询到一个用户

return false;

}

}

@Override

public User userLogin(User user) throws SQLException {

// 此处:可以利用异常在模块当中传递一些数据

// select * from user where username = ? and password =?

User uu = userDao.userLogin(user);

if (null == uu) {

// 在这里抛出对应的异常让其在Servlet里面捕获到对应的异常,并反馈到对应的页面上去

throw new RuntimeException(“密码有误!”);

} else if (uu.getState() == 0) {

throw new RuntimeException(“用户未激活!”);

} else {

return uu;

}

}

}

public class ProductServiceImpl implements ProductService {

ProductDao productDao = (ProductDao) BeanFactory.createObject(“ProductDao”);

@Override

public void saveProduct(Product product) throws Exception {

productDao.saveProduct(product);

}

@Override

public List findHots() throws Exception {

// TODO Auto-generated method stub

return productDao.findHots();

}

@Override

public List findNews() throws Exception {

// TODO Auto-generated method stub

return productDao.findNews();

}

@Override

public Product findProductByPid(String pid) throws Exception {

// TODO Auto-generated method stub

return productDao.findProductByPid(pid);

}

// 当点入分类信息的时候,默认cid就是1所以,当前页得到的就是第1页,而起始页经过计算得到的是1终止页得到的是3

@Override

public PageModel findProductsByCidWithPage(String cid, int curNum) throws Exception {

// 1、创建PageModel对象目的:计算分页参数

// 统计当前分类下商品的个数 select count(*) from product where cid=?

int totalRecords = productDao.findTotalRecords(cid);

PageModel pm = new PageModel(curNum, totalRecords, 12);

// 2、关联集合 select * from product where cid = ? LIMIT ?,?

List list = productDao.findProductsByCidWithPage(cid, pm.getStartIndex(), pm.getPageSize());

pm.setList(list);

// 3、关联url

pm.setUrl(“ProductServlet?method=findProductsByCidWithPage&cid=” + cid);

// 返回所有的分页数据以及对应的页码

System.out.println(pm);

return pm;

}

@Override

public PageModel findAllProductsWithPage(int curNum) throws Exception {

// 计算数据库当中所有商品分类的个数

int totalRecords = productDao.findTotalRecords();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值