一尘不染

如何在jsp页面和servlet之间共享数据

jsp

我有几个.jsp页面和几个servlet。

我需要将一些信息保存到会话变量中。在jsp页面中,我只是指

session.get...()

要么

session.set...()

无需显式声明HttpSession对象。

但是在servlet中,适用正确的编程规则,因此我必须首先创建一个对象。

我担心的是如果我创建这样的对象

HttpSession session = new HttpSession();

然后用这样的东西写

session.setAttribute("files",fileList);

我担心的是,我没有写入.jsp文件中引用的同一会话对象。

我该怎么做,以便可以在任何jsp或servlet中写入同一对象。


阅读 555

收藏
2020-06-08

共1个答案

一尘不染

您需要通过调用 HttpServletRequest.getSession() 方法来获取HttpSession 。

HttpServletRequest传递给您的 doGet() 方法。如果没有针对该请求的会话,则 getSession()
将创建一个会话。如果一个会话已经存在并与此请求相关联,则getSession()将改为检索现有会话。如果使用此标准机制,那么您将自动在JSP和Servlet之间共享同一会话。

您永远不要尝试直接构造HttpSession,因为它是由容器管理的。实际上,您不能通过调用 new HttpSesion()
创建一个新的对象,因为HttpSession只是一个接口,无法实例化。

2020-06-08