更新時(shí)間:2023-04-14 來源:黑馬程序員 瀏覽量:
JSP(Java Server Pages)是一種用于動(dòng)態(tài)生成 HTML 頁(yè)面的 Java 技術(shù),它支持四種不同的作用域,分別是:
1.Page Scope:頁(yè)面作用域是指頁(yè)面內(nèi)的變量,它們?cè)陧?yè)面內(nèi)有效,但在JSP(Java Server Pages)是一種用于動(dòng)態(tài)生成 HTML 頁(yè)面的 Java 技術(shù),它支持四種不同的作用域,分別是其他頁(yè)面中不可見。頁(yè)面作用域變量可以通過 pageContext 對(duì)象進(jìn)行訪問。
2.Request Scope:請(qǐng)求作用域是指變量在請(qǐng)求中傳遞。在同一次請(qǐng)求中,變量在不同的頁(yè)面間共享。請(qǐng)求作用域變量可以通過 request 對(duì)象進(jìn)行訪問。
3.Session Scope:會(huì)話作用域是指變量在用戶會(huì)話期間保持一致。在同一用戶的不同請(qǐng)求中,變量在不同的頁(yè)面之間共享。會(huì)話作用域變量可以通過 session 對(duì)象進(jìn)行訪問。
4.Application Scope:應(yīng)用程序作用域是指變量在整個(gè)應(yīng)用程序生命周期內(nèi)保持一致。在同一應(yīng)用程序的不同請(qǐng)求中,變量在不同的頁(yè)面之間共享。應(yīng)用程序作用域變量可以通過 application 對(duì)象進(jìn)行訪問。
下面是一個(gè)簡(jiǎn)單的 JSP 頁(yè)面,演示了如何在不同作用域中設(shè)置和獲取變量:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>作用域演示</title> </head> <body> <%-- 在頁(yè)面作用域中設(shè)置變量 --%> <% pageContext.setAttribute("pageVariable", "PageScope"); %> <%-- 在請(qǐng)求作用域中設(shè)置變量 --%> <% request.setAttribute("requestVariable", "RequestScope"); %> <%-- 在會(huì)話作用域中設(shè)置變量 --%> <% session.setAttribute("sessionVariable", "SessionScope"); %> <%-- 在應(yīng)用程序作用域中設(shè)置變量 --%> <% application.setAttribute("applicationVariable", "ApplicationScope"); %> <%-- 輸出各個(gè)作用域中的變量 --%> <h1>作用域演示</h1> <p>頁(yè)面作用域中的變量:${pageContext.pageVariable}</p> <p>請(qǐng)求作用域中的變量:${request.requestVariable}</p> <p>會(huì)話作用域中的變量:${session.sessionVariable}</p> <p>應(yīng)用程序作用域中的變量:${application.applicationVariable}</p> </body> </html>
在上面的例子中,我們分別使用pageContext、request、session 和application對(duì)象設(shè)置了不同作用域中的變量,并使用EL 表達(dá)式${}在頁(yè)面中輸出了這些變量的值。需要注意的是,EL表達(dá)式中的變量名要與 setAttribute()方法中設(shè)置的變量名一致。