何为JSP?
要解释JSP的九个内置对象,必须先要搞懂何为JSP?JSP全称JavaService Pages中文:Java服务器页面。其实看到JSP学过.NET都可能对想到ASP,没错,两者确实很像。ASP是在HTML页面中加入C#用于显示层,像后台传递数据之类。而JSP是在HTML页面注入Java语言,便于向后端传递信息。JSP从本质上来分析就是一个简化版的Servlet。而jsp和Servlet的区别就是,jsp需要Servlet容器先编译成Servlet类,然后才能运行它。
在Tomcat中发布项目后,可以在Tomcat的工作目录中找到该JSP文件翻译后的xxx_jsp.java文件以及xxx_jsp.class文件,打开xxx_jsp.java上面默认都是初识化jsp的九个内置对象,而且这九个内置对象都是Servlet API,编译成Servlet使用这九个对象操作客户与服务器之间的信息传递,而JSP文件中的所以在翻译前也就是在编写JSP文件时就已经声明了JSP中的这九个对象,进行了默认初识化,并且没有展示。
九个内置对象
request
javax.servlet.http.HttpServletRequest的实例,代表了客户端的请求信息,主要用于接受通过Http协议传送到服务器的数据。(包括头信息,系统信息,请求方式以及请求参数),获取客户端请求参数必须使用该对象。
常用的方法
返回值 | 方法 | 说明 |
String | getParameter(String name) | 返回请求中的参数值 |
String[] | getParameterValues(String name) | 返回请求参数中集合属性的值 |
Void | setAttribute(String key , Object value) | 设置属性的值 |
Object | getAttribute(String name) | 返回指定属性的属性值 |
String | getCharacterEncoding() | 返回字符编码方式 |
String | getContentType() | 返回请求页面的MIME类型 |
response
javax.serlvet.http.HttpServletResponse的实例,代表服务器对客户端的响应,主要是将Servlet容器处理过的对象传回给客户端。通常很少使用该对象直接响应,而是使用out对象。一般response对象常用于重定向。
常用的方法
返回值 | 方法 | 说明 |
String | getCharacterEncoding() | 返回响应应用哪种字符编码 |
Void | setContentType(String name) | 设置响应的MIME类型 |
Void | addCookies(Cookie cookie) | 向客户端保存Cookies |
Void | sendRedirect(String URL) | 页面重定向 |
ServletOutputStream | getOutputStream() | 返回响应的一个二进制输出流 |
Out
javax.serlvet.jsp.JspWriter的实例,代表JSP页面的输出流,用于输出内容,形成HTML页面。
Session
javax.serlvet.http.HttpSession的实例,该对象代表一次会话,是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为“Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
常用方法:
返回值 | 方法 | 说明 |
Void | setAttribute(String key , Object value) | 设置属性的值 |
Object | getAttribute(String name) | 返回指定属性的属性值 |
application
javax.servlet.ServletContext的实例,该实例代表JSP所属的web应用本事,可用于JSP页面,或者在Servlet之间交换信息。application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
常用方法:
返回值 | 方法 | 说明 |
Void | setAttribute(String key , Object value) | 设置属性的值 |
Object | getAttribute(String name) | 返回指定属性的属性值 |
RequestDispatcher | getRequestDispatcher(String uripath) | 返回指定资源的RequestDispatcher对象 |
String | getInitParameter(String paramName) | 用来调用初始化在web.xml中存放的参量 |
ServletContext | getContext(String uripath) | 返回指定WebApplication的application对象 |
pageContext
javax.servlet.jsp.PageContext的实例。代表该JSP页面上下文,使用该对象可以访问页面中的共享数据,也就是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象
常用方法:
返回值 | 方法 | 说明 |
ServletConfig | getServletConfig() | 返回当前页的ServletConfig对象(config) |
ServletContext | getServletContext() | 返回当前页的ServletContext对象(application) |
config
javax.servlet.ServletConfig的实例,对象的主要作用是取得服务器的配置信息。通过 pageConext对象的getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
exception
java.lang.Throwable的实例,代表其他页面中的异常和错误,只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时,对象才能使用。
常用方法:
返回值 | 方法 | 说明 |
String | getMessage() | 返回描述异常的消息 |
Void | printStackTrace() | 显示异常及其栈轨迹 |
page
代表页面本身,也就是Servlet中的this,其类型是生成Servlet类,能用page的地方就可以用this。
【总结】
上述就是JSP的九个内置对象,从自己的项目来说经常用到,区分每个对象的作用,对每个对象的方法做的一定的认知,不足的地方慢慢查漏补缺!
给自己个信念,坚信在学习这件事上,付出和收获一定成正比,为自己加油。