问:如何读写cookie?
答案:在Java Web开发中,可以通过HttpServletResponse的addCookie()方法来写入Cookie,通过HttpServletRequest的getCookies()方法来读取Cookie。

问:●
如何保存用户信息(如session,如将用户标识与userId保存缓存)?
答案:●
使用Session保存用户信息:// 将用户信息保存到Session中
HttpSession session = request.getSession();
session.setAttribute("userId", userId);

使用缓存保存用户信息// 例如使用Redis等缓存服务
redisTemplate.opsForValue().set("userId:" + userId, userInfo);

问:●
识别的用户身份信息,如何供整个访问链路使用?
答案:可以通过Filter来识别用户身份信息,并将身份信息存储到ThreadLocal中,在整个访问链路中共享。

在Filter中识别用户身份信息,并存储到ThreadLocal中:

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
// 识别用户身份信息
String userId = ...; // 从请求中获取用户ID等信息
// 将用户身份信息存储到ThreadLocal中
ReqInfoContext.setUserId(userId);
try {
filterChain.doFilter(servletRequest, servletResponse);
} finally {
// 清除ThreadLocal中的用户身份信息
ReqInfoContext.clear();
}
}
在整个访问链路中获取用户身份信息:
public class ReqInfoContext {
private static final ThreadLocal userIdThreadLocal = new ThreadLocal<>();

public static String getUserId() {
    return userIdThreadLocal.get();
}

public static void setUserId(String userId) {
    userIdThreadLocal.set(userId);
}

public static void clear() {
    userIdThreadLocal.remove();
}

}