JSP内置对象:指在JSP页面中内置的不需要定义就可以在网页中直接使用的对象。
JSP九种内置对象为:
- out对象
- request对象
- response对象
- session对象
- application对象
- exception对象
- page对象
- pageContext对象
- config对象
1.out对象对应的类型是 javax.servlet.jsp.JspWriter.用来向客户端输出各种数据类型的内容,对应用服务器上的输出缓冲区进行管理。
代码如下:
<%
out.print("201819102023");%> //使用out对象向页面输出相关内容
<br>
<% // out.clearBuffer(); // 清除缓冲区里的数据
out.flush(); // 先将缓冲区的数据输出再清除缓冲区数据
out.println("缓冲区空间:" + out.getBufferSize());%>
<br>
<%
out.print("缓冲区没有被占用空间:" + out.getRemaining());
out.close();
%>
运行结果:
2.request对象对应的是 javax.servlet.http.HttpServletRequest对象。该对象由Servlet容器创建,封装了来自HTTP协议请求的信息:头消息、系统消息、请求参数、请求方式。
request对象获取请求客户端的基本信息:因为该对象封装了HTTP请求的基本信息,所以从这个对象中就可以获得这些信息。
代码如下:
request对象:<br>
提交方式:<%=request.getMethod() %>
<br>
请求的的URL是:<%=request.getRequestURI() %>
<br>
协议的是名称:<%=request.getProtocol() %>
<br>
客户端请求服务器文件的路径是:<%=request.getServletPath() %>
<br>
得到的查询部分是:<%=request.getQueryString() %>
<br>
服务器名称是:<%=request.getServerName() %>
<br>
服务器口号是:<%=request.getServerPort() %>
<br>
客户端IP的地址是:<%=request.getRemoteAddr() %>
<br>
运行结果:
3.respone对象只在JSP页面生效。该对象主要是将JSP容器(Servlet容器)处理过的内容传回客户端。对应javax.servlet.http.HttpServletResponse对象。
respone响应设置
代码如下:
<html>
<head>
<title>response对象</title>
</head>
<body>
<%
<%response.sendRedirect("https://www.baidu.com");%>
%>
</body>
</html>
运行结果:
4.session对象是由服务器自动创建与用户请求相关的对象。服务器会为每一个用户创建一个session对象用来保存用户信息,跟踪用户操作。该对象内部使用Map类来保存数据,因此它的数据类型是key-value形式。对应javax.servlet.http.HttpSession.class对象。
代码如下:
<%
String name = (String)session.getAttribute("name");
String pwd = (String)session.getAttribute("pwd");
out.println("登陆成功");
out.println(name+","+pwd);
System.out.println(session.getId()); //获取当前回话的id
%>
运行结果:
5. application对象作用范围是整个项目,该对象提供了项目环境属性的访问方法。比如在web.xml文件中,提供的初始化参数(< context-parama>标签),连接数据库的URL、用户名、密码。对应javax.servlet.ServletConfig.class对象。
在index.jsp页面访问初始化参数
代码如下:
<%
String url = application.getInitParameter("url"); //获取初始化参数
String name = application.getInitParameter("name");
String password = application.getInitParameter("password");
out.println("URL: "+url+"<br>");
out.println("name: "+name+"<br>");
out.println("password: "+password+"<br>");
%>
运行结果:
6. exception 对象的作用是显示异常信息,只有在包含 isErrorPage=”true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。
excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception对象是java.lang.Throwable的对象。
代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
try
{
int result=1/0;
}
catch(Exception e)
{
out.println("throwerror2.jsp:"+e.getMessage());
}
%>
</body>
</html>
运行结果:
7.page对象代表当前的JSP页面,只有在当前的JSP页面内才是合法的。类似JAVA中的this指针。它是java.lang.Object类的实例。
代码如下:
<%
String url = config.getInitParameter("url");
String str = config.toString();
out.print("page对象的initParameter方法:"+url+"</br>");
out.print("page对象的toString方法:"+str);
%>
运行结果:
8.pageContext对象的创建和初始化由容器来完成。在JSP页面可以直接使用这个对象。该对象的作用是可以获取任何范围内的参数,通过它可以获得JSP页面的out、request、response、session、application对象。对应javax.servlet.jsp.PageContext.class对象。
代码如下:
<%
JspWriter myout=pageContext.getOut();
myout.println("myout.write: hello world"+"<br>");
out.println("out.write: hello world");
%>
运行结果:
9.config对象用于获取初始化参数。对应javax.servlet.ServletConfig.class对象。
获取某个JSP文件的初始化参数
代码如下:
<%@page contentType="text/html;charset=GB2312"%>
<html>
<body>
<p>客户服务信箱:<%=config.getInitParameter("email")%>
<p>客户服务热线:<%=config.getInitParameter("phone")%>
<p>客户服务QQ号:<%=config.getInitParameter("qq")%>
</body>
</html>
运行结果: