JSP指令(page include taglib)
JSP指令指示JSP转换器如何翻译JSP页面到Servlet;JSP指令用来设置整个JSP页面相关的属性,如网页编码方式、脚本语言等
JSP指令的格式:
<%@ directive attribute="value" attribute="value" attribute="value" %> 属性以键值对的形式存在,多个属性用空格分割
常用的三个指令:
<%@ page ... %> page指令控制JSP转换器转换当前JSP页面的某些方面 <%@ include ... %> include指令将其他文件中的内容包含到当前的JSP页面 <%@ taglib ... %> taglib指令用于引入标签库并设置标签库的前缀
page指令
大部分page指令可以出现在页面的任何位置,但当page指令包含contentType或pageEncoding属性时,其必须出现在Java代码发送任何内容之前。这是因为内容类型和字符编码必须在发送任何内容前设定。
page指令可以出现多次,但多次出现的指令属性必须具有相同的属性值,不过import属性例外,多个import属性的属性值效果是累加的。
<%@ page language="Java" %> 定义当前页面的脚本语言类型,JSP2.2中只有一个唯一合法值“Java”。 <%@ page import="..." %> 定义一个或多个当前页面中将被导入和使用的java类型。取值范围为任何包名、类名 <%@ page session="..." %> 定义当前页面是否启用会话管理,True为启用,False为不启用;默认是True。取值范围为True、False <%@ page buffer="..." %> 定义隐式对象out的缓冲大小,必须以KB后缀结尾。默认是8KB或更大(取决于JSP容器)。该值可以为none,表还没有缓冲,所有数据将直接写入PrintWriter。取值范围为数字KB、none <%@ page autoFlush="..." %> 定义输出缓冲满时是否自动写入输出流,True为自动,False为不自动,需要调用隐式对象out的flush()方法,若缓冲溢出会抛出异常。取值范围为True、False <%@ page isThreadSafe="..." %> 定义当前页面是否线程安全,不推荐使用,因为使用该参数后会生成一些Servlet容器已过期的代码。取值范围为True、False <%@ page info="..." %> 指明JSP信息,该信息可通过调用容器生成的Servlet类的getServletInfo()方法获取。取值范围为任意字符串 <%@ page errorPage="..." %> 指明一个错误页面,当JSP程序抛出一个未捕获的异常时则跳转到该错误页面。取值范围为某个JSP的相对路径 <%@ page isErrorPage="..." %> 标识当前页面是一个错误处理页面。取值范围为True、False <%@ page contentType="..." %> 定义当前页面隐式对象reponse的内容类型,默认为“text/html”。取值范围为任意有效的文档类型 <%@ page pageEncoding="..." %> 定义当前页面的字符编码,默认为“ISO-8895-1”。 <%@ page isELignored="..." %> 定义是否忽略EL表达式。默认是False。取值范围为True、False <%@ page extends="..." %> 定义JSP实现类要继承的父类,默认为“HttpJspBase”。 <%@ page deferredSyntaxAllowedAsLiteral="..." %> 定义是否解析字符串中出现的“#{”字符(该字符是EL的起始字符),默认为False。取值范围为True、False <%@ page trimDirectiveWhitespaces="..." %> 定义是否去除指令前后的空白字符,默认为False。取值范围为True、False
一个例子
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
include指令
将其它文件中的内容包含到当前JSP页面中。一个JSP页面可以包含多个include指令。其语法如下:
<%@ include file="url"%>
url可以是被包含文件的相对路径,也可以被包含文件在服务器上的绝对路径(以“/”开头)
JSP容器处理include指令时,会将include指令替换为所包含文件的内容。(跟C语言中的宏替换类似)
注意,最好指明被包含文件的编码,否则可能会出现中文乱码
一个例子:
<!-- 文件名为:123.jsp --> <%@ page pageEncoding="utf-8"%>
<hr /> 被包含文件的内容 <hr /> <!-- 使用include指令 --> <html> <head> </head> <body> <%@ include file="123.jsp"%> 这是一个例子 <%@ include file="123.jsp"%> </body> </html> <!-- 效果 --> <html> <head> </head> <body> <hr /> 被包含文件的内容 <hr /> 这是一个例子 <hr /> 被包含文件的内容 <hr /> </body> </html>
taglib指令
用于指明JSP页面内使用的JSP标签库,
taglib只有两个属性:
uri属性用来指定标签文件或标签库的存放位置,
prefix属性用来指定该标签使用的前缀
在JSP页面中使用JSTL库,必须通过以下格式使用taglib指令
<%@ taglib uri="tttp://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="tttp://java.sun.com/jsp/jstl/xml" prefix="x" %> <%@ taglib uri="tttp://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="tttp://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="tttp://java.sun.com/jsp/jstl/functions" prefix="fn" %>