java – BHSM-Servlet不允许浏览器缓存用户名
发布时间:2020-05-25 13:51:07 所属栏目:Java 来源:互联网
导读:我有一个要求,即不应将值缓存在服务器中,也不应将浏览器缓存为域和会话上的cookie. 所以我选择永久重定向到价值 Servlet的: @Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcept
|
我有一个要求,即不应将值缓存在服务器中,也不应将浏览器缓存为域和会话上的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 ); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
