在基于JSF的项目中维护HttpSession属性

时间:2017-10-04 20:22:09

标签: jsf httpsession

最近我正在开发基于JSF的项目,我是新手。现在我需要在HttpSession中保存一些对象。以下是我的方法。

方法1:

from findatapy.market import Market, MarketDataRequest, MarketDataGenerator

market = Market(market_data_generator=MarketDataGenerator())

md_request = MarketDataRequest(start_date='01 Feb 2017', finish_date='03 Feb 2017', category='fx', fields=['bid', 'ask'], freq='tick', data_source='dukascopy', tickers=['EURUSD'])

df = market.fetch_market(md_request)

print(df)
print(len(df))
print(df.index)
print(len(df.index))

这种方法存在问题:

如果第一个人登录并计算了他的userResources并将其设置为会话属性。 现在,如果他退出但没有关闭浏览器和第二个用户登录使用相同的浏览器,则第一个人的userResources可供第二个用户使用,而第二个人的userResources应该已经计算并重新设置。

方法2:

FacesContext facesContext = FacesContext.getCurrentInstance();

HttpServletRequest httpServletRequest =(HttpServletRequest)facesContext.getExternalContext().getRequest();

HttpSession session = httpServletRequest.getSession();

if(session.getAttribute("userResources") != null){
     userResources = session.getAttribute("userResources");
  }
else{
  //call method to calculate userResources//
  session.setAttribute("userResource",userResources);
}

在这种方法中一切正常:

如果第一个人登录,则计算他的userResources并将其放入sessionMap。 现在如果他退出但没有关闭浏览器和第二个用户登录使用相同的浏览器,则重新计算第二人的userResources并放入sessionMap。

但我不明白为什么我的第一种方法失败了。我没有做任何特别的事我相信第二种方法。 使用SessionMap和HttpSession设置属性之间有区别吗?

0 个答案:

没有答案