Demuestre con código: 4 ámbitos de JSP

1. ¿Cuál es el uso del alcance en JSP?

En el desarrollo WEB, JSP se utiliza como una vista para mostrar datos, y proporciona 4 ámbitos diferentes para compartir datos en la página. El ámbito de estos 4 ámbitos tiene diferentes ciclos de vida. Averigüe entre los 4 ámbitos. La diferencia nos conviene para darnos cuenta de las funciones de diferentes escenarios comerciales.

2. ¿Qué 4 visores?

dominio de página, dominio de solicitud, dominio de sesión, dominio de aplicación

3. La diferencia entre visores

3.1 objeto pageContext

objeto pageContext: su ciclo de vida es el dominio de la página, lo que significa que los datos almacenados en el objeto pageContext solo son válidos en la página actual. Cuando se produce un salto de página, los datos en el dominio pageContext se destruyen

Valor ajustado:

pageContext.setAttribute("Key","value");

Valor:

pageContext.getAttribute("Key");

3.2 objeto de solicitud

Objeto de solicitud: su ciclo de vida es el dominio de solicitud, lo que significa que cuando los datos se almacenan en el objeto de solicitud, cuando se reenvía la página o en la página actual, se pueden obtener los datos en el dominio de solicitud. Cuando finaliza la solicitud, los datos almacenados se destruyen.

Valor ajustado:

request.setAttribute("key","value");

Valor:

request.getAttribute("key");

3.3 objeto de sesión

Objeto de sesión: su ciclo de vida es el dominio de sesión. La sesión se basa en el navegador, lo que significa que los datos se almacenan en el dominio de sesión. Cuando se cierra el navegador, los datos se destruyen.

Valor ajustado:

session.setAttrbute("key","value"); 

Valor:

session.getAttribute("key");

3.4 objeto de aplicación

Objeto de aplicación: Su ciclo de vida es el dominio de la aplicación, que existe en toda la aplicación. Cuando los datos se configuran en la aplicación, se destruirán cuando se cierre el servidor.
Valor ajustado:

application.setAttribute("key","value");

Valor:

application.getAttribute("key");

4. Demostración de código

4.1 Dominio de la página de demostración

Página: scope.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>作用域测试</title>
</head>
<body>
<%
	//设值
    pageContext.setAttribute("name1","zhangshan001");
    request.setAttribute("name2","zhangshan001");
    session.setAttribute("name3","zhangshan001");
    application.setAttribute("name4","zhangshan001");
	//取值
    String name1 = (String)pageContext.getAttribute("name1");
    String name2 = (String)request.getAttribute("name2");
    String name3 = (String)session.getAttribute("name3");
    String name4 = (String)application.getAttribute("name4");
%>

pageContext域:${name1}<br/>
request域:${name2}<br/>
session域:${name3}<br/>
application域:${name4}<br/>

</body>
</html>

Visite la página actual, puede ver que los 4 ámbitos pueden obtener valores, como se muestra a continuación:
Inserte la descripción de la imagen aquí

4.2 Dominio de solicitud de demostración

Para demostrar el dominio de la solicitud, se requieren 2 páginas. Son scope.jsp y scope2.jsp. Como se muestra en la siguiente figura: Establezca el valor en scope.jsp y reenvíelo a scope2.jsp hasta forward. Se encuentra que el valor de pageContext no se puede obtener, y se pueden obtener otros valores para comparar.

Página: scope.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>作用域测试</title>
</head>
<body>
<%
    pageContext.setAttribute("name1","zhangshan001");
    request.setAttribute("name2","zhangshan001");
    session.setAttribute("name3","zhangshan001");
    application.setAttribute("name4","zhangshan001");
    String name1 = (String)pageContext.getAttribute("name1");
    String name2 = (String)request.getAttribute("name2");
    String name3 = (String)session.getAttribute("name3");
    String name4 = (String)application.getAttribute("name4");
%>
pageContext域:${name1}<br/>
request域:${name2}<br/>
session域:${name3}<br/>
application域:${name4}<br/>

<jsp:forward page="scope2.jsp"></jsp:forward>
</body>
</html>

Página: scope2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>作用域测试</title>
</head>
<body>
<%
    String name1 = (String)pageContext.getAttribute("name1");
    String name2 = (String)request.getAttribute("name2");
    String name3 = (String)session.getAttribute("name3");
    String name4 = (String)application.getAttribute("name4");
%>
<h1>scope2.jsp</h1>
pageContext域:${name1}<br/>
request域:${name2}<br/>
session域:${name3}<br/>
application域:${name4}<br/>
</body>
</html>

Inserte la descripción de la imagen aquí

4.3 Dominio de la sesión de demostración

La sesión se basa en el navegador. Si visita scope2.jsp desde otro navegador, encontrará que el valor del campo de sesión no está disponible. (Tenga en cuenta que es acceso a scope2.jsp en lugar de scope.jsp. Porque scope.jsp se restablecerá y tomará el valor).
Inserte la descripción de la imagen aquí

4.4 Dominio de la aplicación de demostración

Porque el dominio de la aplicación se basa en toda la aplicación. Entonces necesitas cerrar el servidor Tomcat para destruirlo. Después de reiniciar Tomcat, como se muestra a continuación:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/u010312671/article/details/106880716
Recomendado
Clasificación