JSP 九大隐式对象
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
还有request response 不常有的excepiton
out 通过调用pageContext对象的getOut方法返回的,作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常类似。
但是有个缓存问题,只有一下三种条件才会输出:
设置page指令的buffer属性关闭了out对象的缓存功能
out对象的缓存区已满
整个JSP页面已经结束。
比如
<%
out.write(“1”);
response.getWriter.write(“2”);
%>
会先输出2,在输出1,就是因为页面结束前out的缓冲没有满。out满了就会放到response的缓冲区,
而response自己已经把2设置到自己的缓冲区了。
代码:
aaaaaaaa
<%
response.getWriter.write(“2”);
%>
的输出顺序也是一个原理。
pageContext对象
代表JSP页面的运行环境。
1,该对象封装了对其他八大隐式对象的引用。该技术用在自定义标签。打造格式良好的JSP。
2,它自身还是一个域对象,可以用来保存数据。
3,该对象封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其他资源,检索其他域对象中的属性等。
以下代码表示pageContext可以从其他域里面取数据。
<%
request.setAttribute(“data”,”bclajd”);
String data = (String)pageContext.getAttribute(“data”,PageContext.REQUEST_SCOPE);
%>
代表各个域的常量:PageContext.
APPLICATION_SCOPE
SESSION_SCOPE
REQUESET_SCOPE
PAGE.SCOPE
pageContext.findAttribute(“data”);
以此从page-request-session-application四个域中查找data。
el表达式的$(data)就是依赖于上面这个方法。
pageContext.forward(“/1.jsp”);//跳转
pageContext.include(“/foot.jsp”);//引进页面