2

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 をユーザーのブラウザーにキャッシュする方法についてのアイデアはありますか?

よろしくお願いします

スティーブ

4

2 に答える 2

0

org.springframework.web.servlet.handler.HandlerInterceptorAdapterを拡張し、要求された uri がコントローラーの uri と一致する場合は、postHandle メソッドにヘッダーを追加します。コントローラーの HttpServletRequest に属性を設定し、インターセプターでそれを確認することもできます。spring-mvc-utilを使用して、特定の uri のインターセプターを作成することもできます。

于 2012-08-17T19:54:11.280 に答える
0

URL を毎回一意にする: get パラメータを URL に追加して、エポック秒またはその他の一意の文字列を含めます。

したがって、次のような結果になります: http://www.google.com?param1=val1&secs=2342314234

于 2012-08-17T18:04:28.043 に答える