Tag: httpsession

springMVC中的Httpsession管理

我是初学MVC并开始通过做我学到的东西来做一个示例应用程序。 我打算在spring MVC中实现Session管理。 我觉得这个很有帮助。 但我无法清楚地理解它。 我们在会话中添加值 HttpSession session = request.getSession(false); session.setAttribute(“key”, value); session.setAttribute(“key1”, value1); 然后我们根据像这样的键获取值 session.getAttrubute(“key”); 但在春季MVC中,我看不到任何类似的东西,这让我感到很困惑。 @Controller @SessionAttributes(“thought”) public class SingleFieldController { @RequestMapping(value=”/single-field”) public ModelAndView singleFieldPage() { return new ModelAndView(“single-field-page”); } @RequestMapping(value=”/remember”) public ModelAndView rememberThought(@RequestParam String thoughtParam) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject(“thought”, thoughtParam); modelAndView.setViewName(“single-field-page”); return modelAndView; } } 在上面的代码中@SessionAttributes(“thought”)完全让我困惑,就像这个thought定义的那样,我也没有必要返回一个ModelAndView因为我使用的是backbone.marionette.js 那么如何在会话中设置值并在需要时使用它们? 我还必须将会话对象转换为我的用户定义对象,因为在将值返回到屏幕时,我只返回会话中可用的UserDefined对象列表。 所以请帮助我更好地理解它。 […]

JSF – 会话范围的托管bean没有在会话反序列化上重新注入依赖项

我不确定我做的是不是错了,或者我错过了某个地方的注释或配置项。 这是情况: 我有一个JSF应用程序,其中包含一个名为SessionData的会话范围的bean。 这个bean在创建时注入了一个应用程序范围的bean引用(类型为ApplicationData )。 首次创建会话时,这可以正常工作。 dependency injection是使用faces-config.xml文件中的元素完成的,如下所示: sessionData my.package.SessionData session applicationData my.package.ApplicationData #{applicationData} applicationData my.package.ApplicationData application 因为在序列化时我的SessionData对象包含ApplicationData对象没有意义,所以我在SessionData对象中将ApplicationData引用标记为瞬态: transient private ApplicationData applicationData; 一切都很好,直到Web应用程序停止(在我的Tomcat 6.x容器中)并且会话被序列化。 当我重新启动应用程序并反序列化会话时,JSF不会重新注入我对ApplicationData引用。 我知道反序列化应该留下没有值的瞬态字段。 有没有办法告诉JSF这个会话范围的对象要求在反序列化后再次设置其依赖项? 我使用MyFaces JSF 1.2和Tomcat 6.0.26作为我的Web应用程序容器。

Sturts 2会话失效,将请求会话设置为新会话

在我的Struts应用程序中,一旦用户登录,我需要使当前会话无效并创建新会话。 我用会话使会话无效 getHttpServletRequest().getSession().invalidate(); 我创建了一个新会话 getHttpServletRequest().getSession(true); 这里的问题是在上面我尝试访问getSession()它给出了状态无效exception; HttpSession无效。 getSession()返回一个map,在我的action类中我实现了SessionAware ,它有setSession(Map session) 。 编辑:以下是例外 Error creating HttpSession due response is commited to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: HttpSession is invalid java.lang.IllegalStateException: HttpSession is invalid 所以,我认为问题是Struts getSession()仍然引用我已经失效的会话。 如何让Struts getSession()引用我创建的新会话?

会话ID在调用invalidate后重新使用

我inheritance了一个非常古老的JSP应用程序(JDK 1.3.1_15),并试图插入一个会话固定孔。 在使用HttpSession.invalidate()进行身份validation后,我成功地使当前会话无效,但是在创建新会话时,将重新使用旧会话ID。 我可以在我的HTTP监视器中看到新的会话分配,它只是再次使用相同的号码。 — Initial request response — HTTP/1.1 200 OK Set-Cookie: JSESSIONID=6a303082951311647336934;path=/ — login.jsp request response — HTTP/1.1 302 Moved Temporarily Location: http://example.com/logged-in.jsp Set-Cookie: JSESSIONID=6a303082951311647336934;path=/ 在我使用session.invalidate()之前,第二个Set-Cookie响应头根本不存在。 有没有人对如何生成新的会话ID有任何建议? 我对JRUN4不是很熟悉,但是通过配置文档进行拖网并没有发现任何东西。

Tomcat,从HTTPS迁移到HTTP时保持会话

我有一个在Tomcat 6.0.29上运行的Java应用程序,前面有Apache 2.2.3。 登录页面使用HTTPS,而大多数页面使用HTTP。 如果用户尝试访问受登录保护的页面(HTTP),则会将其重定向到登录页面(HTTPS),登录,然后重定向回原始请求的页面。 这很好用,因为JSESSIONID cookie设置为非安全,并用于HTTP和HTTPS。 但是,如果用户在登录页面(HTTPS)启动,则JSESSIONID cookie设置为Secure,因此在重定向到HTTP下的页面时,登录后会话不可用,强制新会话并再次重定向到登录页面。 这次它可以工作,因为这次JSESSIONID cookie被设置为非安全。 如何避免用户首次登录登录页面时必须登录两次?

如何检查会话是否无效

如何检查会话是否无效? API中没有方法。 它和isNew()吗? 如果没有,有什么区别?

如何从JSESSIONID加载Java HttpSession?

我想通过JSESSIONID获得Java HttpSession 。 可能吗? 如果有,怎么样?

如何使用JSESSIONID手动加载Java会话?

我有一个处理多部分表单post的servlet。 post实际上是由嵌入在页面中的Flash文件上传组件制作的。 在某些浏览器中,Flash生成的POST不包含JSESSIONID,这使得我无法在post期间从会话中加载某些信息。 Flash上​​传组件在特殊表单字段中包含cookie和会话信息。 使用此表单字段,我实际上可以检索JSESSIONID值。 问题是,我不知道如何使用此JSESSIONID值手动加载该特定会话。 编辑 –基于ChssPly76的解决方案,我创建了以下HttpSessionListener实现: @Override public void sessionCreated(final HttpSessionEvent se) { final HttpSession session = se.getSession(); final ServletContext context = session.getServletContext(); context.setAttribute(session.getId(), session); } @Override public void sessionDestroyed(final HttpSessionEvent se) { final HttpSession session = se.getSession(); final ServletContext context = session.getServletContext(); context.removeAttribute(session.getId()); } 这会将所有会话添加到ServletContext,作为由其唯一ID映射的属性。 我可以在上下文中放置一个会话映射,但它似乎是多余的。 请发表有关此决定的任何想法。 接下来,我将以下方法添加到我的servlet以通过id解析会话: private HttpSession getSession(final String […]