关于java:用户模块的实现注册退出

用户注册

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:/";
}

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据