jsp内置对象
jsp内置对象,是指可以不加声明和创建就可以在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量
JSP内置对象定义
JSP内置对象是 Web 容器创建的一组对象
JSP内置对象的名称是JSP 的保留字
JSP内置对象是可以直接在JSP页面使用的对象,无需使用“new”获取实例
JSP九大内置对象
1.request对象 、2.response对象、 3.pageContext对象、4.session对象、5.application对象、
6.out对象、7.config对象、8.page对象、9.exception对象
一 request对象
request对象主要用于处理客户端请求
request这个对象封装了客户端生成的http请求的所有细节,主要包括http头信息、系统信息、请求方式、参数等。通过request对象提供的对应的方法可以处理客户端浏览器提交的http请求个各项参数。
request对象常用方法
方法名称 说 明
String getParameter(String name) 根据页面表单组件名称获取页面提交数据
String[] getParameterValues(String name) 获取一个页面表单组件对应多个值时的用户的请求数据
void setCharacterEncoding(String charset) 指定每个请求的编码,在调用getParameter( )之前进行设定,可以解决中文乱码问题
String getRemoteAddr() 返回提交请求的客户机的IP地址
注意: setCharacterEncoding方法只能用来处理post方式提交的中文乱码,并且setCharacterEncoding方法必须放在所有getParameter方法之前,不然依然会出现乱按
如果使用get请求要处理中文乱码
String un=new String(username.getBy0074es("ISO-8859-1"),"utf-8");
二Response
response对象用于响应客户端请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。
常用方法:
方法名称 说明
sendRedirect() 将请求定位到一个不同的URL,即页面重定向
setHeader() 设置响应头信息
setHeader
页面自动刷新
<body>
<%! int i = 0;%>
<%response.setHeader("refresh", "1");
out.println(++i);%>
</body>
页面定时跳转
<body>
5秒钟后跳回主页面,如果没有跳转<a href="main.jsp">这里</a>
<%response.setHeader("refresh", "5;URL=main.jsp");%>
</body>
sendRedirect
语法:response.sendRedirect("跳转页面")
eg: response.sendRedirect("new.jsp");(效果跳转到new.jsp页面)
转发与重定向的区别
转发(服务器端跳转): 一次请求
<jsp:forward>
request.getRequestDispatcher("new.jsp").forward(request, response);
重定向(客户端跳转): 两次请求
response.sendRedirect("new.jsp");
<a href="new.jsp">new.jsp</a>
转发重定向:
1.转发是在服务器端完成,因此称为服务器端跳转
重定向是在客户端完成,因此称为客户端跳转
2.转发后,地址栏不会改变
重定向后,地址栏会改变
3.转发只能在同一个WEB项目范围内进行
重定向可以再同一个WEB项目内,也可以重定向到其他任意地方eg:response.sendRedirect("http://www.baidu.com");
三pageContext对象
pageContext对象是一个比较特殊的内置对象,用于获取页面上下文,通过他可以获取jsp页面的其他8个内置对象。
pageContext对象的创建和初始化都是由容器完成的。
常用方法:
方法 说明
getAttribute(String name) 取得page范围内的值
setAttribute(String name) 设置page范围内的值
getAttribute(String name,int scope) 取得指定范围内的值
setAttribute(String name,int scope) 设置指定范围内的值
scope可以为如下4个值:
PageContext.PAGE_SCOPE 对应于page范围
PageContext.REQUEST_SCOPE 对应于request范围
PageContext.SESSION_SCOPE 对应于session范围
PageContext.APPLICATION_SCOPE 对应于application范围
四Session
Session在网络中被称为会话。由于HTTP协议是一种无状态的协议,也就是当一个客户端发送请求,服务器端收到请求,
并返回响应后,该连接就结束了,而服务器不保存任何相关的信息。为了弥补这一缺点,HTTP协议提供了session。
通过session可以在应用程序的web页面间进行跳转时,保存用户的状态,使得整个用户会话一直存在下去,直到浏览器关闭。
常用方法
方法名称 说明
setAttribute(String key,Object value) 以key/value的形式保存对象值
getAttribute(String key) 通过key获取对象值
getMaxInactiveInterval() 获取session的有效非活动时间,以秒为单位
getId() 获取session对象的编号
invalidate() 设置session对象失效
removeAttribute(String key) 从session中删除指定名称(key)所对应的对象
五application
application对象用于保存应用程序中的共有数据。他在服务器启动时自动创建,在服务器停止时销毁。
当application对象存在时,所有用户都可以共享该application对象。与session相比application对象生命周期更长,范围更大,类似于系统的全局变量。
常用方法:
方法名称 说明
void setAttribute(String key,Object value) 以key/value的形式保存对象值
Object getAttribute(String key) 通过key获取对象值
String getRealPath(String path) 返回相对路径的真实路径
Eg
<%=application.getRealPath("/WEB-INF") %>
显示:
D:\Tomcat 7.0\webapps\myjsp\WEB-INF
项目真实的运行路径
eg:统计网站访问人数
<%
Integer count = (Integer)application.getAttribute("count");
if(count != null){
count ++;
}else{
count = 1;
}
application.setAttribute("count",count);
%>
<%
Integer i = (Integer)application.getAttribute("count");
out.println("您好,您是第 " + i +" 位访问本网站的用户" );
%>
获取WEB应用的初始化参数:
使用<context-param>标签(与Servlet标签并列)为整个Web应用配置属性的话,那所有的Servlet就都能访问里面的参数了。例如:可以把数据库的配置信息放在这里。
这里涉及到一些概念不要混淆:
一、请求参数 parameter --- 浏览器发送过来的请求中的参数信息
二、初始化参数 initparameter --- 在web.xml中为Servlet或ServletContext配置的初始化时带有的基本参数
三、域属性 attribute --- 四大作用域中存取的键值对
六out对象
out对象用于在web浏览器内输出信息,并管理服务器上的输出缓冲区。
在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲区,数据输完后,要及时关闭输出流。
常用方法:
方法 说明
clear() 清除缓冲区中的内容
clearBuffer() 清除当前缓冲区中的内容
flush() 刷新流
isAutoFlush() 检测当前缓冲区已满时是自动清空,还是抛出异常
getBufferSize() 获取缓冲区的大小
七config对象
config对象用于取得Servlet的配置信息。
常用方法:
方法 说明
getServletContext() 获取Servlet上下文
getServletName() 获取Servlet服务器名
getInitParameter() 获取服务器所有初始参数名称,返回值为java.util.Enumeration对象
getInitParameterNames() 获取服务器中name参数的初始值
page对象
page对象代表JSP本身,只有在JSP页面内才是合法的。Page对象本质上是包含当前Servlet接口引用的变量。可以看做是this关键字的别名。
八exception对象
exception对象用于处理jsp页面发生的异常。只有在page指令中设置isErrorPage属性的值为true的jsp页面才可以使用exception内置对象。
常用方法:
方法 说明
getMessage() 返回exception对象的异常信息字符串
getLocalizedmessage() 返回本地化的异常错误
toString() 返回关于异常错误的简单信息描述
fillInStackTrace() 重写异常错误的栈执行轨迹
eg:500.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
isErrorPage="true"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '500.jsp' starting page</title>
</head>
<body>
<h1>该页面发生错误,请联系管理员</h1>
<%=exception.getMessage() %>
</body>
</html>
九exception对象
exception对象表示jsp引擎在执行代码时抛出的异常
如果想要使用exception对象,那么需要配置编译指令的isErrorPage属性为true
即在页面指令中设置:<%@page isErrorPage=“true”%>
对象的四大作用域
对象的作用域
名称 对象 说明
page范围 pageContext 在一个页面范围内有效,通过
pageContext对象访问
request范围request在一次服务器请求范围内有效
session范围session在一次会话范围内容有效
application范围 application 在一个应用服务器范围内有效