1.JSP内置对象分类
第一类:与Servlet有关的内置对象。包括page和config两个对象。
第二类:与Input/Output有关的内置对象。包括out、request和response三个对象。
第三类:与Context有关的内置对象。包括session、application和pageContext三个对象。
第四类:与Error有关的内置对象。仅包括exception这一个对象。
2.属性保存范围
JSP中提供了4种属性保存范围,分别为page、request、session及application。
2.1 page范围
所谓page范围,就是指设置的属性只在当前页面有效。通过使用pageContext的setAttribute()方法来设置属性,并通过pageContext的getAttribute()方法来取得属性。
2.2 request范围
所谓 request范围,就是指属性在一次请求范围内有效。如果页面从一个页面跳转到另一个页面,那么该属性就失效了。这里所指的跳转是指客户端跳转,比如客户单击超链接跳转到其他页面,或者通过浏览器地址栏浏览其他网页。如果使用服务器端跳转<jsp:forward>,则该属性仍然有效。通过使用request的setAttribute()方法来设置属性,并通过request的getAttribute()方法来取得属性。
2.3 session范围
所谓 session范围,也就是指客户浏览器与服务器一次会话范围内,如果和服务器断开连接,那么这个属性也就失效了。通过使用session的setAttribute()方法来设置属性,并通过session的getAttribute()方法来取得属性。
2.4 application范围
所谓application范围,也就是指在整个服务器范围,直到服务器停止以后才会失效。通过使用application的setAttribute()方法来设置属性,并通过application的getAttribute()方法来取得属性。
2.5 移除属性
只需调用相应对象的removeAttribute()方法就可以移除指定属性。
3 request对象
request对象不但可以用来设置和取得request范围变量,还可以用来获得客户端请求参数、请求的来源、表头、cookies等。
4 .response对象
实现页面自动刷新
可以通过response对象的addIntHeader()方法添加一个标题为Refresh的标头,并指定刷新间隔时间,从而实现页面自动刷新。
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>设置页面自动刷新</title>
05 </head>
06 <body>
07 <%-- 使用response对象的setIntHeader实现页面自动刷新--%>
08 <%
09 response.addIntHeader("Refresh",10);
10 %>
11 <h4>该页面10秒后自动刷新</h4>
12 </body>
13 </html>
实现页面自动跳转
可以通过response对象的addHeader()方法添加一个标题为Refresh的标头,并指定页面跳转时间及跳转页面,从而实现页面自动跳转。
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>设置页面自动跳转</title>
05 </head>
06 <body>
07 <%-- 使用response对象的setIntHeader实现页面自动刷新--%>
08 <%
09 response.setHeader("Refresh","10;URL=http://www.baidu.com");
10 %>
11 <h4>该页面10秒后自动跳转到百度首页</h4>
12 </body>
13 </html>
5 .out对象
5.1 使用out对象进行页面输出
通过out对象的print()方法和println()方法进行页面输出,不同的println()方法输出完成后,会在字符串后面添加换行标记。
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>使用out对象进行输出</title>
05 </head>
06 <body>
07 <%-- 使用out对象进行输出--%>
08 <%
09 out. print("hello"); //不换行
10 out.println("hello"); //换行
11 %>
12 </body>
13 </html>
5.2 使用out对象
求得缓冲区使用大小通过out对象的getBufferSize ()方法可以获得缓冲区的大小,而通过getRemaining()方法可以获得缓冲区剩余大小。通过这两个值可以很容易地求得缓冲区使用大小。
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>使用out对象求使用缓冲区大小</title>
05 </head>
06 <body>
07 <%
08 int all = out.getBufferSize(); //获得缓冲区大小
09 int remain = out.getRemaining(); //获得剩余缓冲区大小
10 int use = all - remain; //通过相减得到使用缓冲区大小
11 out.println("使用缓冲区大小:" + use); //输出使用缓冲区大小
12 %>
13 </body>
14 </html>
6.session对象
session对象用来表示用户的会话状况,一般用于保存用户的各种信息,直到生命周期超时或者被认为释放掉为止。
7.application对象
application对象用来取得和设置Servlet的相关信息。application对象的生命周期是从服务器启动产生直到服务器关闭为止。
8.pageContext对象
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <html>
03 <head>
04 <title>通过pageContext对象取得不同范围的属性</title>
05 </head>
06 <body>
07 <%
08 pageContext.setAttribute("name","page_James");
//设置page范围name属性
09 request.setAttribute("name","request_James");
//设置request范围name属性
10 session.setAttribute("name","session_James");
//设置session范围name属性
11 application.setAttribute("name","application_James");
//设置application范围name属性
12 %>
13 <%
14 //获得page范围name属性
15 String pageStr = (String)pageContext.getAttribute("name",page
Context.PAGE_SCOPE);
16 //获得request范围name属性
17 String requestStr = (String)pageContext.getAttribute("name",
pageContext.REQUEST_SCOPE);
18 //获得session范围name属性
19 String sessionStr = (String)pageContext.getAttribute("name",
pageContext.SESSION_SCOPE);
20 //获得application范围name属性
21 String applicationStr =
22 (String)pageContext.getAttribute("name",pageContext.APPLICATION_
SCOPE);
23 %>
24 <%="page范围:name属性值" + pageStr%><br>
25 <%="request范围:name属性值" + requestStr%><br>
26 <%="session范围:name属性值" + sessionStr%><br>
27 <%="application范围:name属性值" + applicationStr%>
28 </body>
29 </html>
9.page对象
page对象代表JSP转译后的Servlet,通过page对象可以非常方便地调用Servlet类中定义的方法。
01 <%@ page language="java" contentType="text/html;charset=gb2312"%>
02 <%@ page info="this is the page Object Practice" %>
03 <html>
04 <head>
05 <title>page对象</title>
06 </head>
07 <body>
08 <%--通过page对象调用Servlet中的getServletInfo()方法 --%>
09 <%
10 String info = ((javax.servlet.jsp.HttpJspPage)page).getServletInfo
();
11 %>
12 <%=info %>
13 </body>
14 </html>
10.config对象
config对象可以用来获得Servlet的配置信息.
11.exception对象
exception对象用来处理错误异常,如果要使用exception对象,必须指定page中的isErrorPage属性值为“true”。
01 <%@ page language="java" contentType="text/html;charset=gb2312" isErrorPage=
"true"%>
02 <%@page import="java.io.PrintStream"%>
03 <html>
04 <head>
05 <title>处理错误异常</title>
06 </head>
07 <body>
08 <%=exception%><br>
09 <%=exception.getMessage()%><br>
10 <%=exception.getLocalizedMessage()%><br>
11 <%
12 exception.printStackTrace(new java.io.PrintWriter(out));
13 %>
14 </body>
15 </html>