5.jsp的3个编译指令
page:针对当前页面的指令
include:指定包含另一个页面
taglib:定义和访问自定义标签
5.1 page指令(位于JSP 页面的顶端,一个 JSP 页面可使用多条 page 指令)
语法:<%@ 编译指令名 属性名="属性值"%> 例如下:
<%@ page language="java" %>
下面列出 page 所有属性:
language="java"// jsp 页面使用的脚本语言,默认值为java ,所以通常无须设置。
extends="package.class"// 实现接口。
import="package.class | package.*,..."// 导入包。
session="true | false"// 设定 jsp 页面是否需要 HTTP Session。
buffer="none | 8KB | size kb"// 缓冲区大小。默认为 8KB。
autoFlush="true | false"// 当缓冲区即将溢出时,是否强制输出缓冲区的内容。设置为 true 时正常输出; 为 false 时,则在 buffer 溢出时产生一个异常。
isThreadSafe="true | false"// 是否线程安全。
info="text"// jsp程序的说明信息,可通过 Servlet.getServletInfo() 方法取得 info 的值,如果是JSP页面,则可直接调用getServletInfo()。
errorPage="relativeURL"// 指定错误处理页面, 页面产生异常或错误时,则自动调用该属性所指定的 JSP 页面。
contentType="mimeType;charset=characterSet | text/html;charSet=ISO-8859-1"//
pageEncoding="ISO-8859-1"// 指定生成网页的编码字符集。
isErrorPage="true | false"// 设置当前 JSP 页面是否为错误处理程序。 如果该页面本身已是错误处理页面,则通常无须指定errorPage属性。
例如下:
<%@ page contnetType="text/html; charset=GBK" language="java" errorPage="" %>
<!-- 指定 info 信息 -->
<%@ page info="this is a jsp"%>
<!-- 输出 info 信息 -->
<%= getServletInfo() %>
5.2 include 指令(可将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句)
静态导入语法:<%@ include file="aaa.jsp"%>
动态导入语法:<jsp:include> 后边会讲到
注意:静态包含还会将被包含页面的编译指令也包含进来,如果两个页面的编译指令冲突,那么页面就会出错。
6.jsp 的 7 个动作指令
jsp:forward执行页面转向,将请求处理转发到下一个页面。
jsp:param传递参数,必须与其他支持参数的标签一起使用。
jsp:include动态引入一个JSP 页面。
jsp:plugin下载 JAVABean 或 Applet 到客户端执行。
jsp:useBean创建一个JavaBean的实例。
jsp:setProperty设置 JavaBean 实例的属性值。
jsp:getProperty输出 JavaBean 实例的属性值。
6.1 forward指令
<!--JSP1.0 时使用的语法-->
<jsp:forward page="aaa.jsp"/>
<!--JSP1.1以上规范,可使用的语法-->
<jsp:forward page="aaa.jsp">
<jsp:param name="age" value="23"/>
</jsp:forward>
转向到 aaa.jsp 页面, 此页面可接收传来的 param 参数(如下:)
<%= request.getParameter("age") %>
// 注意此转向后的地址栏不发生改变,不会显示aaa.jsp ,而是源来页面的地址,只是内容改变。
6.2 include 指令(动态include 指令 ,用于包含某个页面,它不会导入include 页面的编译指令,仅仅导入 body 内容插入本页面)
include 动作指令语法(如下:)
<jsp:include page="aaa.jsp" flush="true"/>
或者
<jsp:include page="aaa.jsp" flush="true">
<jsp:param name="parameterName" value="parameterValue"/>
</jsp:include>
6.3 useBean、setProperty、getProperty 指令(这三个指令都与JavaBean 相关)
<!-- 创建lee.Person的实例,该实例的实例名为p1 -->
<jsp:useBean id="p1" class="lee.Person" scope="page"/>
<!-- 设置p1的name属性值 -->
<jsp:setProperty name="p1" property="name" value="wawa"/>
<!-- 设置p1的age属性值 -->
<jsp:setProperty name="p1" property="age" value="23"/>
<!-- 输出p1的name属性值 -->
<jsp:getProperty name="p1" property="name"/><br/>
<!-- 输出p1的age属性值 -->
<jsp:getProperty name="p1" property="age"/>
注:也可以不使用以上三个标签来完成 JavaBean 的操作(如下:)
<%
Person p1 = new Person(); // 实例化 Person 对象
pageContext.setAttribute("p1",p1); //将 p1 放置到 page 范围
p1.setName("wawa");
p1.setAge(23);
%>
<!--输出p1属性-->
<%=p1.getName()%>
<%=p1.getAge()%>