diff --git a/boot-service/src/main/java/com/xwbing/service/CookieSessionService.java b/boot-service/src/main/java/com/xwbing/service/CookieSessionService.java new file mode 100644 index 0000000..3a7cbae --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/service/CookieSessionService.java @@ -0,0 +1,62 @@ +package com.xwbing.service; + +import com.xwbing.util.RestMessage; +import org.springframework.stereotype.Service; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2017/12/19 10:33 + * 作者: xiangwb + * 说明: cookie session服务层 + */ +@Service +public class CookieSessionService { + + public RestMessage session(HttpServletRequest request) { + RestMessage restMessage = new RestMessage(); + HttpSession session = request.getSession(); + String sessionId = session.getId(); + session.setAttribute("session", "session"); + session.setMaxInactiveInterval(60 * 60);//单位为秒,-1永不过期 + String test = (String) session.getAttribute("session"); + restMessage.setData("sessionId:" + sessionId + ",value:" + test); + restMessage.setSuccess(true); + return restMessage; + } + + public RestMessage cookie(HttpServletResponse response, HttpServletRequest request) { + RestMessage restMessage = new RestMessage(); + Cookie cookie = new Cookie("cookie", "cookie"); + cookie.setMaxAge(60 * 60);//单位为秒 + //设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问 + cookie.setPath("/"); + response.addCookie(cookie); + Map cookieMap = readCookieMap(request); + restMessage.setData(cookieMap); + restMessage.setSuccess(true); + return restMessage; + } + + /** + * 将cookie封装到Map里面 + * + * @param request + * @return + */ + private Map readCookieMap(HttpServletRequest request) { + Map cookieMap = new HashMap<>(); + Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组 + if (null != cookies) {//JSESSIONID:java sessionId + Arrays.stream(cookies).forEach(cookie -> cookieMap.put(cookie.getName(), cookie)); + } + return cookieMap; + } +} diff --git a/boot-web/src/main/java/com/xwbing/controller/TestControl.java b/boot-web/src/main/java/com/xwbing/controller/TestControl.java index 09a1f8a..8a737f4 100644 --- a/boot-web/src/main/java/com/xwbing/controller/TestControl.java +++ b/boot-web/src/main/java/com/xwbing/controller/TestControl.java @@ -7,6 +7,7 @@ import com.xwbing.domain.entity.vo.ExpressInfoVo; import com.xwbing.redis.RedisService; import com.xwbing.service.ExpressDeliveryService; import com.xwbing.service.QRCodeZipService; +import com.xwbing.service.CookieSessionService; import com.xwbing.util.HttpClientUtil; import com.xwbing.util.JSONObjResult; import com.xwbing.util.RSAUtil; @@ -18,6 +19,7 @@ import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.util.List; @@ -38,6 +40,8 @@ public class TestControl { private ExpressDeliveryService expressDeliveryService; @Resource private QRCodeZipService qrCodeZipService; + @Resource + private CookieSessionService cookieSessionService; private final Logger logger = LoggerFactory.getLogger(TestControl.class); @LogInfo("redis功能测试") @@ -114,5 +118,13 @@ public class TestControl { return HttpClientUtil.postByJson(url, param); } + @GetMapping("session") + public JSONObject session(HttpServletRequest request) { + return JSONObjResult.toJSONObj(cookieSessionService.session(request)); + } + @GetMapping("cookie") + public JSONObject cookie(HttpServletRequest request, HttpServletResponse response) { + return JSONObjResult.toJSONObj(cookieSessionService.cookie(response, request)); + } }