【问题标题】:HttpSession Servlet don't work correctly from a servlet to a servletHttpSession Servlet 从 servlet 到 servlet 不能正常工作
【发布时间】:2013-12-03 20:41:06
【问题描述】:

下午好,我正在尝试从 HttpSession 对象中的 servlet 中恢复实例化对象。

当我尝试从 JSP 中恢复时,我顺利地获得了对象。 但是,当我尝试从另一个 Servlet 检索此数据时,不是我获取对象,它直接返回我 NULL,尽管会话 ID 相同。

这是我实例化要传递的对象的代码:

request.getSession(true);
request.getSession().setAttribute("object1", object1);

这是尝试检索对象的代码。

req.getSession().getAttribute("object1");

你能想到什么吗?

感谢和问候。

【问题讨论】:

  • 如何调用第二个 servlet ?你从哪里叫它?
  • 可能是浏览器禁用了cookie。

标签: java servlets httpsession


【解决方案1】:

在jsp中这样保存session中的数据

session.setAttribute("object1", object1); 并像这样在 servlet 中检索

HttpSession session=request.getSession();
session.getAttribute("object1");

【讨论】:

  • session.setAttribute() 与 jsp 中的 request.getSession() 不同
  • 我知道它们是不同的,但它会导致这里的问题吗? true 只是创建一个新会话,如果它不存在,因为它已经创建,所以它不应该创建问题。
  • @Trying 然后我们必须等到 OP 发表评论我的答案是否有效
  • 我正在取消我的反对票,但我确信这不会导致问题。
  • @Trying 如果它不起作用,那么我会更好地删除我的答案,但我确信 cookie 没有被禁用,否则也无法进入 jsp
【解决方案2】:

试试这个

清单 3:存储一个对象

公共类 logonServlet 扩展 HttpServlet{

公共无效服务(HttpServletRequest_req,HttpServletRe-

响应 _res) 抛出 ServletException{

ServletContext thisContext = getServletContext();

//--假设某个方法创建了一个新的连接类

连接 newConnection = createConnection();

thisContext.setAttribute("database.connection", newConnection);

//--向客户端返回一些输出

} }

清单 4:检索对象

公共类 logoffServlet 扩展 HttpServlet{

公共无效服务(HttpServletRequest_req,HttpServletRe- 响应 _res) 抛出 ServletException{

ServletContext thisContext = getServletContext();

//--假设某个方法创建了一个新的连接类

连接 newConnection = thisContext.getAttribute( “数据库。连接”);

如果 (newConnection == null)

//- 数据库尚未打开

//--向客户端返回一些输出

} }

来源:http://www2.sys-con.com/itsg/virtualcd/java/archives/0505/williamson2/index.html

【讨论】:

    猜你喜欢
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多