目录

  1. JSP 页面结构概述
  2. JSP 主要组件
  3. JSP 页面执行流程
  4. 完整 JSP 示例
  5. 参考资料

1. JSP 页面结构概述

JSP(JavaServer Pages)是基于 Java 的服务器端技术,允许在 HTML 中嵌入 Java 代码,实现动态网页内容。JSP 页面主要由 静态内容(HTML、CSS、JavaScript)动态内容(Java 代码) 组成。

JSP 文件通常以 .jsp 作为扩展名,并由 Web 服务器(如 Tomcat)解析并转换为 Servlet 进行执行。

JSP 页面结构示例

<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>JSP 结构示例</title>
</head>
<body>
    <h1>欢迎访问 JSP 页面</h1>

    <%-- 脚本片段 --%>
    <% int count = 10; %>
    
    <%-- 表达式 --%>
    <p>访问次数: <%= count %></p>

    <%-- 动作标签 --%>
    <jsp:include page="footer.jsp"/>

</body>
</html>


2. JSP 主要组件

指令(Directives)

指令用于定义 JSP 页面属性,例如编码、导入类、错误处理等。

常见指令

指令类型语法说明
页面指令 (<%@ page %>)<%@ page contentType="text/html;charset=UTF-8" %>定义 JSP 页面属性
导入指令 (<%@ page import %>)<%@ page import="java.util.*" %>导入 Java 包
包含指令 (<%@ include %>)<%@ include file="header.jsp" %>静态包含另一个 JSP 文件

示例

<%@ page language="java" contentType="text/html;charset=UTF-8" import="java.util.Date" %>
<p>当前时间: <%= new Date() %></p>


脚本元素(Scripting Elements)

JSP 支持 Java 代码嵌入,提供 三种脚本元素

1. 脚本片段 (<% %>)

用于在 JSP 页面内嵌入 Java 代码。

<%
    int count = 10;
    System.out.println("JSP 脚本片段执行");
%>

2. 表达式 (<%= %>)

用于在页面输出 Java 变量或方法返回值。

<p>访问次数: <%= count %></p>

3. 声明 (<%! %>)

用于定义类级别的变量和方法。

<%! int globalCount = 0; %>
<%! public int getCount() { return globalCount++; } %>
<p>全局访问次数: <%= getCount() %></p>


动作标签(Action Tags)

动作标签用于在 JSP 页面中执行某些操作,例如页面跳转、包含、参数传递等。

常见动作标签

动作标签语法说明
<jsp:include><jsp:include page="header.jsp"/>动态包含 JSP 页面
<jsp:forward><jsp:forward page="next.jsp"/>页面跳转
<jsp:param><jsp:forward page="next.jsp"><jsp:param name="user" value="Tom"/></jsp:forward>传递参数
<jsp:useBean><jsp:useBean id="user" class="com.example.User"/>创建 JavaBean

示例

<jsp:include page="header.jsp"/>
<p>欢迎访问我的 JSP 页面</p>
<jsp:forward page="next.jsp"/>


注释(Comments)

JSP 支持 HTML 和 JSP 两种注释方式。

1. HTML 注释(会被客户端浏览器解析)

<!-- 这是 HTML 注释,客户端可以看到 -->

2. JSP 注释(仅在服务器端可见,客户端不可见)

<%-- 这是 JSP 注释,浏览器无法看到 --%>


隐式对象(Implicit Objects)

JSP 提供 9 个隐式对象,可直接在页面中使用。

隐式对象类型说明
requestHttpServletRequest获取请求信息
responseHttpServletResponse生成响应
sessionHttpSession维护会话状态
applicationServletContext访问应用范围信息
outJspWriter输出内容到页面
configServletConfig访问 Servlet 配置信息
pageContextPageContext获取 JSP 相关信息
pageObject当前 JSP 页面对象
exceptionThrowable处理异常(仅适用于错误页面)

示例

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


3. JSP 页面执行流程

JSP 页面在服务器端执行的基本流程如下:

  1. JSP 解析:Web 服务器解析 .jsp 文件并转换为 Java 代码(Servlet)。
  2. 编译:Java 代码编译为 .class 字节码文件。
  3. 加载与初始化:容器加载 JSP 并执行 jspInit() 方法。
  4. 请求处理:对每个 HTTP 请求执行 _jspService() 方法。
  5. 销毁:JSP 页面生命周期结束,调用 jspDestroy() 释放资源。

4. 完整 JSP 示例

<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title>JSP 结构示例</title>
</head>
<body>
    <h1>JSP 结构示例</h1>

    <%-- 使用 Java 代码 --%>
    <% int visits = 5; %>

    <%-- 输出变量值 --%>
    <p>访问次数: <%= visits %></p>

    <%-- 包含文件 --%>
    <jsp:include page="footer.jsp"/>

</body>
</html>


5. 参考资料

出站链接

其他资源

  • 《Head First Servlets and JSP》——JSP/Servlet 经典书籍
  • JSP 教程合集

这篇文章详细介绍了 JSP 结构,如果你需要深入学习 JSTL、EL 表达式,欢迎继续探索!🚀