网上商城第一天笔记

一:项目开发流程

1.确定项目需求
2.编写<<需求说明书>>
3.编写<<概要设计说明书>>
4.编写<<详细设计说明书>>
5.编码阶段
6.联测---项目组内部测试
7.测试组进行全面专业的测试,生成测试报告
8.上线
9.维护和二次开发

二:网上商城项目环境的搭建

1-1:网上商城模块

1.用户模块
用户注册:
发送邮件
激活用户
表单校验
用户登录:
自动登录
用户注销:
2.商品模块
首页热门商品和最新商品
商品分类
商品的列表(分页)
商品详细信息
浏览记录功能
3.购物车模块
将商品加入购物车
展示购物车功能
4.订单模块(多表和事务)
提交订单
展示订单
在线支付
5.后台分类模块
分类信息的增删改查
6.后台的商品模块
商品信息的增删改查
7.后台的订单模块
所有订单的展示

1-2:项目名称:HeiMaShop
包结构:com.itheima.dao
  domain
  service
  utils
  web
lib包:
配置文件:c3p0-config.xml
工具类:md5,mail,datasourceUtils
导入页面
数据库:heimashop
-------------------------------------------------------------------
1.3注册的基本代码实现:

1.找到页面,regist.jsp,找到form,填写action="${pageContext.request.contextPath}/register"
2.name="username",name="email",name="gender",name="password",name="repassword", name="sex" id="sex1" id="sex2" name=birthday",name="checkCode",
3.web层新建RegisterServlet,/register
void doGet{
request.setCharacterEncoding("UTF-8");//设置请求体编码为UTF-8
//获得表单数据
Map<String,String[]> properties=request.getParameterMap();
User user=new User();
BeanUtils.populate(user,properties);try...catch
//private String uid;
utils层新建工具类CommonUtils
public class CommonUtils{
public static String getUUID(){
return UUID.randomUUID().toString();
}
}
user.setUid(CommonUtils.getUUID());
//private String telephone;
user.setTelephone(null);
//private int state;//是否激活
user.setState(0);
//private String code;
user.getCode(CommonUtils.getUUID());

//将user对象传递给service层
UserService service = new UserService();
boolean isRegisterSuccess = service.regist(user);
//是否注册成功
if(isRegistSuccess){

}else{

}
}
4.设置实体,User,domain层,
private String uid;
private String username;
private String password;
private String name;
private String email;
private String telephone;
private Date birthday;
private String sex;
private int state;//是否激活
private String code;//激活码

提供getter,setter方法
5.service层
新建UserService
public boolean regist(User user) {
UserDao dao = new UserDao();
int row = dao.regist(user);//try...catch

return row>0?true:false;
}
6.dao层
新建UserDao
public int regist(User user){
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
String sql = "insert into user values(?,?,?,?,?,?,?,?,?,?)";//十个参数
int update = runner.update(sql,user.getUid(),user.getUsername(),user.getPassword(),user.getName(),user.getEmail(),user.getTelephone(),user.getBirthday(),user.getSex(),user.getState(),user.getCode());
return update;
//抛异常
}

1.4状态码的激活:

1.新增两个注册失败和成功的页面
2.if(isRegisterSuccess){
//发送激活邮件
String emailMsg="恭喜您注册成功,请点击下面的链接激活账户<a href='http://localhost/HeiMaShop/active?activeCode="+activeCode+"'>"+"http://localhost/HeiMaShop/active?activeCode="+activeCode+"</a>";
MailUtils.sendMail(user.getEmail(),emailMsg);//try...catch
//跳转到成功页面
response.sendRedirect(request.getContextPath()+"/registerSuccess.jsp");

}else{
//跳转到失败的页面
response.sendRedirect(request.getContextPath()+"/registerFail.jsp");


}
3.BeanUtils.populate(user,properties)//转日期会出错
需要自定义转换器
//自己指定一个类型转换器,String>Date
ConvertUtils.register(new Converter(){
@Override
public Object convert(Class clazz,Object value){
//将String转成date
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date parse = null;
parse = format.parse(value.toString());//try...catch
return null;
}


,Date.class)
4.还会出现问题,数据库的uid太短了,改成50位
5.web层新建ActiveServlet  /active 
void doGet(){
//获得激活码
String activeCode = request.getParameter("activeCode");
UserService service = new UserService();
service.active(activeCode);

}
6.serivice层调用dao层
7.dao更新state,0>1
8,重定向到login.jsp

1.5基本表单校验:

1.引入表单校验插件在register.jsp中jquery-validate.min.js
form id=myform  .error{
color:red
}
<script type="text/javascript">
$(function(){
$("#myform").validate({
rules:{
"username":{
"required":true,
"checkUsername":true
},
"password":{
"required":true,
"rangelength":[6,12]
},
"repassword":{
"required":true,
"rangelength":[6,12],
"equalTo":"#password"
},
"email":{
"required":true,
"email":true

},
"sex":{
"required":"true"
}
},
messages:{
"username":{
"required":"用户名不能为空",
"checkUsername":"用户名已存在"
},
"password":{
"required":"密码不能为空",
"rangelength":"密码长度6-12位"
},
"repassword":{
"required":"密码不能为空",
"rangelength":"密码长度6-12位",
"equalTo":"两次密码不一致"
},
"email":{
"required":"邮箱不能为空",
"email":"邮箱格式不正确"
}

}
});
});
</script>
"sex":{
"required":"您没有第三种选择"
}
//替换成
//<label class="error" for="sex" style="display: none">您没有第三种选择</label>


------------------------------------------------------------------
2.自定义校验规则
//自定义校验规则
$.validator.addMethod(
//规则的名称
"isExist",
//校验的函数
function(value,element,params){
//定义一个标志
var flag=true;
//value:输入的内容
//element:被校验的元素对象
//params:规则对应的参数值
//目的:对输入的username进行Ajax校验
$.ajax({
"async":false,//异步,false
"url":"${pageContext.request.contextPath}/checkUsername",
"data":{"username":value},
"type":"POST",
"dataType":"json",
"success":function(data){
flag=data.isExist;
}
});
//返回false代表该校验器不通过
return !flag;
}

);
3.servlet层新建CheckUsernameServlet  /checkUsername
//获得用户名
String username = request.getParameter("username");


UserService service=new UserService();
boolean isExist=service.checkUsername(String username);
调用UserDao,
String sql="select count(*) from user where username=?";
runner.query(sql,new ScalarHandler(),username);

CheckUsernameServlet:
String json = "{\"isExist\":"+isExist+"}";//转义拼接字符串
response.getWriter().write(json);
4.异步改为同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值