一.服务器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据。如果用户把浏览器的隐私级别调到最高,这时浏览器是不会接受Cookie、这样导致永远在服务器端都拿不到的JSESSIONID信息。这样就导致服务器端的Session使用不了。
Java针对Cookie禁用,给出了解决方案,依然可以保证JSESSIONID的传输。
Java中给出了再所有的路径的后面拼接JSESSIONID信息。
在 Session1Servlet中,使用response.encodeURL(url) 对超链接路径拼接 session的唯一标识
代码如下 | 复制代码 |
// 当点击 的时候跳转到 session2 response.setContentType("text/html;charset=utf-8"); //此方法会在路径后面自动拼接sessionId String path = response.encodeURL("/day11/session2"); System.out.println(path); //页面输出 response.getWriter().println("ip地址保存成功,想看 请点击"); |
二.在response对象中的提供的encodeURL方法它只能对页面上的超链接或者是form表单中的action中的路径进行重写(拼接JSESSIONID)。
如果我们使用的重定向技术,这时必须使用下面方法完成:其实就是在路径后面拼接了 Session的唯一标识 JSESSIONID。
代码如下 | 复制代码 |
// 重定向到session2 String path = response.encodeRedirectURL("/day11/session2"); System.out.println("重定向编码后的路径:"+ path); response.sendRedirect(path); session2代码,获得session1传过来的ID public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 需求:从session容器中取出ip // 获得session对象 HttpSession session = request.getSession(); // 获取ip地址 String ip = (String) session.getAttribute("ip"); // 将ip打印到浏览器中 response.setContentType("text/html;charset=utf-8"); response.getWriter().println("IP:"+ ip); } session1代码 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 需求:将ip保存到session中 // 获取session HttpSession session = request.getSession(); // 获得ip String ip = request.getRemoteAddr(); // 将ip保存到session中 session.setAttribute("ip", ip); // 需求2:手动的将 session对应的cookie持久化,关闭浏览器再次访问session中的数据依然存在 // 创建cookie Cookie cookie =newCookie("JSESSIONID", session.getId()); // 设置cookie的最大生存时间 cookie.setMaxAge(60 * 30); // 设置有效路径 cookie.setPath("/"); // 发送cookie response.addCookie(cookie); // 当点击 的时候跳转到 session2 // response.setContentType("text/html;charset=utf-8"); // String path = response.encodeURL("/day11/session2"); // System.out.println(path); // response.getWriter().println("ip地址保存成功,想看 请点击"); // 重定向到session2 String path = response.encodeRedirectURL("/day11/session2"); System.out.println("重定向编码后的路径:"+ path); response.sendRedirect(path); } |
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整