Tag: 会话

如何在Google App Engine Java应用程序之间共享模块之间的会话?

当我通过模块A中的HttpSession在会话中存储某些内容时: HttpSession session = req.getSession(true); session.setAttribute(“username”, “Eng.Fouad”); 然后我尝试从模块B中检索此信息(在同一浏览器会话期间): HttpSession session = req.getSession(true); String username = session.getAttribute(“username”); // null! 我将null作为值,这意味着不同的会话。 如何在GAE中跨多个模块共享会话? 旧答案,我认为它不能很好地工作: 我一直试图解决这个问题好几个星期。 事实certificate,模块不共享会话,因为不同子域的cookie是不同的(module1.apphost.com cookies!= module2.apphost.com cookies)。 要解决此问题,只需在每个模块的web.xml中设置cookie域: org.mortbay.jetty.servlet.SessionDomain .apphost.com org.mortbay.jetty.servlet.SessionPath / org.mortbay.jetty.servlet.SessionURL none … 额外: 以下是可以与Jetty cookie一起使用的所有init参数的列表: 编辑:开发环境的解决方法: 使每个模块的端口固定(使用JVM arg -Dcom.google.appengine.devappserver_module.{module_name}.port=8081 )。 例如,module1始终托管在localhost:8888,而module2始终托管在localhost:8889。 看到这个答案 。 使用Fiddler将localhost与每个模块的端口绑定到自定义域。 例如,moule1.gaelocal.com指向localhost:8888,moule2.gaelocal.com指向localhost:8889。 看到这个答案 。 更新每个模块的web.xml并将.apphost.com替换为.gaelocal.com (或者只为两个环境使用.apphost.com )。

理解hibernate中的session.get vs session.load方法

我无法理解load和get之间的区别。 当我给session.load时,下面的代码不起作用。 它给出了空指针exception。 但是当我使用session.get()时,同样有效。 public Employee getEmployee(final String id){ HibernateCallback callback = new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException,SQLException { //return (Employee)session.load(Employee.class, id); doesn’t work return (Employee)session.get(Employee.class, id); //it works } }; return (Employee)hibernateTemplate.execute(callback); } 我还想了解如何将Session对象传递给doInHibernate。 会话何时开始以及何时结束? 堆栈跟踪如下 Exception in thread “main” java.lang.NullPointerException at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372) at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121) at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232) at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173) at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87) […]

杀死用户会话

我有3个标签。 主页,tab1,tab2。 当用户启动应用程序时,它会定向到“主页”选项卡,然后使用HttpSession session = request.getSession();创建一个新会话HttpSession session = request.getSession(); 当用户浏览其他选项卡时,我使用HttpSession session = request.getSession(false);维护会话HttpSession session = request.getSession(false); 现在,如果用户单击“主页”选项卡,我想要销毁上一个会话并重新开始新会话。 请告诉我怎么做?

为什么Java类库仍然使用String常量代替枚举

我正在使用一些Java类,如javax.Mail.Session和MessageDigest用于我正在构建的工具。 我注意到很难为它们分配属性,因为它们正在使用String常量。 例如,对于Session对象,您必须在Property实例中分配String键值对,然后用于创建Session 。 因此,如果您希望会话记录调试消息,请在Property实例中指定”smtp.mail.debug” , “true” 。 同样,如果您希望MessageDigest使用SHA ,请将MessageDigest实例创建为MessageDigest.getInstance(“SHA”) 如果我想使用MD5 / RC4等实现MessageDigest ,或者向Session对象添加另一个属性,我还没弄清楚要做什么以及从哪里获取信息。 如果公共枚举被这些各自的类公开以分配属性,那会不会更好? 至少可以为程序员节省大量的搜索时间。

什么是数据库会话?

我理解对数据库事务概念的一般理解。 我们访问事务中的数据库以确保ACID属性。 在Hibernate中有一个称为会话的概念。 会话的用途是什么? 数据库访问何时应该在两个会话中而不是在同一个会话中发生? 为了解释更多,我已经看到了hibernate代码 从会话工厂获取会话 打开一个会话 开始交易 提交交易 结束会议 我需要知道的是会话在这里的重要性是什么? 为什么不像事务工厂那样,开始事务和提交事务?

如何保持用户登录的会话?

我有一个需要用户注册的应用程序。 我已经在我的服务器中将应用程序连接到PHP以执行注册/登录的逻辑,因此,这根本不是问题。 但是,我想在本地保留用户的会话,因此用户无需每次运行应用程序时再次登录。 所以,我想要这样的东西: 第一次用户,他打开应用程序,注册并登录。 用应用程序做一些事情并关闭它。 再次打开应用程序,用户被识别,因此无需再次登录。 我只需要存储一个ID和一个用户名(两者都是在登录php方法中从DB中获取的)。 最好的方法是什么? 我考虑过做一个自定义首选项,将数据存储在文件甚至是本地数据库(sqlite)中。 有什么建议么?

会话ID cookie在gwt rpc中

假设我正在编写自己的会话代码,那么在java中生成唯一且安全的会话ID cookie的正确方法是什么。 我不应该自己动手,而是使用已经标准化的东西吗? 我正在使用gwt和谷歌应用引擎平台。 如何在浏览器/服务器重启期间保持会话持续存在?

如何正确地使JSP会话无效?

所以这就是问题所在。 当用户退出我的网站时,他们仍然可以点击后退按钮并继续使用该网站。 为了跟踪用户是否登录,我创建了一个会话属性“isActive”。 用户登录时该属性设置为true,并且在注销时会话无效之前(冗余)删除该属性。 同样在每个页面上,我都会检查属性是否存在。 我还指定不应在其head标签中缓存页面。 尽管如此,用户仍然能够回击浏览器,并继续使用该网站,就好像他们从未注销过一样。 有关如何解决此问题的任何想法? 这是代码: 登录Servlet: … session.setAttribute(“isActive”, true); //Redirect to home page. 检查登录的JSP: 注销Servlet: request.getSession().removeAttribute(“isActive”); request.getSession().invalidate(); response.sendRedirect(“index.jsp”); 内部头标记: 谢谢

使用Sessions将值存储和检索到servlet

我有login.jsp页面,我尝试用户名和文本框中的密码通过会话传递给servlet。 代码o login.jsp如下: UserName: Password: 我想检索login.jsp中设置的用户名和密码到servlet。 我尝试使用以下代码,但它给了我null值。 我在servlet中使用的java代码如下: HttpSession session = request.getSession(true); String name=(String)session.getAttribute(“name”); System.out.println(“Welcome”+name); 谁能告诉我在哪里弄错了。 我需要在会话中存储用户名,以便我可以在该servlet中使用它来处理多个请求

存储并使不同用户的Java HttpSession无效

好的。 我想要做的是,当我更新用户时,可以使他们当前拥有的任何会话无效,以强制刷新凭据。 我不关心能够直接访问特定于会话的用户数据。 理想情况下,我也可以通过类似的方式将用户限制为一个会话。 我尝试做的是使用用户名作为键创建一个HashMap,并使用HttpSession作为值(我的实际设置稍微复杂一些,但在重复看似无法解释的失败之后,我将其归结为这个简单的测试)。 但是,每当我试图告诉检索到的HttpSession无效时,它似乎使当前的[admin]会话无效。 HttpSession是否与当前请求密不可分? 或者有一种完全不同的方式来处理这个问题? 如果它碰巧重要,我正在使用Jetty 6.1.26。