狂神说 javaweb 20集:JSP内置对象及作用域

2022/5/23 1:02:46

本文主要是介绍狂神说 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>


这篇关于狂神说 javaweb 20集:JSP内置对象及作用域的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程