java hashcode() 和equals()详解 以及set不能重复问题

一、Estore电子商城 --- 知识的整合,加入一些真实开发中的思想 面向切面编程 利用注解加本地线程的方式实现事务管理
1.用户注册(验证码 前台js校验 激活邮件--javamail开发)
2.用户激活
3.用户登录(记住用户名 30天内自动登陆)
4.用户注销


5.添加商品(文件上传)
6.商品列表
7.商品详细信息页面
8.购物车 (session) 修改商品数量  删除所购买的商品 清空购物车
9.生成订单 (多表设计)
10.查看订单列表 (多表查询)
11.定单删除 (事务控制--面向切面编程 利用注解+本地线程变量的方式控制事务)
12.在线支付 (易宝+网银 -- 调用第三方接口实现特定的功能)
13.销售榜单下载 (组织称excel文件 下载)
14.权限控制



数据库:
用户表:编号 用户名 密码 昵称 邮箱 激活状态 激活码 角色 注册时间
商品表:编号 商品名称 商品种类 单价 库存数量 图片地址 描述信息
订单表:订单编号 下单时间 收货地址 订单金额 所属用户编号 支付状态
订单项表: 订单编号  商品编号  购买数量


用户 1  --  * 订单
订单 *  --  * 商品




create database estore;
    
    用户:
create user estore identified by ‘estore‘;
    
    授权:
grant all on estore.* to estore;
    
   use estore;
   create table users (
id int primary key auto_increment,
username varchar(40),
password varchar(100),
nickname varchar(40),
email varchar(100),
role varchar(100) ,
state int ,
activecode varchar(100),
updatetime timestamp
       );






create table products(
id varchar(100) primary key ,
name varchar(40),
price double,
category varchar(40),
pnum int ,
imgurl varchar(100),
description varchar(255)
);






create table orders(
id varchar(100) primary key,
money double,
receiverinfo varchar(255),
paystate int,
ordertime timestamp,
user_id int ,
foreign key(user_id) references users(id)
);


create table orderitem(
order_id varchar(100),
product_id varchar(100),
buynum int ,
primary key(order_id,product_id), #联合主键,两列的值加在一起作为这张表的主键使用
foreign key(order_id) references orders(id),
foreign key(product_id) references products(id)
);
    

javaee经典三层架构

com.itheima.web
.service
.dao
.domain
.exception
.util
.factory
.test
.filter
.listener


junit
jstl
beanutils
mysql驱动
c3p0
dbutils
fileupload



config.properties
c3p0-config.xml




配置虚拟主机:
在tomcat的conf/server.xml中配置:
<Host name="www.estore.com" appBase="E:\resource\resource\20140212\Estore">
<Context path="" docBase="E:\resource\resource\20140212\Estore\WebRoot"/>
 </Host>
将工程目录配置虚拟主机目录,其中的WebRoot目录配置为缺省虚拟主机


修改hosts文件使www.estore.com指向本机



通用工厂类实现解耦
全站乱码过滤器
工具类
javabean

*权限管理器


===================
1.用户注册(邮件发送):
index.jsp : 
根据用户登录状态提示不同消息,如果没有登录,欢迎光临,游客登录 注册如果登录过 提示 欢迎回来 xx,注销
regist.jsp:
提供注册用 的表单,允许输入用户的基本信息,提交(验证码 js校验)
RegistServlet:
检查验证码,如果不正确提示
封装数据到bean 校验数据
调用Service中的方法注册用户
重定向到主页
UserService:
注册用户的方法,检查用户名是否已经存在 注册用户 发送激活邮件

UserDao:
根据用户名查找用户
添加客户


2.激活用户 -- 点击激活邮件中的连接,应该将用户的激活状态从0 改为 1

ActiveServlet:获取激活码 调用Service中激活用户的方法 重定向到主页
UserService:提供激活用户的方法 根据激活码找到用户 如果找不到用户 提示  , 找到用户但是用户已经激活过,提示 不要重复激活, 如果没激活过,检查是否超过24小时,如果超过了,提示激活码超时,要求重新注册,删除该条用户
UserDao: 根据激活码找用户 根据用户id删除用户 更改用户的激活状态


3.用户登录(记住用户名 30天内自动登陆)
index.jsp <登录>
login.jsp 提供登录用户的表单,允许用户输入用户名 密码 
LoginServlet 获取用户名 密码 调用Service中根据用户名密码查找用户的方法,找不到 提示,找到则校验用户是否已经激活,如果没激活提示,激活过,则登录用户返回主页
UserService 根据用户名密码查找用户
UserDao 根据用户名密码查找用户的方法


*记住用户名 -- 用js解码URL编码
*30天内自动登录 -- 配置Cookie和过滤器实现自动登陆

4.用户注销
杀死session

java hashcode() 和equals()详解 以及set不能重复问题,布布扣,bubuko.com

java hashcode() 和equals()详解 以及set不能重复问题

上一篇:Oracle Sql Repair Advisor介绍以及使用


下一篇:将keystone安全策略从http优化至https