flush属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中;如果指定为false,则包含在原文件中。例:<jsp:include page="scriptlet.jsp"/>
静态导入和动态导入区别:
a.静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet; 而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
b.静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
除此之外,执行Include动态指令时,还可以增加额外的请求参数。
实际上,forward动作指令和include动作指令很相似,它们采用方法来引入目标页面,通过查看JSP页面所生成Servlet代码可以得出:forward指令使用_jspx_page_context的forward()方法来引入目标页面,而include指令则使用通过JspRuntimeLibrary的include()方法来引入目标页面。区别在于,执行forward时,被forward的页面将完全代替原有页面;而执行include时,被include的页面只是引入原有页面。简而言之:forward拿目标页面代替原有页面,而include则拿目标页面插入原有页面。
6.3.useBean,setProperty,getProperty指令
这3个指令都是与JavaBean相关的指令,其中useBean指令用于在JSP页面中初始化一个Java实例;setProperty指令用于为JavaBean实例的属性设置值;getProperty指令用于输出JavaBean实例属性。
useBean语法格式:<jsp:useBean scope="page|request|session|application" />
其中,id属性是JavaBean的实例名,class属性确定JavaBean的实现类。scope属性用于指定JavaBean实例的生存范围。
setProperty指令语法格式:<jsp:setProperty property="propertyName" value="value"/>
getProperty指令语法格式:<jsp:getProperty property="propertyName"/>
例:
<!-- 创建com.company.Person的实例,该实例的实例名位p1 --> <jsp:useBean scope="page"/> <!-- 设置p1的name属性值 --> <jsp:setProperty property="name" value="zhangsan"/> <jsp:setProperty property="age" value="25"/> <!-- 输出p1的name属性值--> <jsp:getProperty property/>
7.JSP脚本中的9个内置对象
application,config,exception,out,page,pageContext,request,response,session
application:javax.servlet.ServletContext的实例,该实例代表JSP所属的Web应用本身,可用于JSP页面,或者Servlet之间交换信息。常用方法:getAttribute,setAttribute,getInitParameter.
config:javax.servlet.ServletConfig的实例,该实例代表该JSP的配置信息。常用的方法有getInitParamter,getInitParameternames,事实上,JSP页面通常无需配置,也就不存在配置信息。因此,该对象更多地在Servlet中有效。
exception:Java.lang.Throwable的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的isErrorPage属性为true时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。
out:javax.servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。
page:代表页面本身,通常没有太大用处. 也就是Servlet中的this.
pageContext:javax.servlet.jsp.PageContext的实例,该对象代表该JSP页面上下文,使用该对象可以访问页面中的共享数据。常用方法有getServletContext()和getServletConfig()等。
request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求。客户端的请求参数都被封装在该对象里。是个常用对象,获取客户端请求参数必须使用该对象。常用方法有getParameter,getParameterValues,setAttribute,getAttribute,setCharacterEncoding.
response:javax.servlet.http.HttpServletResponse的实例,代表服务器端对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。而response对象常用于重定向,常用方法:getOutputStream(),sendRedirect.
session:javax.servlet.http.HttpSession的实例,该对象代表一次会话。常用方法:getAttribute,setAttribute.
8.JSTL JSP标准标签库
JSP的标签函数库主要分为五大类:
JSTL 前置名称 URI 范例 核心标签库 c
<c:out> I18N格式标签库 fmt
<fmt:formatDate> SQL标签库 sql
<sql:query> XML标签库 Xml
<x:forEach> 函数标签库 fn
<fn:split>
核心标签库
功能分类 标签名称 表达式操作