Demonstre com código: 4 escopos de JSP

1. Qual é o uso de escopo em JSP?

No desenvolvimento WEB, JSP é usado como uma visão para exibir dados, e fornece 4 escopos diferentes para compartilhar dados na página. O escopo desses 4 escopos tem diferentes ciclos de vida. Descubra entre os 4 escopos. A diferença é conveniente para percebermos as funções de diferentes cenários de negócios.

2. Quais são os 4 escopos?

domínio de página, domínio de solicitação, domínio de sessão, domínio de aplicativo

3. A diferença entre escopos

3.1 objeto pageContext

Objeto pageContext: seu ciclo de vida é o domínio da página, o que significa que os dados armazenados no objeto pageContext são válidos apenas na página atual. Quando ocorre um salto de página, os dados no domínio pageContext são destruídos

Definir valor:

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

Valor:

pageContext.getAttribute("Key");

3.2 objeto de solicitação

Objeto de solicitação: seu ciclo de vida é o domínio de solicitação, o que significa que quando os dados são armazenados no objeto de solicitação, quando a página é encaminhada ou na página atual, os dados do domínio de solicitação podem ser obtidos. Quando a solicitação termina, os dados armazenados são destruídos.

Definir valor:

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

Valor:

request.getAttribute("key");

3.3 objeto de sessão

Objeto de sessão: seu ciclo de vida é o domínio da sessão. A sessão é baseada no navegador, o que significa que os dados são armazenados no domínio da sessão. Quando o navegador é fechado, os dados são destruídos.

Definir valor:

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

Valor:

session.getAttribute("key");

3.4 objeto de aplicação

Objeto aplicativo: seu ciclo de vida é o domínio do aplicativo, que existe em todo o aplicativo. Quando os dados são definidos no aplicativo, eles serão destruídos quando o servidor for fechado.
Definir valor:

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

Valor:

application.getAttribute("key");

4. Demonstração de código

4.1 Domínio da página de demonstração

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 a página atual, você pode ver que todos os 4 escopos podem obter valores, conforme mostrado abaixo:
Insira a descrição da imagem aqui

4.2 Domínio de solicitação de demonstração

Para demonstrar o domínio do pedido, 2 páginas são necessárias. Eles são scope.jsp e scope2.jsp. Conforme mostrado na figura abaixo: Defina o valor em scope.jsp e encaminhe-o para scope2.jsp por meio de encaminhamento. Descobriu-se que o valor de pageContext não pode ser obtido e outros valores podem ser obtidos para comparação.

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>

Insira a descrição da imagem aqui

4.3 Domínio da sessão de demonstração

A sessão é baseada no navegador. Se você visitar scope2.jsp de outro navegador, verá que o valor do campo da sessão não está disponível. (Observe que é o acesso ao scope2.jsp em vez de scope.jsp. Porque o scope.jsp será redefinido e receberá o valor.)
Insira a descrição da imagem aqui

4.4 Domínio do aplicativo de demonstração

Porque o domínio do aplicativo é baseado em todo o aplicativo. Portanto, você precisa fechar o servidor tomcat para destruí-lo. Depois de reiniciar o tomcat, conforme mostrado abaixo:
Insira a descrição da imagem aqui

Acho que você gosta

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