jsp作用域

2024-01-01 16:37:25

jsp四大域对象

page

只在当前页面有效,跳转后无效

request

服务器跳转有效,客户端发生跳转无效,(因为客户端跳转,相当于发生两次跳转)

session

保存在浏览器会话中,服务器或客户端跳转均有效,改变浏览器访问则无效

application

保存在服务器端

先介绍以下方法

<% 
	pageContext.setAttribute("被设置属性","属性值") //设置page属性 
	request.setAttribute("被设置属性","属性值") //设置request属性,依次类推
	session.setAttribute("被设置属性","属性值")
	application.setAttribute("被设置属性","属性值")   
%>

<% out.print(pageContext.getAttribute("name-1")+"<br>");%> //获取page属性依次类推
    <% out.print(request.getAttribute("name-2")+"<br>");%>
    <% out.println(session.getAttribute("name-3")+"<br>");%>
    <% out.print(application.getAttribute("name-4")+"<br>");%>

一般设置jsp页面跳转有两种方法

jsp 的forward指令

<jsp:forward page="跳转文件相对路径"></jsp:forward>

相当于对服务端进行一次跳转

a标签的超链接

<a href="url"></a>

相当于对客户端进行一次跳转,服务器端两次跳转

for example

range.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("name-1","lihua");
        request.setAttribute("name-2","zhangsang");
        session.setAttribute("name-3","wemz");
        application.setAttribute("name-4","niuma");
    %>

<%--    jsp跳转--%>
    <jsp:forward page="getName.jsp"></jsp:forward>
</body>
</html>

getName.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <% out.print(pageContext.getAttribute("name-1")+"<br>");
out.print(request.getAttribute("name-2")+"<br>");
     out.println(session.getAttribute("name-3")+"<br>");
     out.print(application.getAttribute("name-4")+"<br>");%>
</body>
</html>

访问range.jsp时浏览器显示

image-20231231221231301

page设置的属性无法获取,因为经过了一次跳转

修改range.jsp代码改为超链接跳转

range.jsp

<%--
  Created by IntelliJ IDEA.
  User: longersking
  Date: 2023/12/31
  Time: 21:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("name-1","lihua");
        request.setAttribute("name-2","zhangsang");
        session.setAttribute("name-3","wemz");
        application.setAttribute("name-4","niuma");
    %>

<%--    jsp跳转--%>
<%--    <jsp:forward page="getName.jsp"></jsp:forward>--%>
    <a href="getName.jsp">获取属性</a>
</body>
</html>

image-20231231221519963

image-20231231221531341

request获取不到属性,因为超链接两次跳转,超出request范围

现在关闭浏览器,再次访问

image-20231231221819957

可以发现只有application属性可以访问

重启服务器(idea重启按钮)

0)]

request获取不到属性,因为超链接两次跳转,超出request范围

现在关闭浏览器,再次访问

[外链图片转存中…(img-I0zq4S73-1704093093561)]

可以发现只有application属性可以访问

重启服务器(idea重启按钮)

image-20231231221928678

文章来源:https://blog.csdn.net/longwanlian/article/details/135325293
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。