1.内置对象的概念
在Jsp的开发过程中,开发者会频繁地使用到一些对象,
例如Request,Session对象,ServletConfig,ServletContext,如果每次要使用这些对象都要去创建或者调用方法去得到就比较麻烦。
Sun公司为了更加方便开发者在jsp文件中直接得到这些对象,直接就帮我们创建或得到好了这些对象,开发者直接使用这些对象即可,
这些直接可以使用的对象就叫内置对象!!!!
<%
//使用请求对象HttpServletRequest
request.getContentPath();
//使用HttpSession对象
HttpSession session = requesst.getSesion(); --之前的servlet做法
session.setAttribute(name,object);
%>
2. 9个内置对象
对象名 对应的类型 备注
request HttpServletRequest 请求对象,封装请求信息
response HttpServletResponse 响应对象,封装响应信息
config ServletConfig servlet配置对象,封装servlet配置信息
application ServletContext servlet的上下文对象,代表整个web应用环境
session HttpSession 会话对象。用于保存会话数据
exception Throwable 异常对象,用于封装异常信息
page Object 代表当前jsp翻译成java类对象
out JspWriter jsp页面缓存对象,相当于带缓存功能的PrintWriter
pageContext PageContext jsp的上下文件对象,代表当前jsp的环境
3.out对象
out对象,类型JspWriter
out.wirter("内容")
1) PrintWrite类: 直接往浏览器写出内容 out.write(“内容”);
2)JspWriter类: 相当于带缓存的PrintWriter out.write("内容"): 把内容写入缓存区
注意:
当JspWriter缓存区满足以下条件,缓存区内容会写入到PrintWriter中。
1)缓冲区满了。
2)刷新缓冲区(JspWriet.flush())
3)关闭缓冲区 (<%@page buffer="0kb"%> buffer属性用于设置Jsp'Writer缓存区大小,默认8KB)
4)执行完Jsp页面
得到当前缓冲区大小: out.getBufferSize()
得到当前缓冲区剩余大小: out.getRemaining()
4.pageContext对象
pageContext对象,类型PageContext类。
1)包含了其他8个内置对象的引用
Jsp文件翻译的java类
public class _02_out_jsp{
public void _jspService(HttpServletRequest rquest, HttpServetResponse response){
HttpSession session;
ServletConfig config;
......
//Sun设计了一个PageContext对象,用于存放其他8个内置对象
PageContext pageContext;
//调用method1
method1(pageContext)
}
public void method1(PageContext pageContext){
//要使用8个内置对象
pageContext.getSession();
pageContext.getRequest();
pageContext.getResponse();
......
}
}
以上情况,在自定义标签中频繁使用到!!!
2)PageContext作为域对象
作用: 保存数据和获取数据,清除数据
方法:
getAttribute()
setAttribute()
removeAttribute();
保存数据:
默认情况,保存到page域中
pageContext.setAttribute(name,object);
可以指定域保存
pageContext.setAttribute(name,object, int 域范围)
域范围:PAGE_SCOPE, REQUET_SCOPE, SESSION_SCOPE , APPLICATION_SCOPE
取出数据:
默认情况,从page域取出
pageContext.getAttribute(name);
可以指定域取出
pageContext.getAttribute(name, int 域范围)
域范围:PAGE_SCOPE, REQUET_SCOPE, SESSION_SCOPE , APPLICATION_SCOPE
从四个域中搜索:
pageContext.findAttribute(name)
搜索顺序: page域-> request域 -> sesion域-> application域
5.Jsp四个域对象的
5.1域对象的作用
用于保存数据,获取数据,在不同资源之间共享数据
5.2域对象的方法:
setAttribute(name,object) ; 保存数据方法
getAttribute(name) 获取数据
romveAttribute(name) 清除数据
5.3域对象作用范围
page域: 处于同一个jsp页面中数据共享是有效的!!
request域:处于同一个请求中数据共享是有效的!!(使用转发)
session域:处于同一个会话中数据共享是有效的!!(同一个session对象)
application域:处于同一个web应用中数据共享是有效的!!
6.Jsp最佳的实现
Jsp就是一个servlet!!!
Servlet的作用:使用java代码开发动态资源。可以写java代码,输出html代码
Jsp的作用: 使用java代码开发动作资源。可以写java代码,也可以输出html代码。
项目中可以会涉及的工作:
1)接收参数
2)处理业务逻辑
3)跳转其他资源
4)显示数据
Servlet:擅长写java代码
Jsp:擅长显示数据
最佳实践:
利用servlet来处理java相关的逻辑事务,把需要显示的数据发送给jsp,然后在jsp中显示数据。servlet+jsp