1,什么是内置对象
内置对象是在jsp页面中无需创建就可以直接使用的变量,在jsp中一共有9个这样的对象,它们分别是:
- out(jspWriter);
- config(ServletConfig);
- page(当前jsp的真身类型);
- pageContext(PageContext);
- exception(Throwable);
- request(HttpServletRequest);
- response(HttpServletResponse);
- application(ServletContext);
- Session(HttpSession)
2,隐藏对象概述
out:最为常用的方法是print(),向页面输出,它和respnse.getWriter()基本相同
config:在页面中基本没什么用,但如果jsp在web.xml中存在配置,而且存在初始化参数,那么可以使用config来获取config对象方法:getServletContext(),getServletName(),getinitParameter(),这三个方法在jsp中没什么用
page:表示当前页面得到当前实例,在页面中使用this和page是一样的,基本没用
request:和Servlet中的request一样
response:和Servlet中的response一样
application:就是ServletContext对象
session:就是HttpSession对象
exception:它的类型是Throwable,只能在错误页面使用
pageContext:很有用,具体见下
3,jsp四个域对象
域的范围和属性管理
pageContext范围:当前页面之内有效
request范围:当前请求内有效
session范围:当前的会话内有效
application:当前这次服务器生命周期内有效
pageContext用法示例:
<%
pageContext.setAttribute("name", "zhongling");
pageContext.setAttribute("birthday", new Date());
%>
<%
String name=(String)pageContext.getAttribute("name");
Date birthday=(Date)pageContext.getAttribute("birthday");
%>
<h1>name: <%=name %></h1>
<h1>birthday: <%=birthday %></h1>
request示例:(服务器间的跳转,从1.jsp跳转到2.jsp)
1.jsp:
<%
request.setAttribute("name", "zl");
request.setAttribute("birthday", new Date());
%>
<jsp:forward page="/2.jsp"></jsp:forward>
2.jsp:
<%
String name=(String)request.getAttribute("name");
Date birthday=(Date)request.getAttribute("birthday");
%>
<h1>name: <%=name %></h1>
<h1>birthday: <%=birthday %></h1>
session示例:
代码如上(将request换为session)
application示例:
代码如上(将session换为application)