java – BHSM-Servlet不允许浏览器缓存用户名
发布时间:2020-12-15 00:34:35 所属栏目:Java 来源:网络整理
导读:我有一个要求,即不应将值缓存在服务器中,也不应将浏览器缓存为域和会话上的cookie. 所以我选择永久重定向到价值 Servlet的: @Overrideprotected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOExcepti
我有一个要求,即不应将值缓存在服务器中,也不应将浏览器缓存为域和会话上的cookie.
所以我选择永久重定向到价值 Servlet的: @Override protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { String key = request.getParameter("key"); String val = request.getContentType(); if (val != null && val.length() == 0) { val = null; } String repeatText = request.getParameter("repeatText"); if (val != null && repeatText == null) { response.setStatus(301); // moved permanent response.addHeader("Location","?repeatText=" + val); System.out.println("Write"); } else { if (repeatText != null) { response.setContentLength(repeatText.length()); response.addHeader("pragma","no-cache"); response.addIntHeader("expires",BROWSER_CACHE_DAYS); response.getWriter().write(repeatText); System.out.println("Read and cache!"); } else { response.sendError(304); // use from cache! System.out.println("Send use from cache."); } } } 脚本: <input class="username" /> <button>Login</button> <script> jQuery.ajax('theservlet?key=username').done(function(v){jQuery('.username').val(v);}); jQuery('button').click(function(){ jQuery.ajax('theservlet?key=username',{contentType:jQuery('.username').val()}) }); </script> 控制台输出: Send use from cache. --- i enter username and press the button --- Write Read and cache! --- now i make a reload --- Send use from cache. 来自browsercache的reaload后没有返回我插入的用户名. 为什么浏览器不缓存? 解决方法
重定向ajax请求不会将浏览器重定向到新位置,如果确实如此,您将不再拥有页面,您只需要来自servlet的响应.
因此,当您刷新页面时,您将再次从头开始请求原始URL,并且用户名将丢失. 您可以直接在javascript中将用户名添加到URL中: jQuery('button').click(function(){ var username=jQuery('.username').val(); jQuery.ajax('theservlet?key=username',{contentType:username}); window.location.hash=username; }); 这会将“#username”附加到地址栏中的URL.然后在页面加载时,您可以填充请求参数的输入(如果存在): jQuery('.username').val( window.location.hash ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |