Web アプリケーションに Spring 3.1 を使用しています。ユーザーのブラウザーに JSP が 1 つだけキャッシュされないようにして、戻るボタンから JSP にアクセスできないようにしようとしています。
HTMLページを印刷するサーブレットでこれらの設定を使用して幸運に恵まれました。
response.setHeader("Cache-control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
これらのいくつかの呼び出しをコントローラー関数で機能させることができませんでした(通常、リダイレクトから呼び出されます):
@RequestMapping(value = "/error")
public String error(HttpSession session,HttpServletResponse response, ModelMap model){
logger.debug("started");
response.setHeader("Cache-control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
String status_message = (String)session.getAttribute("status_message");
status_message = (status_message == null) ? "" : status_message.trim();
session.removeAttribute("status_message");
model.put("status_message",status_message);
return "error";
}
また、次のように JSP に呼び出しを入れてみました (ヘッダー ファイルのインクルードの上と下):
<%@ include file="header.jsp" %>
<%
response.setHeader("Cache-control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
%>
<!-- content -->
<%@ include file="footer.jsp" %>
また、すべての JSP に含まれるヘッダー ファイルに呼び出しを入れてみましたが、JSP を 1 つだけ保存しないようにしたいのですが、それを機能させることができるかどうかを確認するだけです。それは動かなかった:
<%@ page language = "java" session = "true" import = "java.util.*, java.text.*" %>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix = "f" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>Acme Customer Service</title>
<link rel = "StyleSheet" href = "../nsd/css/nsd.css" type = "text/css"/>
</head>
また、「有効期限」の設定を 0 と -1 の間で切り替えて実験してみました。サイコロはありません。
単一の JSP をユーザーのブラウザーにキャッシュする方法についてのアイデアはありますか?
よろしくお願いします
スティーブ