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

2次阅读

共计 3188 个字符,预计需要花费 8 分钟才能阅读完成。

用户注册

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:/";
}
正文完
 0