1 JSP内置对象
在JSP开发中,会频繁使用到一些对象,使用这些对象每次都要创建吗?
例如Servlet中的HttpSession、ServletContext、HttpServletRequest、HttpServletResponse等。
为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象。
这些创建好的对象就叫内置对象

1 使用out对象向客户端发送文本内容
out对象
out对象类型为JspWriter,相当于带缓冲区的PrintWriter(response.getWriter())。
对比:
PrintWriter write(内容):直接向浏览器写出内容
JspWriter write(内容):向JSP缓冲区写出内容

<%= "1-aaaa" %>
2-bbbb
<%
out.write("3-cccc");
response.getWriter().write("4-dddd");
%>
转换为java文件

输出结果

3. JspWriter out,先将内容写入到内置缓冲区,再转移到response缓冲区
4. response.getWriter().write 放到response缓冲区
5. tomcat服务器会默认提取response缓冲区中的内容
JSP页面的缓冲触发:
1、缓冲池满
2、刷新缓区
3、关闭缓区
4、执行完jsp页面
有什么办法out对象可以直接将数据写入Servlet引擎提供的缓冲区中?
可以通过page指令中操作缓冲区的buffer属性来实现
pageContext对象
在JSP页面中,使用pageContext对象可以获取JSP的其他8个隐式对象。pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用于获取其他隐式对象的方法。
pageContext对象作用范围
pageContext操作属性的相关方法中
参数name指定的是属性名称,
参数scope指定的是属性的作用范围。
pageContext对象的作用范围有4个值
pageContext.PAGE_SCOPE:表示页面范围。
pageContext.REQUEST_SCOPE:表示请求范围。
pageContext.SESSION_SCOPE:表示会话范围。
pageContext.APPLICATION_SCOPE:表示Web应用程序范围。
也可以在四个域对象中自动搜索

<%
// findAttribute():在四个域中自动搜索
// 顺序:page域 -> request域 -> session域 -> context域
String msg = (String) pageContext.findAttribute("message");
%>
注意: 当调用findAttribute()方法查找名称为name的属性时,会按照page、request、session和application的顺序依次进行查找,如果找到,则返回属性的名称,否则返回null。
exception对象
JSP引擎在执行过程中,可能会抛出种种的异常。exception对象表示的就是JSP引擎在执行代码过程中抛出的种种异常。
exception对象是java.lang.Exception类的实例对象,它用于封装JSP中抛出的异常信息。
注意: exception对象只有在错误处理页面才可以使用,即page指令中指定了属性<%@ page isErrorPage="true"%>的页面。
Exception常用方法

page
应答或请求的page对象,page对象代表JSP本身,只有在JSP页面内才是合法的。page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名。
作用范围:本页面取得,服务器跳转后无效。所设置的属性仅在当前页面内有效。
session对象
session对象代表用户会话,它在用户访问网站时创建,并在用户关闭浏览器或会话过期时销毁。在JSP页面中,可以通过session对象存储和获取会话数据,可以跨多个请求和页面共享数据。
注意的是,session对象是与用户会话相关的,因此每个用户的session对象是独立的,不会相互干扰。
session原理

session方法
1.setAttribute(String name, Object value):将一个属性值存储到session对象中,可以在后续的请求中获取。
2.getAttribute(String name):从session对象中获取指定名称的属性值
3.removeAttribute(String name):从session对象中删除指定名称的属性值。
4.setMaxInactiveInterval():设置session的过期时间。
5.invalidate():使当前会话失效,删除所有的session属性值。
528

被折叠的 条评论
为什么被折叠?



