狂神说 javaweb 20集:JSP内置对象及作用域
作者:互联网
20.JSP内置对象及作用域
8.5 9大内置对象
-
PageContext 存东西
-
Request 存东西
-
Respone
-
Session 存东西
-
Aplicatian 存东西
-
config(ServletConfig)
-
out
-
page 几乎不用,不用了解
-
Exception
作用域
pageContext.setAttribute( "name1","test1" );//保存的数据只在一个页面中有效
request.setAttribute("name2","test2" );//保存的数据只在一个请求中有效,请求转发会携带这个参数
session.setAttribute( "name3","test3" );//保存的数据只在一个会话中有效,从打开浏览器到关闭浏览器
application.setAttribute( "name4","test4" );//保存的数据只在一个服务器中有效,从打开服务器中到关闭服务器中ServletContext
应用场景:
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;
代码
pageContext.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--内置对象--%>
<%
pageContext.setAttribute( "name1","test1" );//保存的数据只在一个页面中有效
request.setAttribute("name2","test2" );//保存的数据只在一个请求中有效,请求转发会携带这个参数
session.setAttribute( "name3","test3" );//保存的数据只在一个会话中有效,从打开浏览器到关闭浏览器
application.setAttribute( "name4","test4" );//保存的数据只在一个服务器中有效,从打开服务器中到关闭服务器中ServletContext
%>
<%--脚本片段中的代码,会被原封不动生成到JSP。java
要求: 这里面的代码,必须保证java语法的正确性
--%>
<%
//通过pageContext取出我们保存的值
//从pageContext取出,我们同寻找的方式
//从底层到高层(作用域): page→request→session→application
//JVM : 双亲委派机制;
String name1 = (String) pageContext.findAttribute( "name1" );
String name2 = (String) pageContext.findAttribute( "name2" );
String name3 = (String) pageContext.findAttribute( "name3" );
String name4 = (String) pageContext.findAttribute( "name4" );
String name5 = (String) pageContext.findAttribute( "name5" );//不存在
%>
<%--使用EL表达式输出 $()--%>
<h1>取出的值为</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3><%=name5%></h3>
</body>
</html>
pageContext2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
//通过pageContext取出我们保存的值
//从pageContext取出,我们同寻找的方式
//从底层到高层
String name1 = (String) pageContext.findAttribute( "name1" );
String name2 = (String) pageContext.findAttribute( "name2" );
String name3 = (String) pageContext.findAttribute( "name3" );
String name4 = (String) pageContext.findAttribute( "name4" );
String name5 = (String) pageContext.findAttribute( "name5" );//不存在
%>
<%--使用EL表达式输出 $()--%>
<h1>取出的值为</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3><%=name5%></h3>
</body>
</html>
pageContext3.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--
public static final int PAGE_SCOPE = 1;
public static final int REQUEST_SCOPE = 2;
public static final int SESSION_SCOPE = 3;
public static final int APPLICATION_SCOPE = 4;
//scope : 作用域
public void setAttribute(String name, Object attribute, int scope) {
switch(scope) {
case 1:
this.mPage.put(name, attribute);
break;
case 2:
this.mRequest.put(name, attribute);
break;
case 3:
this.mSession.put(name, attribute);
break;
case 4:
this.mApp.put(name, attribute);
break;
default:
throw new IllegalArgumentException("Bad scope " + scope);
}
}
--%>
<%
pageContext.setAttribute("hello1","hello1",PageContext.SESSION_SCOPE);
//session.setAttribute("hello1","hello1")
%>
</body>
</html>
pageContextDemo01.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
pageContext.forward( "/index.jsp" );
//request.getRequestDispatcher("/index.jsp").forward( request,response );
%>
</body>
</html>
标签:20,javaweb,findAttribute,作用域,setAttribute,name4,name2,pageContext,String 来源: https://www.cnblogs.com/jianchizuo/p/16299432.html