一.在java开发中,jsp提供了9个内置的对象,这些内置对象将由容器为用户进行实例化,用户直接使用。
这9个内置对象分别为:pageContext,request,response,session,
application,config,out,page,exception。
常用的为前面5个
1. page : 代表该页面本身,也就是 Servlet 中的 this ,能用 page 的地方就可以用 this .即Object page=this
2. request : 客户端的请求参数都被封装在该对象里。这是一个常用对象,获取客户端请求参数必须使用该对象。
常用方法:getParameter(String paramName)、getParameterValues(String paramName)、setAttribute(String arrtName,Object attrValue)
getAttribute(StringattrName) 和 setCharacterEncoding(String env)等。
3. response:和request相对应,用于服务器响应客户端请求,向客户端输出信息。javax.servlet.HttpServletResponse接口
4.session : 该对象代表一次会话。当客户端与站点建立连接时,会话开始;当客户端关闭浏览器时,会话结束。常用方法: getAttribute(String
attrName)、 setAttribute(String attrName, Object attrValue) 等。
5.appliction :该实例代表 JSP 所属的 WEB 应用本身,用于 JSP 页面,或者在 Servlet 之间信息交换。 常用方法有 getAttribute( name , value)、
setAttribute( name , value)、getInitParameter( name ) 等。
6.pageContext: 代表 JSP 页面上下文,它相当于页面中所有对象功能的集合,可以访问页面中的共享数据。 常用方法有:getServletContext() 和
getServletConfig() 等
7.out : JSP 页面输出流,用于输出内容,形成 HTML 页面。同时也能管理应用服务器上的输出缓存区,底层:javax.servlet.jsp.jspWriter抽象类
8.config: Jsp页面通过jsp容器初始化时被传递的对象,javax.servlet.ServletConfig.在servlet初始化时,jsp引擎通过config向它传递信息,信息可以是属性名
和属性值匹配的参数,也可以是servletCtext传递的服务器有关信息
9.exception:代表页面中的异常和错误。只有页面是错误处理页面,page 的isErrorPage 属性为 true 时该对象才可以使用。常用方法 getMessage() 、
printStrackTrace()等,它是java.lang.Throwable的一个对象
(下面会给常用的对象一些例子)
二.在jsp开发中,可以保存四种数据保存范围:分别为page,request,session,application。
page范围:只在一个页面中保存数据。javax.servlet.jsp.PageContext(抽象类)
request范围:只在一个请求中保存数据。javax.servlet.http.HttpServletRequest(接口)
session范围:在一个会话范围内保存数据,仅供单个用户使用:javax.servlet.http.HttpSession(接口)
application范围:在整个服务器上保存数据,所有用户共享:javax.servlet.ServletContext(接口)
内置对象的使用例子:
1.page
<% //设置页面范围数据key->value pageContext.setAttribute("name","祁高翔"); pageContext.setAttribute("age", 21); %> <% //取值 String name=(String)pageContext.getAttribute("name"); int age=(Integer)pageContext.getAttribute("age"); %> <font color="blue" size=50px>姓名:<%=name %></font><br/> <font color="red" size=50px>年龄:<%=age %></font><br/>
2.request
<% //设置request范围的数据key->value request.setAttribute("name", "request祁高翔"); request.setAttribute("age",21); %> <jsp:forward page="requestTarget.jsp"> <jsp:param value="" name=""/> </jsp:forward>
请求另外一个页面
<% String name=(String)request.getAttribute("name"); int age=(Integer)request.getAttribute("age"); %> <font size=15px color="gray" face="宋体">已经跳转到Target页面</font><br> <font color="red" size=5px>姓名: <%=name %></font> <font color="red" size=5px>年龄: <%=age %></font>
3. session,application同request,只是数据保存的作用范围不同
4.response
4.1自动刷新应用
<% //每隔一秒刷新一次 response.setHeader("refresh","1"); //获取当前时间 Date date=new Date(); %> 系统的当前时间是: <%=date.toLocaleString()%>
4.2页面重定向(不带参数)属于客户端跳转
response.sendRedirect("index.html");
5.out
<body>
<% out.println("Goxcheer"); int total=out.getBufferSize();//获取总的缓存区大小 int available=out.getRemaining();//未使用的缓存区大小 int use=total-available;//获取使用的缓存区大小 out.println("总的缓存区大小"+total); out.println("未使用的缓存区大小"+available); out.println("获取使用的缓存区大小"+use); %>
</body>
6.exception
注意要包含指令<%@page errorPage="error.jsp" %>
<%@page isErrorPage="true" %>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@page errorPage="error.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <% int a=1; int b=0; out.write(a/b); %> </body> </html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@page isErrorPage="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <% if(exception!=null){ out.println(exception.getMessage()); } %> </body> </html>
7.pageContext
<body> <% pageContext.setAttribute("name0","pageScore"); request.setAttribute("name1", "requestScore"); session.setAttribute("name2", "sessionScore"); application.setAttribute("name3", "applicationScore"); out.println("用pageContext访问页面中的"+pageContext.getAttribute("name0")+"<br>"); out.println("用pageContext访问页面中的"+pageContext.getRequest().getAttribute("name1")+"<br>"); out.println("用pageContext访问页面中的"+pageContext.getSession().getAttribute("name2")+"<br>"); out.println("用pageContext访问页面中的"+pageContext.getServletContext().getAttribute("name3")+"<br>"); %> </body>