伙伴云客服论坛»论坛 S区 S软件开发 查看内容

0 评论

0 收藏

分享

java中Cookie被禁用后Session追踪问题

一.效劳器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据。假设用户把阅读器的隐私级别调到最高,这时阅读器是不会接受Cookie、这样导致永远在效劳器端都拿不到的JSESSIONID信息。这样就导致效劳器端的Session使用不了。

Java针对Cookie禁用,给出理处置方案,仍然可以保证JSESSIONID的传输。
Java中给出了再所有的途径的后面拼接JSESSIONID信息。
在 Session1Servlet中,使用response.encodeURL(url) 对超链接途径拼接 session的唯一标识
  1. // 当点击 的时候跳转到 session2
  2.     response.setContentType("text/html;charset=utf-8");
  3.     //此方法会在途径后面自动拼接sessionId
  4.     String path = response.encodeURL("/day11/session2");
  5.     System.out.println(path);
  6.     //页面输出
  7.     response.getWriter().println("ip地址保管胜利,想看 请<a href='" + path + "'>点击</a>");
复制代码
二.在response对象中的提供的encodeURL方法它只能对页面上的超链接或者是form表单中的action中的途径停止重写(拼接JSESSIONID)。

假设我们使用的重定向技术,这时必需使用下面方法完成:其实就是在途径后面拼接了 Session的唯一标识 JSESSIONID。
  1. // 重定向到session2
  2.     String path = response.encodeRedirectURL("/day11/session2");
  3.     System.out.println("重定向编码后的途径:" + path);
  4.     response.sendRedirect(path);
  5. session2代码,获得session1传过来的ID
  6.   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  7.     // 需求:从session容器中取出ip
  8.     // 获得session对象
  9.     HttpSession session = request.getSession();
  10.     // 获取ip地址
  11.     String ip = (String) session.getAttribute("ip");
  12.     // 将ip打印到阅读器中
  13.     response.setContentType("text/html;charset=utf-8");
  14.     response.getWriter().println("IP:" + ip);
  15.   }
  16. session1代码
  17.   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  18.     // 需求:将ip保管到session中
  19.     // 获取session
  20.     HttpSession session = request.getSession();
  21.     // 获得ip
  22.     String ip = request.getRemoteAddr();
  23.     // 将ip保管到session中
  24.     session.setAttribute("ip", ip);
  25.     // 需求2:手动的将 session对应的cookie耐久化,关闭阅读器再次访问session中的数据仍然存在
  26.     // 创建cookie
  27.     Cookie cookie = new Cookie("JSESSIONID", session.getId());
  28.     // 设置cookie的最大生存时间
  29.     cookie.setMaxAge(60 * 30);
  30.     // 设置有效途径
  31.     cookie.setPath("/");
  32.     // 发送cookie
  33.     response.addCookie(cookie);
  34.     // 当点击 的时候跳转到 session2
  35.     // response.setContentType("text/html;charset=utf-8");
  36.     // String path = response.encodeURL("/day11/session2");
  37.     // System.out.println(path);
  38.     // response.getWriter().println("ip地址保管胜利,想看 请<a href='" + path + "'>点击</a>");
  39.     // 重定向到session2
  40.     String path = response.encodeRedirectURL("/day11/session2");
  41.     System.out.println("重定向编码后的途径:" + path);
  42.     response.sendRedirect(path);
  43.   }
复制代码
以上所述是小编给大家介绍的java中Cookie被禁用后Session追踪问题,希望对大家有所协助,假设大家有任何疑问欢送给我留言,小编会及时回复大家的!

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

凉凉
注册会员
主题 23
回复 19
粉丝 0
|网站地图
快速回复 返回顶部 返回列表