JSP 四大作用域對象(page、request、session、application)雖擁有相同的屬性操作 API,但其屬性可見範圍與生命周期截然不同。本文重點剖析 page 與 request 域的區別與應用場景。

屬性作用域決定了 setAttribute 存放的數據能被哪些組件訪問、存活多久。
pageContext.setAttribute("key", val) 或直接 pageScope.key (EL)。request.setAttribute("key", val) 或 requestScope.key (EL)。<!-- pageContext_01.jsp -->
<% pageContext.setAttribute("pageMsg", "page域數據"); %>
<% request.setAttribute("reqMsg", "request域數據"); %>
<jsp:forward page="pageContext_02.jsp" />
<!-- pageContext_02.jsp -->
page域:${pageScope.pageMsg} <!-- 為空,page域隨forward失效 -->
request域:${requestScope.reqMsg} <!-- 可獲取,request域跨forward保留 -->