JSP技术(二)

JSP隐式对象

public void _jspService(HttpServletRequest request,

HttpServletResponseresponse)

throwsjava.io.IOException, ServletException

{

JspFactory_jspxFactory = null;

PageContextpageContext = null;

HttpSession session = null;

ServletContextapplication = null;

ServletConfigconfig = null;

JspWriterout=null;

Objectpage = this;

...

...

Throwable exception =

org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);

if(exception != null) {

response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

}

九大隐式对象

requestresponse pageContext sessionapplication config outpage exception

out隐式对象

lout隐式对象用于向客户端发送文本数据。

lout对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。

lJSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。

l只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:

ü设置page指令的buffer属性关闭了out对象的缓存功能

üout对象的缓冲区已满

ü整个JSP页面结束

out隐式对象工作原理

JSP技术(二)_第1张图片

JSP指令

lJSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP2.0规范中共定义了三个指令:

•page指令

•Include指令

•taglib指令

JSP指令简介

lJSP指令的基本语法格式:

<%@指令 属性名="值" %>

举例:<%@ pagecontentType="text/html;charset=gb2312"%>

l如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。

例如:

<%@page contentType="text/html;charset=gb2312"%>

<%@page import="java.util.Date"%>

也可以写作:

<%@page contentType="text/html;charset=gb2312"import="java.util.Date"%>

Page指令

lpage指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置。

lJSP 2.0规范中定义的page指令的完整语法:

<%@ page

[language="java" ]

[extends="package.class" ]

[import="{package.class | package.*},..." ]

[session="true | false" ]

[buffer="none | 8kb | sizekb" ]

[autoFlush="true | false" ]

[isThreadSafe="true | false" ]

[info="text" ]

[errorPage="relative_url" ]

[isErrorPage="true | false" ]

[contentType="mimeType [ ;charset=characterSet ]"| "text/html ; charset=ISO-8859-1" ]

[pageEncoding="characterSet | ISO-8859-1" ]

[isELIgnored="true | false" ]

%>

include指令

linclude指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。

l语法:

<%@include file="relativeURL"%>

其中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代表当前web应用。

l细节:

ü被引入的文件必须遵循JSP语法。

ü被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。

ü由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。

你可能感兴趣的:(jsp)