JSP指令
JSP 指令的种类
JSP 指令可以分为以下几种类型:
- 页面指令(Page Directive):用于设置页面级属性,如语言、错误页面和缓冲区大小。
- 包含指令(Include Directive):用于包含其他文件的内容。
- 标签库指令(Taglib Directive):用于引入自定义标签库。
- 注释指令(Comment Directive):用于在 JSP 源文件中添加注释。
页面指令
页面指令用于设置页面级属性。它们位于 JSP 页面的顶部,并以 <%@ 开头,以 %> 结尾。以下是一些常用的页面指令:
page 指令
page 指令用于设置页面的各种属性。以下是一些常用的属性:
- language:指定在 JSP 页面中使用的编程语言,通常为 “java”。
- contentType:设置响应的内容类型和字符编码。例如,contentType="text/html; charset=UTF-8"。
- import:导入 Java 类。您可以使用多个 import 指令。
- session:指定是否使用会话。可以设置为 “true” 或 “false”。
- errorPage:指定在页面发生错误时将请求重定向到的页面。
- isErrorPage:指定页面是否用作错误处理页面。
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" session="true" errorPage="error.jsp" isErrorPage="true" %>include 指令
include 指令用于在 JSP 页面中包含其他文件的内容。这对于在多个页面中重复使用相同的代码非常有用。
<%@ include file="filename" %>file 属性指定要包含的文件的相对路径。被包含的文件可以是 JSP、HTML 或文本文件。
taglib 指令
taglib 指令用于引入自定义标签库,以便在 JSP 页面中使用自定义标签。
<%@ taglib uri="taglib-uri" prefix="taglib-prefix" %>- uri 属性指定标签库的唯一标识符。
- prefix 属性指定用于调用标签库中标签的前缀。
comment 指令
comment 指令用于在 JSP 源文件中添加注释。这些注释不会被发送到客户端,只是用于代码的文档或说明。
<%@ comment %>
<!-- 这是一个 JSP 注释 -->
<%@ end comment %>comment 指令之间的内容将被视为注释,不会影响生成的 HTML。
引用 JSP 指令的值
有时,您可能需要在 JSP 页面中引用页面指令的属性值。可以使用 EL 表达式或脚本let来引用这些值。
以下是一个示例,展示如何引用页面指令的属性:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<%@ page session="true" %>
<%@ page errorPage="error.jsp" %>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="<%= pageContext.findAttribute("pageCharset") %>">
</head>
<body>
<%= new Date() %>
</body>
</html>在这个示例中,我们使用 <%= pageContext.findAttribute("pageCharset") %> 引用了 contentType 属性的值。
动作标签
语法: <jsp:action_name attribute1="value1" attribute2="value2".../> jsp页面在运行期间的命令
forward 动作
语法: <jsp:forward page="url"/> 将请求转发到其他页面
include 动作
语法: <jsp:include page="url"/> 将其他页面的输出结果引入到当前页面
useBean 动作
语法: <jsp:useBean id="name" class="class"/> 在类加载后,可以通过jsp:setProperty,jsp:getProperty动作修改获取类的属性值
setProperty
语法: <jsp:setProperty name="name" property="property" value="value"/>
getProperty
语法: <jsp:getProperty name="name" property="property"/>
param 动作
语法: <jsp:param name="name" value="value"/> 参数传递,在转发动作内部使用
useBean和import有什么区别?
import 只是帮你在这个页面中声明对一个类的引入,并没有使用这个类
useBean 则是声明了一个对象,并实例化了这个对象,并把这个对象放入到作用域中,可以通过jsp:setProperty,jsp:getProperty动作修改获取类的属性值
@include和jsp:include有什么区别?
jsp:include 是在请求阶段向被包含的页面发起了一个请求,页面响应的内容被包含到了当前页面。
@include 是直接将被包含文件的内容替换到了当前页面,如果当前页面和被包含页面出现相同的变量定义,会出现编译异常
jsp:include 转译成两个java文件,@include转译成一个java文件
jsp:include 可以通过jps:parm传递参数,@include则不能