web day24 小项目练习图书商城, 用户,模块(注册,激活,登陆,退出),分类/图书模块

图书商城

模块

用户模块

分类模块

图书模块

购物车模块

订单模块

功能分析

前台

用户模块:注册/激活/登陆/退出

分类模块:查看所有分类

图书模块:查询所有图书/按分类查询图书/查询图书详细(id)

购物车模块:添加/清空/删除购物车条目 /我的购物车(按用户查询)

订单模块:生成订单/我的订单(按用户查询)/按id查询订单/确认收货/

/付款功能(只跳转到银行页面)/付款回调功能

后台

管理员:登陆

分类管理:增/删/改/查

图书管理(我的):增(上传图片)/删/改/查

订单模块:查询所有订单/按状态查询/发货

表(数据库)

用户模块

1注册

2激活

3登陆

4退出

把session销毁/

代码

web层

/**
 * User表述层
 */
public class UserServlet extends BaseServlet {
	private UserService userService = new UserService();

	/**
	 * 退出功能
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String quit(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.getSession().invalidate();
		return "r:/index.jsp";
	}

	public String login(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 1. 封装表单数据到form中
		 * 2. 输入校验(不写了)
		 * 3. 调用service完成激活
		 *   > 保存错误信息、form到request,转发到login.jsp
		 * 4. 保存用户信息到session中,然后重定向到index.jsp
		 */
		User form = CommonUtils.toBean(request.getParameterMap(), User.class);
		try {
			User user = userService.login(form);
			request.getSession().setAttribute("session_user", user);
			return "r:/index.jsp";
		} catch (UserException e) {
			request.setAttribute("msg", e.getMessage());
			request.setAttribute("form", form);
			return "f:/jsps/user/login.jsp";
		}
	}

	/**
	 * 激活功能
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String active(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 1. 获取参数激活码
		 * 2. 调用service方法完成激活
		 *   > 保存异常信息到request域,转发到msg.jsp
		 * 3. 保存成功信息到request域,转发到msg.jsp
		 */
		String code = request.getParameter("code");
		try {
			userService.active(code);
			request.setAttribute("msg", "恭喜,您激活成功了!请马上登录!");
		} catch (UserException e) {
			request.setAttribute("msg", e.getMessage());
		}
		return "f:/jsps/msg.jsp";
	}

	/**
	 * 注册功能
	 * @param request
	 * @param response
	 * @return
	 * @throws ServletException
	 * @throws IOException
	 */
	public String regist(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/*
		 * 1. 封装表单数据到form对象中
		 * 2. 补全:uid、code
		 * 3. 输入校验
		 *   > 保存错误信息、form到request域,转发到regist.jsp
		 * 4. 调用service方法完成注册
		 *   > 保存错误信息、form到request域,转发到regist.jsp
		 * 5. 发邮件
		 * 6. 保存成功信息转发到msg.jsp
		 */
		// 封装表单数据
		User form = CommonUtils.toBean(request.getParameterMap(), User.class);
		// 补全
		form.setUid(CommonUtils.uuid());
		form.setCode(CommonUtils.uuid() + CommonUtils.uuid());
		/*
		 * 输入校验
		 * 1. 创建一个Map,用来封装错误信息,其中key为表单字段名称,值为错误信息
		 */
		Map<String,String> errors = new HashMap<String,String>();
		/*
		 * 2. 获取form中的username、password、email进行校验
		 */
		String username = form.getUsername();
		if(username == null || username.trim().isEmpty()) {
			errors.put("username", "用户名不能为空!");
		} else if(username.length() < 3 || username.length() > 10) {
			errors.put("username", "用户名长度必须在3~10之间!");
		}

		String password = form.getPassword();
		if(password == null || password.trim().isEmpty()) {
			errors.put("password", "密码不能为空!");
		} else if(password.length() < 3 || password.length() > 10) {
			errors.put("password", "密码长度必须在3~10之间!");
		}

		String email = form.getEmail();
		if(email == null || email.trim().isEmpty()) {
			errors.put("email", "Email不能为空!");
		} else if(!email.matches("\\[email protected]\\w+\\.\\w+")) {
			errors.put("email", "Email格式错误!");
		}
		/*
		 * 3. 判断是否存在错误信息
		 */
		if(errors.size() > 0) {
			// 1. 保存错误信息
			// 2. 保存表单数据
			// 3. 转发到regist.jsp
			request.setAttribute("errors", errors);
			request.setAttribute("form", form);
			return "f:/jsps/user/regist.jsp";
		}

		/*
		 * 调用service的regist()方法
		 */
		try {
			userService.regist(form);
		} catch (UserException e) {
			/*
			 * 1. 保存异常信息
			 * 2. 保存form
			 * 3. 转发到regist.jsp
			 */
			request.setAttribute("msg", e.getMessage());
			request.setAttribute("form", form);
			return "f:/jsps/user/regist.jsp";
		}

		/*
		 * 发邮件
		 * 准备配置文件!
		 */
		// 获取配置文件内容
		Properties props = new Properties();
		props.load(this.getClass().getClassLoader()
				.getResourceAsStream("email_template.properties"));
		String host = props.getProperty("host");//获取服务器主机
		String uname = props.getProperty("uname");//获取用户名
		String pwd = props.getProperty("pwd");//获取密码
		String from = props.getProperty("from");//获取发件人
		String to = form.getEmail();//获取收件人
		String subject = props.getProperty("subject");//获取主题
		String content = props.getProperty("content");//获取邮件内容
		content = MessageFormat.format(content, form.getCode());//替换{0}

		Session session = MailUtils.createSession(host, uname, pwd);//得到session
		Mail mail = new Mail(from, to, subject, content);//创建邮件对象
		try {
			MailUtils.send(session, mail);//发邮件!
		} catch (MessagingException e) {
		}

		/*
		 * 1. 保存成功信息
		 * 2. 转发到msg.jsp
		 */
		request.setAttribute("msg", "恭喜,注册成功!请马上到邮箱激活");
		return "f:/jsps/msg.jsp";
	}
}

激活service

	/**
	 * 激活功能
	 * @throws UserException
	 */
	public void active(String code) throws UserException {
		/*
		 * 1. 使用code查询数据库,得到user
		 */
		User user = userDao.findByCode(code);
		/*
		 * 2. 如果user不存在,说明激活码错误
		 */
		if(user == null) throw new UserException("激活码无效!");
		/*
		 * 3. 校验用户的状态是否为未激活状态,如果已激活,说明是二次激活,抛出异常
		 */
		if(user.isState()) throw new UserException("您已经激活过了,不要再激活了,除非你想死!");

		/*
		 * 4. 修改用户的状态
		 */
		userDao.updateState(user.getUid(), true);
	}

分类模块

查询所有分类:main.jsp→CategoryService#findAll()→left.jsp

图书模块

查询所有图书

按分类查询

查询详细信息(加载)

时间: 2024-08-02 02:44:44

web day24 小项目练习图书商城, 用户,模块(注册,激活,登陆,退出),分类/图书模块的相关文章

web day25 web day24 小项目练习图书商城, 购物车模块,订单模块,支付(易宝支付)

购物车模块 购物车存储: 保存在session中(本次使用的) 保存在cookie中 保存在数据库中 购物车相关类 购物车结构 CartItem:包含图书和数量,小计 Cart:包含一个Map<String,CartItem>和部分购物车操作方法 修改登录方法,在用户登录成功后,马上在session中添加一辆车 页面负责遍历存在session域中的购物车属性 添加购物车条目 清空购物车条目 指定删除购物车条目 图 我的购物车 top.jsp中存在一个链接:我的购物车 我的购物车直接访问/jsp

web实践小项目&lt;一&gt;:简单日程管理系统(涉及html/css,javascript,python,sql,日期处理)

暑假自学了些html/css,javascript和python,苦于学完无处练手几乎过目即忘...最后在同学的建议下做了个简单日程管理系统.借第一版完成之际,希望能将实践期间犯过的错误和获得的新知进行整理,希望能给其他初学者提供参考,也希望有大神在浏览我粗糙的开发过程中能指出一些意见或建议. (阅读以下内容需要有一定的html/css,javascript,python和sql基础,and谢谢阅读!) 注:实践中的环境为ubuntu 14.04操作系统,python3.4(2.7实测也可行),

web day26 小项目练习图书商城 后台分类管理模块,图书管理模块,前台登陆过滤

后台 后台的内容,必须要设置权限 用户可以访问一个网站的哪些内容? dao:不行 / service:不行 servlet:能 / jsp:能 用户可以访问的只有WEB层 分类管理 功能:增删改查 相关类 其他不变,为管理员提供单独的Servlet,然后给这个Servlet添加过滤器! web.servlet.admin:AdminCategoryServlet 查看所有分类 (略)同前台 只是转发到不同的页面 添加分类 add.jsp→AdminCatetgoryServlet#add() 1

Vue小项目二手书商城:(二)axios前后端数据交互

一.写接口 1.我们要在前端取到后端的数据(之前写的data.json)可以用vue-resourse或者用axios,在vue2之后官方就不再维护vue-resourse,推荐使用axios. 2.在axios取到数据前要先写一下路由接口,不同版本vue-cli建的文件目录有一点不一样. 我用的是vue2.5.2,写路由接口是在build文件夹下的某文件,以下分别列出高版本和低版本写法: ①2.5.2版本 文件里加上这些程序: devServer里加上: ②低版本 文件里加上这些程序: 二.使

Day24-26 项目练习(图书商城)

图书商城 环境搭建 导入原型 用户模块 分类模块 图书模块 购物车模块 订单模块 ? 2 功能分析 前台 用户模块: 注册 激活 登录 退出 分类模块: 查看所有分类 图书模块: 查询所有图书 按分类查询图书 查询图书详细(按id查) 购物车模块: 添加购物车条目: 清空所有条目: 删除指定条目: 我的购物车(按用户查询购物车) 订单模块: 生成订单: 我的订单(按用户查询订单) 按id查询订单 确认收货 付款功能(只是跳转到银行页面) 付款回调功能(由银行来调用我们这个方法,表示用户已经付款成

网上图书商城项目学习笔记-003系统功能模块分析

1. itcastgoods文件夹介绍2. 项目导入演示 * 导入数据库 * 导入项目,发布,运行3. 项目原型导入演示 * 导入项目原型,发布,运行4. 小工具介绍5. jQuery介绍 6. 项目前台功能介绍 * User模块 > 注册 > 激活 > 登录 > 修改密码 > 退出 * Category模块 > 显示所有分类 * Book模块 > 按分类查询(分页) > 按图名查询(模糊)(分页) > 按作者查询(分页) > 按出版社查询(分页

基于SSH的网上图书商城-JavaWeb项目-有源码

开发工具:Myeclipse/Eclipse + MySQL + Tomcat 项目简介: 技术:Java:JSP:JDBC,struts2,spring,hibernate数据库: mysqlweb服务器:tomcat集成开发工具: My Eclipse2014基于SSH的网上图书商城系统主要实现以下功能.本系统结构如下:1,游客访问 |--书店首页 查看精品推荐,最新出版的图片信息列表 |--书店简介 |--精品推荐 |--最新出版 |--优惠促销 2,会员访问 |--用户登陆,实现用户的登

JavaWeb网上图书商城完整项目--day02-4.regist页面提交表单时对所有输入框进行校验

1.现在我们要将table表中的输入的参数全部提交到后台进行校验,我们提交我们是按照表单的形式提交,所以我们首先需要在table表外面添加一个表单 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core&

【Java EE 学习第25天】【网上图书商城项目实战】

一.概述 1.使用的jdk版本:1.6 2.java EE版本:1.6 3.指导老师:传智播客 王建 二.小项目已经实现的功能 普通用户: 1.登陆 2.注册 3.购物 4.浏览 管理员用户(全部管理员): 1.登陆 2.角色管理 3.用户管理 4.图书分类 5.图书管理 6.图书商家 7.发货管理 三.项目截图 1.普通用户 (1)浏览(分类浏览,代码重用) 分类浏览: 单本书浏览: (2)普通用户登陆 (3)普通用户注册 (4)普通用户购物 浏览页面加入购物车: 详情页加入购物车 (5)查看