JSP-九大内置对象相关解释

JSP的九大内置对象

JSP中有九个内置对象,我们在JSP页面中编写Java脚本语言时可以直接用这些内置对象。

我们已经明确知道了JSP的实质还是一个Servlet,至于它的编写是自动生成的,我们查看它的java文件可以发现_jspService方法中有六个已经定义好的变量和两个方法中的形参。

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {
     	//...
	final javax.servlet.jsp.PageContext pageContext;
	javax.servlet.http.HttpSession session = null;
	final javax.servlet.ServletContext application;
	final javax.servlet.ServletConfig config;
	javax.servlet.jsp.JspWriter out = null;
	final java.lang.Object page = this;

	//...
	
	try{
		session = pageContext.getSession();
     		out = pageContext.getOut();
     		//...

我们也明确的知道我们编写的JSP中的脚本语言最终会被存放到jspService方法中,所以我们可以直接使用这些内置的对象

  • pageContext:页面上下文
  • request:请求对象
  • response:响应对象
  • session:一次会话
  • application(ServletContext):代表这个Web应用的上下文
  • config(ServletConfig):Servlet的配置对象
  • out:页面输出的对象
  • page:就是本类的对象,代表当前这个页面
  • exception:异常对象,这个对象只有当JSP声明为错误页面时才能直接使用

pageContext

方法 作用
public HttpSession getSession(); 获取该页面的本次会话Session对象(session)
public Object getPage(); 返回当前页面的对象值(page)
public ServletRequest getRequest(); 获取该页面的Request对象(request)
public ServletResponse getResponse(); 获取该页面的相应对象(response)
public Exception getException(); 获取该页面的错误异常对象(exception)
public ServletContext getServletContext(); 获取该web应用的实例化对象(application)
public ServletConfig getServletConfig(); 获取配置对象(config)
public void forward(String relativeUrlPath) throws ServletException, IOException; 用于请求转发到指定路径

request和response

可以参考博主的另一篇文章,request和response

Session

可以参考博主的另一篇文章,session

application(ServletContext)

可以参考博主的另一篇文章,ServletContext

config(ServletConfig)

方法 作用
public String getServletName(); 返回此servlet实例的名称。 名称可以通过服务器管理来提供,可以在 Web应用程序部署描述符中分配,或者对于未注册(因此未命名)的Servlet实例,它将是Servlet的类名
public ServletContext getServletContext(); 返回该web应用的ServletContext对象
public String getInitParameter(String name); 返回包含命名初始化参数值的String,如果该参数不存在,则返回 null
public Enumeration getInitParameterNames(); 返回servlet的初始化参数的名称作为String 对象的 Enumeration,或如果servlet没有没有初始化参数,则返回一个空的Enumeration

out

该对象是javax.servlet.jsp.JspWriter,它继承了java.io.Writer,它是向客户端页面输出数据的一个类。

方法 作用
public void newLine() throws IOException; 页面换行
public void print(var b) throws IOException; 向页面输出指定的数据,这里的数据类型可以是boolean,char,int,long,float,double,char[],String,Object
public void println() throws IOException; 换行,和public void newLine() throws IOException;效果一致
public void println(var x) throws IOException; 和public void print(var b) throws IOException;效果一致,唯一不同的是,该方法输出后会自动换行
public void clear() throws IOException; 清除缓冲区的内容。如果已经清除了缓冲区,则清除操作将抛出IOException 来表示某些数据已经不可撤销地写入客户端响应流的事实
public void clearBuffer() throws IOException; 清除缓冲区的当前内容。与clear()不同,如果缓冲区已经被刷新,则此方法不会引发IOException。它仅清除缓冲区的当前内容并返回。
public void flush() throws IOException; 刷新流。如果流已将各种write()方法中的任何字符保存在缓冲区中,请立即将它们写入其预期的目标。然后,如果该目标是另一个字符或*字节流,则将其刷新。因此,一次flush()调用将刷新Writer和OutputStreams链中的所有缓冲区。
public int getBufferSize(); 此方法返回JspWriter使用的缓冲区的大小。
public int getRemaining(); 此方法返回缓冲区中未使用的字节数。
public boolean isAutoFlush() 此方法返回值表示JspWriter是否正在自动刷新。

page

page就表示本类的对象,可以用于调用本类中存在的方法或者成员。

exception

只有当JSP页面被声明为错误页面时<%@ page isErrorPage="true" %>,才能直接使用该异常对象,我们还是直接看一个声明错误JSP页面的java代码,发现其中与未声明为错误页面的JSP的java文件的主要区别就是多了:

java.lang.Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
if (exception != null) {
      response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}

一般来说,这个是用于自定义错误页面时使用,该对象用于记录错误信息,然后在页面中以友好的形式提示客户端出现错误。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章