ssm-学子商城-项目第二天

本文档详细介绍了SSM项目学子商城中用户注册和登录的实现过程,包括用户名、邮箱和电话号码的验证,控制器层的请求方法,以及登录的持久层和业务层操作。在注册部分,重点讲述了验证逻辑、控制器响应以及页面交互;在登录部分,讨论了业务层的login方法设计。
摘要由CSDN通过智能技术生成

复习

1.创建工程

2.用户管理

2.1 注册

2.3 用户注册-用户名,邮箱,电话号码验证

验证用户名,持久层不用新定义方法,定义业务层方法

boolean checkUsername(String username);

public boolean checkUsername(String username){
    //调用selectByUsername(username);
    //判断返回值是否为null
    //如果为null,返回false
    //否则 返回true
}

2.4 控制器层

控制器的5个请求方法

/user/showRegister.do  //显示页面
请求参数:无
请求方式:GET
响应方式:转发

/user/checkUsername.do  //验证用户名
请求参数:username=admin
请求方式:GET
响应方式:ResponseBody

/user/checkEmail.do    //验证邮箱
请求参数:email = admin@tedu.cn
请求方式:GET
响应方式:ResponseBody

/user/checkPhone.do    //验证电话号码
请求参数:phone = 13800138000
请求方式:GET
响应方式:ResponseBody

/user/register.do      //用户注册
请求参数:form数据
请求方式:POST
响应方式:ResponseBody

创建UserController类,定义显示页面的方法

@RequestMapping("/showRegister.do")
public String showRegister(){
    return "register";
}

修改register.html为register.jsp

测试:

定义处理用户名失去焦点的异步请求的控制器方法 定义通用的响应结果类ResponseResult,定义到bean包中

public class ResponseResult<T>{
    private Integer state;
    private String messge;
    private T data;
    //set/get
    //构造方法
    //
}
@RequestMapping("/checkUsername.do")
@ResponseBody
public ResponseResult<Void> checkUsername(String username){
    ResponseResult<Void> rr = 
            new ResponseResult<Void>();
    //调用业务层checkUsername()方法
    if(userService.checkUsername(username)){
        //如果返回true,状态码0,信息:用户名已存在;
        rr.setState(0);
        rr.setMessage("用户名已存在");
    }else{
    //否则,状态码:1,信息:用户名可以使用
        rr.setState(1);
        rr.setMessage("用户名可以使用");
    }
    return rr;
}

测试:

邮箱和电话号码失去焦点的控制器方法,同上

2.5 用户注册-页面

/**发起异步GET请求,询问服务器用户名是否已经存在**/
  $.ajax({
      "url":"${pageContext.request.contextPath}/user/checkUsername.do",
      "data":"username="+$("#uname").val(),
      "type":"GET",
      "dataType":"json",
      "success":function(obj){
          alert(obj.state+","+obj.message);
      }
  });

邮箱和电话号码异步提交,同上

用户注册- 提交按钮的控制器方法

@
@
public ResponseResult<Void> register(
@RequestParam("uname") String username,
@RequestParam("upwd") String password,
String email,String phone){
    //调用业务层方法
    //如果没有异常,调用插入的方法
    //如果有异常,封装信息到rr对象

}

提交按钮的页面

if(lengths==5){
    //发送异步请求给控制器
    //"data":$("#form-register").serialize();提交表单数据

    $.ajax({
        "url":"${pageContext.request.contextPath}/user/register.do",
        "data":$("#form-register").serialize(),
        "type":"POST",
        "dataType":"json",
        "success":function(obj){
            if(obj.state==0){
                alert(obj.message);
            }else{
                //.....登录页面
            }
        }
    });
}

3 用户管理-登录

3.1 登录-持久层

3.2 登录-业务层

在IUserService接口中定义方法,方法名login

User login(String username,String password);

定义异常类UserNotFoundException和PasswordNotMatchException 在UserService类中实现login方法

public User login(String username,String password){
    //1.调用持久层selectByUsername()方法,返回值User 
    //2.判断user对象是否为null
    //3.如果为null,常抛出异UserNotFoundException
    //4.如果不为null,从user对象中取出password,用password和页面输入的password比较;
    //5.如果是true,返回user
    //6.如果false,抛出异常PasswordNotMatchException
}

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值