我的會話對象只存儲在谷歌應用程序引擎的請求範圍內,我無法弄清楚如何在請求之間持久化對象。文檔在這個問題上是無用的,我找不到遇到類似問題的任何人。請幫忙。會話之間沒有堅持請求
當我會話對象存儲在servlet和使用將請求轉發給JSP:
getServletContext().getRequestDispatcher("/example.jsp").forward(request,response);
一切工作像它應該。但是,當我將對象存儲到會話中並使用以下請求重定向請求時:
response.sendRedirect("/example/url");
會話對象會丟到ether中。實際上,當我在新請求上轉儲會話密鑰/值對時,沒有任何內容,會話對象只出現在創建會話對象的servlet的請求範圍內。在我看來,這些對象沒有寫入Memcache或Datastore。值得一提的是,在我的開發服務器上一切正常,但是當我上傳到App Engine時,它就會中斷。這使我相信這是一個配置問題。
在我的應用程序配置會話方面我已
<sessions-enabled>true</sessions-enabled>
在AppEngine上-web.xml中。還有什麼我失蹤?
關於會話文檔的single paragraph還指出,只有實現Serializable的對象才能存儲在請求之間的會話中。我已經包含了一個不在下面的代碼示例。
顯而易見的解決方案是不使用重定向,對於下面給出的例子來說這可能是正確的,但是一些應用程序數據確實需要存儲在請求之間的會話中,所以我需要找到解決此問題的解決方案。
示例:FlashMessage類從服務器端操作向用戶提供反饋。
if (email.send()) {
FlashMessage flash = new FlashMessage(FlashMessage.SUCCESS, "Your message has been sent.");
session.setAttribute(FlashMessage.SESSION_KEY, flash);
// The flash message will not be available in the session object in the next request
response.sendRedirect(URL.HOME);
} else {
FlashMessage flash = new FlashMessage(FlashMessage.ERROR, FlashMessage.INVALID_FORM_DATA);
session.setAttribute(FlashMessage.SESSION_KEY, flash);
// The flash message is displayed without problem
getServletContext().getRequestDispatcher(Templates.CONTACT_FORM).forward(request,response);
}
FlashMessage.java
import java.io.Serializable;
public class FlashMessage implements Serializable {
private static final long serialVersionUID = 8109520737272565760L; // I have tried using different, default and no serialVersionUID
public static final String SESSION_KEY = "flashMessage";
public static final String ERROR = "error";
public static final String SUCCESS = "success";
public static final String INVALID_FORM_DATA = "Your request failed to validate.";
private String message;
private String type;
public FlashMessage (String type, String message) {
this.type = type;
this.message = message;
}
public String display(){
return "<div id='flash' class='" + type + "'>" + message + "</div>";
}
}
您可以使用數據存儲瀏覽器查看數據存儲中的會話對象嗎?最前面有_ah_SESSION – 2010-06-09 11:28:41
也許Flash類需要增強? – 2010-06-09 11:30:10
剛剛找到數據存儲瀏覽器,但沒有意識到它 – klonq 2010-06-09 11:37:58