前言
之前我们已经学习了JSP的基础了,今天我们继续来学习JSP九大内置对象,这也是JSP的重点部分,同时也是面试的重点,大家在看完之后一定要自己动手练习。同时JSP基础不知道的可以去看往期内容在回来继续。
传送门:【JSP入门】只知道HTML却不知道JSP?
接下来正式来学习JSP九大内置对象吧!
初识内置对象
所谓内置对象就是在JSP中无需创建就可以直接使用的九个对象
这九大内置对象分别是:
(1)out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
(2)config(ServletConfig):对应“真身”中的ServletConfig;
(3)page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象;
(4)pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
(5)exception(Throwable):只有在错误页面中可以使用这个对象;
(6)request(HttpServletRequest):即HttpServletRequest类的对象;
(7)response(HttpServletResponse):即HttpServletResponse类的对象;
(8)application(ServletContext):即ServletContext类的对象;
(9)session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@pagesession=”false”%>,说明这个页面不能使用session。
虽然内置对象是重点,但是不是所有的内置对象都很常用。
基本不会使用的内置对象:config、page、exception。
有两个对象不是每个JSP页面都可以使用的:exception、session。
深析九大内置对象
1、request对象
request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
2、response对象
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
3、session对象
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 "Key/value"。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
4、application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
5、out 对象
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
6、pageContext 对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用pageContext对象。
7、config 对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
8、page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
9、exception 对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。
在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
JSP九大内置对象分为四类:
(1)输入输出对象:out对象、response对象、request对象
(2)通信控制对象:pageContext对象、session对象、application对象
(3)Servlet对象: page对象、config对象
(4)错误处理对象:exception对象
JSP案例演示
老规矩我们写一个简单的JSP来演示一下常用的内置对象的用法。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> Insert title here <% String url = request.getRequestURL().toString();//HttpServletRequest对象 response.getWriter().println(url);//HttpServletResponse对象 %> <% out.println(" ABCCC");//等同于response.getWriter() session.setAttribute("user", "张三");//HttpSession类的对象 out.println((String)session.getAttribute("user")); %> <% String cp = application.getInitParameter("copyright");//ServletContext out.println(" "); out.println(cp); %> <% //通过使用pageContext获取其他对象 pageContext.getRequest(); pageContext.getResponse(); pageContext.getSession(); pageContext.getServletContext(); %>
输出页面:
根据输出的页面钻研一下对应关系。
JSP四大域:
Servlet中有三大域,而JSP中有四大域:
ServletContext:整个应用程序。
session:整个会话(一个会话中只有一个用户)。
request:一个请求链。
pageContext:一个jsp页面,这个域是在当前jsp页面和当前jsp页面中使用的标签之间共享数据。
其有效期分别为:
(1)application(ServletContext):在整个服务器上保存,所有用户都可使用。 重启服务器后无效。
(2)session:再一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效。
(3)request:只在一次请求中有效,服务器跳转之后有效。 客户端跳无效。
(4)page(pageContext):只在一个页面中保存属性。 跳转之后无效。
获取其他内置对象
一个pageContext对象等于所有内置对象,即1个当9个。这是因为可以使用pageContext对象获取其它8个内置对象:
(1)JspWriter getOut():获取out内置对象;
(2)ServletConfig getServletConfig():获取config内置对象;
(3) Object getPage():获取page内置对象;
(4)ServletRequest getRequest():获取request内置对象;
(5)ServletResponse getResponse():获取response内置对象;
(6) HttpSession getSession():获取session内置对象;
(7)ServletContext getServletContext():获取application内置对象;
(8)Exception getException():获取exception内置对象;
结语
这就是今天的内容了,比较简短,但是比较重要。看完后记得多动手练习哈。