今天面试阿里,问我了jsp九大内置对象都有什么,以前经常复习,当时又忘记了。写一下,以后不要忘记了。

总体框架
几点特殊说明:
1、特殊的输出效果:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '5.jsp' starting page</title>
</head>
<body>
<%
out.write("hahahaha");
response.getWriter().write("wowowowowowowo");
%>
</body>
</html>
输出效果:
wowowowowowowohahahaha出现原因:当out.write("hahahaha");的时候,out有缓冲,缓冲还没有满,运行完Response.getWriter().write(“wowowowow”)的时候,程序结束了,这时查看out中是否有数据,有数据就把数据写入write中。所以先输出wo,在输出haout隐式对象是JspWriter类型, 带缓冲的字符流 (包装流) BufferedWriter
对response.getWriter() 进行了包装,提供了缓冲区,默认大小8KB
写入该流的数据最终会被刷新到 response , 调用response.getWriter().write() 方法
Question: 什么情况下 JspWriter 会将数据刷新?
1) 缓冲区写满(默认大小为8kb, 可以在page指令中通过 buffer属性设置缓冲区大小)
2) jsp 页面结束(此流会被关闭,数据刷新到底层的流)
总结:用out做jsp页面的输出。pageContext的说明:
pageContext是个域对象,当本页面还需要某些数据的时候,可以先把数据存入pageContext对象中,然后需要的时候取出来。pageContext的生命周期在整个页面范围内,随jsp创建而创建,运行结束而结束。
pageContext方法:public void setAttribute(String name,Object value); public Object getAttribute(String name);
public void removeAttribute(String name);
pageContext访问其他域对象的方法:
public Object getAttribute(String name,int scope);
public void setAttribute(String name,Object value,int scope);
public void removeAttribute(String name,int scope);
代表各个域的常量: