复习
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
}