pageContext.getSession()。setAttribute()和pageContext.setAttribute()之间的真正区别

时间:2015-06-18 08:00:12

标签: java jsp

我一直在疯狂地重置我的一个jsp页面上的一些验证错误。这是一个继承自我无法再到达的人(死亡或不可用)的项目。我有一个包含大量自定义标记库的jsp页面,其中更多页面作为选项卡添加,父页面具有操作按钮以打开表单等内容。在标签部分和父页面中都设置/修改了验证错误和一些配置参数。但有趣的是,我可以看到pageContext.setAttribute()session.setAttribute()pageContext.getSession().setAttribute()的大量使用。如果我的初步知识是正确的,pageContext在基于servlet的实现中被大量使用。但是如果我在JSp页面上使用以下三个来设置属性会有多么不同呢?

**示例场景(我的问题):**

我在父页面中设置了一些属性,这些属性也在标签页中设置/修改(嵌入在父页面中)。我想删除它们,如果有验证错误,我将删除我在标签页中的内容,即下次页面只是从父页面加载这些属性。我是否在标签页中使用pageContext.setAttribute(),但在父页面中使用pageContext.getSession().setAttribute()

KR,

1 个答案:

答案 0 :(得分:2)

页面范围

当我们放入JSP页面时,范围仅适用于放置它的JSP页面。 这是默认范围,因此调用与pageContext.setAttribute("", "", PageContext.PAGE_SCOPE);

相同的pageContext.setAttribute("", "");是相同的

会话范围 session.setAttribute()pageContext.getSession().setAttribute()都是相同的。 您在会话范围上放置的内容可用于同一用户会话中的所有请求。 与pageContext.setAttribute("", "", PageContext.SESSION_SCOPE);

一样调用session.setAttribute("", "");也是一样的