application:在所有应用程序中有效,即只要这个网站运行着,这个作用域就有效,这个指的程序的运行过程。(在整个应用程序中都有效)
session:在当前会话中有效,即从浏览器访问服务器开始,这个指的是用户的一个访问过程,即这次会话的开始到结束(在一次会话中有效,服务端客户端跳转都有效)
request:在当前请求中有效,负责多个servlet之间的信息共享,即将信息放入到request中,在整个请求阶段都是有效的,即用户访问的这个阶段都可以获取到这个数据(只在一次请求中有效,服务端跳转有效,客户端跳转无效)
page:在当前页面有效,即在一个jsp页面上是有效的。(只在当前页面中有效)
首先要声明一点,所谓"作用域"就是"信息共享的范围",也就是说一个信息能够在多大的范围内有效。
Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。作用域解释如下。
application:服务器启动到停止这段时间。
session:HTTP会话开始到结束这段时间。
request:HTTP请求开始到结束这段时间。
page:当前页面从打开到关闭这段时间。
1.设置域对象
//设置page作用域
pageContext.setAttribute("name1","zhangsan");
//设置request作用域
request.setAttribute("name2","lisi");
//设置session作用域
session.setAttribute("name3","wangwu");
//设置application作用域
application.setAttribute("name4","zhaoliu");
2.获取域对象
<%
//获取page域对象
out.print(pageContext.getAttribute("name1")+"<br>");
//获取request域对象
out.print(request.getAttribute("name2")+"<br>");
//获取session域对象
out.print(session.getAttribute("name3")+"<br>");
//获取application域对象
out.print(application.getAttribute("name4")+"<br>");
%>
3.服务端跳转
<%--<jsp:forward page="xxxxxx.jsp"></jsp:forward>--%>
4.客户端跳转
<a href="xxxxx.jsp">跳转</a>
5.JSP中静态包含
静态包含include,
格式:<%@include file="包含的jsp页面路径"%>
特点:
1.将内容直接进行了替换
2.静态包含只会生成一个源码文件,最终的内容都会在_jspService方法中(源码文件中)
3.不能同名变量
4.运行效率高一点,耦合性高,不够灵活
5.JSP动态包含,相当于方法的调用,可以定义同名变量,效率高,耦合性低,可以加入参数,
动态包含的格式:
<jsp:include page="需要包含的jsp页面路径"></jsp:include>
加参数的动态包含的格式,name属性不支持表达式,value能支持表达式
<jsp:include page="需要包含的jsp页面路径">
<jsp:param name="uname" value="admin"/>
<jsp:param name="upwd" value="<%=str%>"/>
</jsp:include>