废话不多说了,直接就走干货了。
jsp的九大内置对象
page ,request ,session ,application ,response ,config ,out ,pageContext ,exception。
page:page对象代表当前JSP页面
config:标识Servlet配置,类型:ServletConfig,api跟Servlet中的ServletConfig对象是一样的,能获取该servlet的一些配置信息,能够获取ServletContext
application:标识web应用上下文,类型:ServletContext,详情就看Servlet中的ServletContext的使用
request:请求对象,类型:httpServletRequest
response:响应对象,类型:httpServletResponse
session:表示一次会话,在服务器端记录用户状信息的技术
out:输出响应体 类型:JspWriter
exception 表示发生异常对象,类型 Throwable,在上面我们介绍page指令中的一个errorPage属性时就有说到他
pageContext:表示 jsp页面上下文(jsp管理者) 类型:PageContext
关于page和pageContext有一个理解坑,不知道为什么会这样子取名。批评一下。。。好了,看货,
1. page对象表示的是当前的页面,即jsp文件被编译成servlet后的servlet对象的this。
2. pageContext对象表示的是page域对象,表示jsp页面的上下文对象。类型是PageContext
<%
String name = "张三";
//使用page对象的方法
out.print(page.name);//输出结果是 张三
//pageContext对象的使用方法
pageContext.setAttribute("name" ,"李四");
//使用EL表达式
out.print(${pageScope.name});//输出结果是李四
//或者不使用EL表达式,在指定的域中查找值,具体的域值在文章的最后会给出
out.print(pageContext.getAttribute("name",pageContext.PAGE_SCOPE));
%>
jsp的四大域
page域:它的操作需要使用pageContext对象来完成。
request域:request对象来完成。
session域:session域来完成。
application域:application对象类完成。
<%
//在page域设置值
pageContext.setAttribute("name","张三");
//在request域设置值
request.setAttribute("name","张三");
//在session域设置值
session.setAttribute("name","张三");
//在application域设置值
application.setAttribute("name","张三");
%>
域值的详细说明:
- PAGE_SCOPE:public static final int PAGE_SCOPE
页面范围: (缺省情况) 直到从当前Servlet.service()调用中得到返回值才在PageContext中一直保持有效的指定名字的参考。
REQUEST_SCOPE:public static final int REQUEST_SCOPE
请求范围:指定的参考将从ServletRequest关于servlet一直保持有效,直到当前的请求完成。
SESSION_SCOPE:public static final int SESSION_SCOPE
会话范围 (只有档本页面参与了一个会话时有效):源自有关servlet的HttpSession (如果有的话)的指定的参考一直保持有效,直到 HttpSession无效。
APPLICATION_SCOPE:public static final int APPLICATION_SCOPE
应用范围: 指定的引用一直在ServletContext中保持有效直到被重新声明