JSP系列:(3)JSP进阶-九大内置对象和四个域对象
2016-05-26 23:48
447 查看
1、JSP九大内置对象
1.1、什么是内置对象?
在jsp开发中,会频繁使用到一些对象,例如HttpSession, ServletContext, ServletContext, HttpServletRequet。如果我们每次要使用这些对象都去创建这些对象就显示非常麻烦。所以Sun公司设计Jsp时,在jsp页面加载完毕之后就会自动帮开发者创建好这些对象,而开发者只需要直接使用这些对象调用方法即可,这些创建好的对象就叫内置对象!!!!1.2、9大内置对象
序号 | 内置对象名 | 类型 |
---|---|---|
1 | request | HttpServletRequest |
2 | response | HttpServletResponse |
3 | config | ServletConfig |
4 | application | ServletContext |
5 | session | HttpSession |
6 | exception | Throwable |
7 | page | Object(this) |
8 | out | JspWriter |
9 | pageContext | PageContext |
1.3、Out对象
out对象类型,JspWriter类型,相当于带缓存的PrintWriter对比JspWriter和PrintWriter:PrintWriter: wrier(内容): 直接向浏览器写出内容。JspWriter:writer(内容): 向jsp缓冲区写出内容当满足以下条件之一,缓冲区内容写出:1)缓冲区满了2)刷新缓存区3)关闭缓存区4)执行完毕jsp页面1.4、pageContext对象
pageContext对象的类型是PageContext,叫jsp的上下文对象1)可以获取其他八个内置对象PageContext类提供了一系列getXXX方法,可以获取得JSP的7个内置对象另外,PageContext继承自JspContext类,JspContext类提供了getOut()方法,用于得到out对象。使用场景: 在自定义标签的时候,PageContext对象频繁使用到!!!如果一个方法以pageContext对象为传入参数,那么通过pageContext对象就可以间接得到另外8个JSP内置对象。2)本身是一个域对象作用: 保存数据和获取数据,用于共享数据#保存数据(1)默认情况下,保存到page域:pageContext.setAttribute("name");(2)可以向四个域对象保存数据:pageContext.setAttribute("name",域范围常量)#获取数据(1)默认情况下,从page域获取:pageContext.getAttribute("name")(2)可以从四个域中获取数据:pageContext.getAttribute("name",域范围常量)域范围常量:PageContext.PAGE_SCOPEPageContext.REQUEST_SCOPEPageContext..SESSION_SCOPEPageContext.APPLICATION_SCOPE(3)自动在四个域中搜索数据:pageContext.findAttribute("name");顺序: page域 -> request域 -> session域- > context域(application域)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSP内置对象pageContext</title> </head> <body> <% //保存数据。默认情况下,保存在page域中 //pageContext.setAttribute("msg", "page's message");//向pageContext中存储数据 //pageContext.setAttribute("msg", "page's message", pageContext.PAGE_SCOPE);//保存到page域,等价于上一条语句 pageContext.setAttribute("msg", "request's message", pageContext.REQUEST_SCOPE);//保存到request域 //request.setAttribute("msg", "request's message");//等价于上一条语句 pageContext.setAttribute("msg", "session's message", pageContext.SESSION_SCOPE);//保存到session域 //session.setAttribute("msg", "session's message");//等价于上一条语句 pageContext.setAttribute("msg", "application's message", pageContext.APPLICATION_SCOPE);//保存到application域 //application.setAttribute("msg", "application's message"); %> <%-- 从域对象中读取数据 --%> <h1>使用pageContext.getAttribute方法读取数据:</h1> <%-- 原则: 在哪个域中保存数据,就必须从哪个域取出数据!!! --%> <strong>page域中的数据:</strong><%= pageContext.getAttribute("msg",pageContext.PAGE_SCOPE) %><br/> <strong>request域中的数据:</strong><%= pageContext.getAttribute("msg",pageContext.REQUEST_SCOPE) %><br/> <strong>session域中的数据:</strong><%= pageContext.getAttribute("msg",pageContext.SESSION_SCOPE) %><br/> <strong>application域中的数据:</strong><%= pageContext.getAttribute("msg",pageContext.APPLICATION_SCOPE) %><br/> <hr/> <h1>使用pageContext.findAttribute方法读取数据:</h1> <%-- findAttribute(): 在四个域自动搜索数据 顺序: page域 -> request域 -> session域 -> context域 --%> <%=pageContext.findAttribute("msg") %> <hr/> </body> </html>
2、Jsp中的四个域对象
序号 | 域对象名 | 类型 | 域 | 备注 |
---|---|---|---|---|
1 | pageContext | PageContext | page域 | 在JSP中学习的 |
2 | request | HttpServletRequest | request域 | 在Servlet中学习的 |
3 | session | HttpSession | session域 | 在Servlet中学习的 |
4 | application | ServletContext | context域 | 在Servlet中学习的 |
3、Jsp的最佳实践
Servlet技术: 开发动态资源。是一个java类,最擅长写java代码。jsp技术: 开发动态资源。通过java代码最擅长输出html代码。在web项目中涉及到逻辑:1)接收参数-->servlet做2)处理业务逻辑,返回结果-->servlet做3)显示数据到浏览器-->jsp做4)跳转到其他页面 -->servlet做
servlet+jsp模式servlet:1)接收参数2)处理业务逻辑3)把结果保存到域对象中4)跳转到jsp页面Jsp:1)从域对象取出数据2)把数据显示到浏览器
相关文章推荐
- JSP/PHP基于Ajax的分页功能实现
- 开发阶段Jetty运行Jsp报错且响应空白
- jsp简单实现页面之间共享信息的方法
- Apache Web让JSP“动”起来
- JSP学习经验小结分享
- JSP 多条SQL语句同时执行的方法
- 在jsp页面中响应速度提高的7种方法分享
- (jsp/html)网页上嵌入播放器(常用播放器代码整理)
- 使用JSP制作一个超简单的网页计算器的实例分享
- JSP上传excel及excel插入至数据库的方法
- 浅析JSP的9大内置对象和4大作用域对象
- JSP中文乱码常见3个例子及其解决方法
- jsp实现将动态网页转换成静态页面的方法
- JSP避免Form重复提交的三种方案
- 纯jsp实现的倒计时动态显示效果完整代码
- JSP自定义标签入门学习
- JSP实现添加功能和分页显示实例分析
- JSP中param标签用法实例分析