servlet实操之jsp内置对象以及作用域
jsp内置对象以及作用域
作用域:
pageContext.setAttribute(“name1”,”小明1号”); //保存的数据只在一个页面中有效
request.setAttribute(“name2”,”小明2号”); //保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute(“name3”,”小明3号”); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute(“name4”,”小明4号”); //保存的数据只在服务器中有效,从打开服务器到关闭服务器
场景:
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的!
session:客户端向服务器发送请求,产生的数据,用户用完一会还有用,比如:购物车;
application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天数据;
Session可以用来存一个人访问网站的数据,在这个网站访问期间,每个页面都生效。
application(ServletContext)可以用来存多个用户共享的数据。
练习:
<%
pageContext.setAttribute("name1","1");//同一页面
request.setAttribute("name2","2");//同一请求
session.setAttribute("name3","3");//同一会话
application.setAttribute("name4","4");//同一服务
%>
<%--fiddattribut会不断扩大徐寻找范围 page>request>session>application--%>
<%
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("name6");
%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>
<%--这不是一个请求 不能取出name2--%>
<input type="button" onclick="window.location.href='/jsp/forward/jsp2.jsp';" value="跳转" />
<%--请求转发是同一请求 可以取出name2--%>
<jsp:forward page="forward/jsp1.jsp" />
<%
pageContext.forward("/jsp/forward/jsp2.jsp");
%>