设计两个页面1.jsp、 2.jsp,理解JSP中四种作用范围的区别:pageContext,request,session,application。 1.jsp中分别在四个范围内存储四个字符串,其主要代码如下: pageContext.setAttribute("p","pagestr"); request.setAttribute("r","requeststr"); session.setAttribute("s","sessionstr"); application.setAttribute("a","applicationstr"); 2.jsp中分别输出四个范围内的指定属性值,其主要代码如下: out.print(pageContext.getAttribute("p")+"<br/>"); out.print(request.getAttribute("r")+"<br/>"); out.print(session.getAttribute("s")+"<br/>"); out.print(application.getAttribute("a")); 要求:两个页面分别用链接(重定向)、转发两种方式进行跳转,观察2.jsp的结果。
时间: 2023-07-13 09:11:33 浏览: 129
好的,我可以为你解答这个问题。首先,JSP 中的四种作用范围如下:
1. `pageContext`:页面上下文范围,只在当前页面中有效。
2. `request`:请求范围,只在当前请求中有效。
3. `session`:会话范围,对于同一个用户的所有请求都有效。
4. `application`:应用程序范围,对于整个应用程序都有效,所有用户共享。
在 1.jsp 中,我们分别使用了四种作用范围来存储四个字符串。在 2.jsp 中,我们通过 `out.print()` 方法来输出存储在四个作用范围中的字符串。
接下来,我们分别通过链接和转发两种方式进行跳转,观察 2.jsp 的结果。
1. 链接方式跳转
在 1.jsp 中,我们可以添加以下代码来添加链接:
```
<a href="2.jsp">跳转到 2.jsp</a>
```
点击链接后,将会通过 GET 请求方式跳转到 2.jsp。在 2.jsp 中,我们可以通过以下代码来输出存储在四个作用范围中的字符串:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输出作用范围</title>
</head>
<body>
<%
out.print(pageContext.getAttribute("p")+"<br/>");
out.print(request.getAttribute("r")+"<br/>");
out.print(session.getAttribute("s")+"<br/>");
out.print(application.getAttribute("a"));
%>
</body>
</html>
```
当我们通过链接跳转到 2.jsp 时,会输出如下内容:
```
null
null
null
applicationstr
```
这是因为使用链接方式跳转时,只有 `application` 范围中的属性值可以被访问到,其他范围的属性值都为 null。
2. 转发方式跳转
在 1.jsp 中,我们可以添加以下代码来进行转发:
```
<%
request.getRequestDispatcher("2.jsp").forward(request, response);
%>
```
通过转发方式跳转时,会将原来的请求和响应对象传递给下一个页面。在 2.jsp 中,我们同样使用以下代码来输出存储在四个作用范围中的字符串:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输出作用范围</title>
</head>
<body>
<%
out.print(pageContext.getAttribute("p")+"<br/>");
out.print(request.getAttribute("r")+"<br/>");
out.print(session.getAttribute("s")+"<br/>");
out.print(application.getAttribute("a"));
%>
</body>
</html>
```
当我们通过转发方式跳转到 2.jsp 时,会输出如下内容:
```
pagestr
requeststr
sessionstr
applicationstr
```
这是因为使用转发方式跳转时,可以访问到所有作用范围中的属性值。
阅读全文