我一直在疯狂地重置我的一个jsp页面上的一些验证错误。这是一个继承自我无法再到达的人(死亡或不可用)的项目。我有一个包含大量自定义标记库的jsp页面,其中更多页面作为选项卡添加,父页面具有操作按钮以打开表单等内容。在标签部分和父页面中都设置/修改了验证错误和一些配置参数。但有趣的是,我可以看到pageContext.setAttribute()
,session.setAttribute()
和pageContext.getSession().setAttribute()
的大量使用。如果我的初步知识是正确的,pageContext
在基于servlet的实现中被大量使用。但是如果我在JSp页面上使用以下三个来设置属性会有多么不同呢?
**示例场景(我的问题):**
我在父页面中设置了一些属性,这些属性也在标签页中设置/修改(嵌入在父页面中)。我想删除它们,如果有验证错误,我将删除我在标签页中的内容,即下次页面只是从父页面加载这些属性。我是否在标签页中使用pageContext.setAttribute()
,但在父页面中使用pageContext.getSession().setAttribute()
?
KR,
答案 0 :(得分:2)
页面范围
当我们放入JSP
页面时,范围仅适用于放置它的JSP
页面。
这是默认范围,因此调用与pageContext.setAttribute("", "", PageContext.PAGE_SCOPE);
pageContext.setAttribute("", "");
是相同的
会话范围
session.setAttribute()
和pageContext.getSession().setAttribute()
都是相同的。
您在会话范围上放置的内容可用于同一用户会话中的所有请求。
与pageContext.setAttribute("", "", PageContext.SESSION_SCOPE);
session.setAttribute("", "");
也是一样的