Skip to content

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:指定页面是否用作错误处理页面。
javascript
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" session="true" errorPage="error.jsp" isErrorPage="true" %>

include 指令

include 指令用于在 JSP 页面中包含其他文件的内容。这对于在多个页面中重复使用相同的代码非常有用。

javascript
<%@ include file="filename" %>

file 属性指定要包含的文件的相对路径。被包含的文件可以是 JSP、HTML 或文本文件。

taglib 指令

taglib 指令用于引入自定义标签库,以便在 JSP 页面中使用自定义标签。

javascript
<%@ taglib uri="taglib-uri" prefix="taglib-prefix" %>
  • uri 属性指定标签库的唯一标识符。
  • prefix 属性指定用于调用标签库中标签的前缀。

comment 指令

comment 指令用于在 JSP 源文件中添加注释。这些注释不会被发送到客户端,只是用于代码的文档或说明。

javascript
<%@ comment %>
    <!-- 这是一个 JSP 注释 -->
<%@ end comment %>

comment 指令之间的内容将被视为注释,不会影响生成的 HTML。

引用 JSP 指令的值

有时,您可能需要在 JSP 页面中引用页面指令的属性值。可以使用 EL 表达式或脚本let来引用这些值。

以下是一个示例,展示如何引用页面指令的属性:

html
<%@ 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则不能