2016-02-01 25 views
0

我正在編寫一個應用程序,在第一頁選擇城市之後,每一個請求數據將只爲選定的城市。我們如何堅持這個沒有身份驗證,或者我必須每次都通過URL。 我正在使用彈簧靴和百里香。如何在春季首次請求中選擇的每個請求中攜帶價值?

+0

設置cookie ... –

+0

@AliDehghani當cookies被禁用時會發生什麼。 –

+0

不能使用它...也許使用本地存儲.. –

回答

1

您有各種選擇。

  1. 第一個也是顯而易見的,就是當你指出每一個要求時都會通過城市。但這可能是痛苦的。
  2. 第二個選項是將此值存儲在會話中,以便您可以在每次需要時獲取此值。但要小心處理它,不要忘了更新它時,它的necesary等

與Spring MVC的,你可以存儲在您的控制器會話數據這樣做:

ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); 
Session session = attr.getRequest().getSession();  
session.setAttribute("city", cityName); 

來恢復會話數據

session.getAttribute("city"); 

即使你不使用你用SpringMVC可以從HttpRequest的會議,是更標準,但只avaliable,當你有機會獲得HttpRequest對象:

Session session = request.getSession();  
session.setAttribute("city", cityName); 
+0

別墅是會議可用於未認證的用戶和用戶選擇城市只有一次我不想一次又一次地選擇。是否有任何註釋或配置可用? –

+0

從session中恢復數據應該是session.geetAttribute(「city」); session.setAttribute(「city」);我對嗎?。 –

+0

即使對於未經過身份驗證的用戶,也會爲第一個請求創建會話。是的,它是getAttribute(),我犯了一個錯字。回答更新 –

1

你可以使用會話來存儲它,在春天MVC有@SessionAttributes你可以在你的控制器中使用它,在這裏我期待你使用「city」作爲你的屬性的名字。

@Controller 
@RequestMapping("/") 
@SessionAttributes("city") 
public class EditCityForm { 
    // ... 
}