JavaWeb学习打卡14(JSP内置对象及作用域)
JSP 中9 大内置对象
- PageContext // 用来存东西
- Request // 用来存东西
- Response
- Session // 用来存东西
- Application (ServletContext) // 用来存东西
- config (ServletConfig)
- out
- page
- exception
有 存取功能的内置对象 的实例:
先创建一个 pageContextDemo01.jsp 文件 :
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%--内置对象--%> <%pageContext.setAttribute("name1","小许1号");//保存的数据只在一个页面中有效request.setAttribute("name2","小许2号"); //保存的数据只在一次请求中有效,请求转发会携带这个数据session.setAttribute("name3","小许3号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器application.setAttribute("name4","小许4号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器,数据才回丢失 %><%--脚本片段中的代码,会被原封不动的生成到 .JSP文件 .java文件中 要求:脚本片段中的代码:必须保证Java语法的正确性 --%><%//从pageContext 取出,我们通过寻找的方式(findAttribute)来取//从作用域的底层到高层寻找 page --> request --> session --> applicationString 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> //EL表达式会过滤掉不存在值--%> <%--使用JSP表达式取不存在的值,不会被过滤,会在网页上显示 默认值null--%> <h3><%=name5%></h3></body> </html>
运行结果:
作用域等级:
从底层到高层: page --> request --> session --> application
我们可以用 pageContext.setAttribute( ) 来指定它的作用域
<%//设置作用域为 session /**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;*/pageContext.setAttribute("hello1","hello1",PageContext.SESSION_SCOPE); %>
两种页面跳转的实现方式,新建一个 jsp 文件 ,增加以下代码,可使其跳转到 indext.jsp 文件页面
<%//在前端 jsp中可直接通过pageContext.forward() 就可以实现页面转发pageContext.forward("/indext.jsp");//上下这两句代码的效果都是一样的,两种不同的实现方式//request.getRequestDispatcher("/indext.jsp").forward(request,response); %>
常用内置对象的应用场景
- page(用不上,不用了解)
- request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完就没用的
- session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:;购物车;
- application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;