用户注册

url剖析

依据url地址阐明申请为同域申请:

参数信息:

页面JS剖析

阐明:依据剖析获取返回值数据信息应该为SysResult对象。

编辑UserCotroller

/**
* 需要:实现用户信息注册
* url:http://www.jt.com/user/doRegister
* 参数:password: admin123 username: adming2222 phone: 13111111111
* 3,返回值后果 SysResult对象
*/
@RequestMapping("/doRegister")
@ResponseBody //将数据转化为json
public SysResult saveUser(User user){
//消费者基于dubbo协定将user对象进行近程网络数据传输
userService.saveUser(user);
return SysResult.success();
}
编辑UserService
/**
* 注意事项:
* 1.临时应用电话号码代替邮箱
* 2.明码进行md5加密.
* 3.入库操作留神事务管制
* @param user
*/
@Override
public void saveUser(User user) {
String md5Pass =
DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
user.setEmail(user.getPhone())
.setPassword(md5Pass);
userMapper.insert(user);
}
页面成果展现
用户信息回显
页面url剖析
查看页面JS
编辑SSO的Controller
/**
* 业务实现
* 1.用户通过cookie信息查问用户数据, 通过ticket获取redis中的业务数据
* 2.url申请门路:"http://sso.jt.com/user/query/" + _ticket,
* 3.参数:参数在url中,利用restFul获取
* 4.返回值后果:SysResult对象(userJSON)
*/
@RequestMapping("/query/{ticket}")
public JSONPObject findUserByTicket(@PathVariable String ticket,
HttpServletResponse response,
String callback){
String userJson = jedisCluster.get(ticket);
//cookie信息可能呈现的问题:
//1.lru算法,可能会清空cookie中的数据
//2.有可能cookie信息有误
if(StringUtils.isEmpty(userJson)){
/* //如果判断cookie为空,则应该删除cookie信息
Cookie cookie=new Cookie("JT_TICKET", ""); //设置一个超时工夫
cookie.setMaxAge(0); //设置域名
cookie.setDomain("jt.com"); //设置门路
cookie.setPath("/"); //用response删除cookie信息
response.addCookie(cookie); //因为是JSONP格局,所以返回也应该是JSONP格局,而且参数要返回callback*/
//利用cookie工具API
CookieUtil.deleteCookie(response, "JT_TICKET", "jt.com");
return new JSONPObject(callback,SysResult.fail());
}else{
//如果正确则间接返回胜利,并将ticket返回
return new JSONPObject(callback, SysResult.success(userJson));
}
}
}
编辑Cookie工具API
package com.jt.util;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//cookie的工具API
public class CookieUtil {
//新增cookie
public static void addCookie(HttpServletResponse response,
String cookieName,
String cookieValue,
int seconds,
String domain ){
Cookie cookie=new Cookie(cookieName, cookieValue);
cookie.setMaxAge(seconds);
cookie.setDomain(domain);
cookie.setPath("/");
response.addCookie(cookie);
}
//依据name查问value的值
public static String getCookieValue(HttpServletRequest request,String cookieName){
//创立一个cookie数组
Cookie[] cookies = request.getCookies();
//判断cookies是否为空,外面是否有值
if(cookies!=null && cookies.length>0){
for(Cookie cookie:cookies){
//判断cookie中的信息是否统一
if(cookieName.equals(cookie.getName())){
//如果统一则返回value的值
return cookie.getValue();
}
}
}
//如果名字信息不统一则间接返回null
return null;
}
//删除cookie(调用addCookie办法)
public static void deleteCookie(HttpServletResponse response,
String cookieName,String domain){
addCookie(response, cookieName, "", 0, domain);
}
}
用户退出操作
业务阐明
如果用户点击退出,首先应该删除Redis中的数据,其次删除cookie中的数据,最初重定向到零碎首页。
URL剖析
编辑UserController
/**
* 实现用户的退出操作,重定向到零碎首页
* url:http://www.jt.com/user/logout.html
* 业务:
* 1.删除redis中的数据
* 2.删除cookie中的信息
*/
@RequestMapping("logout")
public String logout(HttpServletRequest request,HttpServletResponse response){
//依据JT_TICKET获取ticket的值
String ticket = CookieUtil.getCookieValue(request, "JT_TICKET");
//判断ticket值是否为空
//如果不为空【!StringUtils.isEmpty(ticket)】,则删除cookie外面的信息和redis中的数据,而后返回零碎首页
//如果为空则不执行上面的代码,间接返回零碎首页
if(!StringUtils.isEmpty(ticket)){
jedisCluster.del(ticket);
CookieUtil.deleteCookie(response,"JT_TICKET","jt.com");
}
//重定向到零碎首页(redirect)
return "redirect:/";
}