JSP(JavaServer Pages)的语法允许开发者在HTML中嵌入Java代码,以生成动态Web内容。本文将详细介绍JSP的主要语法元素及其用法。


目录

  1. JSP 语法概述
  2. 脚本元素
  3. 指令元素
  4. 动作标签
  5. 隐式对象
  6. 完整示例
  7. 参考资料

1. JSP 语法概述

  • 基础:JSP页面是HTML与Java代码的混合,扩展名为 .jsp
  • 执行:由Servlet容器翻译为Servlet后运行。
  • 分类
  • 脚本元素:执行Java逻辑。
  • 指令:控制页面属性。
  • 动作标签:执行特定操作。
  • 隐式对象:内置可用对象。

2. 脚本元素

脚本片段 (<% %>)

  • 用途:嵌入Java代码。
  • 示例
  <% 
      int count = 5;
      for (int i = 0; i < count; i++) {
          out.println("第 " + i + " 次<br>");
      }
  %>

表达式 (<%= %>)

  • 用途:输出变量或表达式结果。
  • 示例
  <p>当前时间: <%= new java.util.Date() %></p>
  • 注意:无需分号,直接输出。

声明 (<%! %>)

  • 用途:定义全局变量或方法。
  • 示例
  <%! 
      int globalCount = 0;
      String getMessage() {
          return "Hello from JSP!";
      }
  %>
  <p><%= getMessage() %></p>

3. 指令元素

页面指令 (<%@ page %>)

  • 用途:设置页面属性。
  • 属性
  • contentType:MIME类型。
  • language:脚本语言(默认java)。
  • import:导入包。
  • 示例
  <%@ page contentType="text/html;charset=UTF-8" import="java.util.Date" %>

包含指令 (<%@ include %>)

  • 用途:静态包含其他文件。
  • 示例
  <%@ include file="header.jsp" %>

Taglib 指令 (<%@ taglib %>)

  • 用途:引入自定义标签库(如JSTL)。
  • 示例
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

4. 动作标签

<jsp:include>

  • 用途:动态包含页面。
  • 示例
  <jsp:include page="footer.jsp"/>

<jsp:forward>

  • 用途:转发到另一页面。
  • 示例
  <jsp:forward page="error.jsp"/>

<jsp:useBean> / <jsp:setProperty> / <jsp:getProperty>

  • 用途:操作JavaBean。
  • 示例
  <jsp:useBean id="user" class="com.example.User" scope="session"/>
  <jsp:setProperty name="user" property="name" value="Alice"/>
  <p>姓名: <jsp:getProperty name="user" property="name"/></p>

5. 隐式对象

  • requestHttpServletRequest,获取请求参数。
  • responseHttpServletResponse,设置响应。
  • outJspWriter,输出内容。
  • sessionHttpSession,会话管理。
  • applicationServletContext,应用范围数据。
  • configServletConfig,Servlet配置。
  • pageContext:页面上下文。
  • page:当前JSP实例(this)。
  • exception:异常对象(需 isErrorPage="true")。

示例

<p>客户端IP: <%= request.getRemoteAddr() %></p>
<p>Session ID: <%= session.getId() %></p>

6. 完整示例

以下是一个展示JSP语法的页面。

JSP 文件:syntax.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.Date" %>
<html>
<head>
    <title>JSP 语法示例</title>
</head>
<body>
    <h1>JSP 语法演示</h1>

    <%-- 声明全局变量 --%>
    <%! int visitCount = 0; %>

    <%-- 脚本片段 --%>
    <% 
        visitCount++;
        String user = request.getParameter("user");
        if (user == null) user = "Guest";
    %>

    <%-- 表达式 --%>
    <p>欢迎, <%= user %>!</p>
    <p>您是第 <%= visitCount %> 次访问。</p>
    <p>当前时间: <%= new Date() %></p>

    <%-- 动态包含 --%>
    <jsp:include page="footer.jsp"/>

    <%-- 表单 --%>
    <form method="get" action="syntax.jsp">
        用户名: <input type="text" name="user">
        <input type="submit" value="提交">
    </form>
</body>
</html>

JSP 文件:footer.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<hr>
<p>© 2025 JSP 示例</p>

7. 参考资料

出站链接

其他资源

  • 《Head First Servlets and JSP》 – 语法章节。
  • X社区:搜索 #JSPSyntax 获取示例。

这篇指南详细介绍了JSP的语法元素。如果需要更深入内容(如EL表达式、JSTL或错误处理),请告诉我!