Jsp技术入门指南【五】详细讲解jsp结构页面

发布于:2025-04-19 ⋅ 阅读:(21) ⋅ 点赞:(0)


前言

  • 在之前的博客里,我们讲了JSP的环境构建以及如何找JSP的编译文件、JSP的生命周期等。
  • 接下来,我们将深入剖析JSP页面的核心结构,揭秘动态页面开发的底层逻辑。
  • 掌握JSP页面结构是高效开发动态Web应用的关键,本文将从基础部件到核心指令逐步解析,助你夯实JSP开发基础

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482


一、JSP页面的结构

JSP页面是静态HTML内容与动态Java代码的混合体,其核心结构可分为三部分:

  1. 静态模板:包含HTML/CSS/JS等前端代码,定义页面布局和展示样式。
  2. 动态内容:通过JSP元素(指令、动作、脚本)嵌入Java逻辑,实现数据交互和页面动态渲染。
  3. 元信息:通过指令声明页面属性(如编码、导入包、错误处理等),控制JSP运行行为。

一个典型的JSP页面示例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP结构示例</title>
</head>
<body>
    <h1>静态标题</h1>
    <%-- 动态脚本:输出当前时间 --%>
    <p>当前时间:<%= new java.util.Date() %></p>
    <%-- 包含其他页面 --%>
    <%@ include file="footer.jsp" %>
</body>
</html>

二、JSP页面的部件

JSP页面通过三大核心部件实现动态功能,分别是指令动作脚本

1. 指令(核心控制部件)

  • 作用:定义JSP页面的全局属性、导入依赖、控制编译行为等。
  • 语法:以<%@ 指令名 属性=值 %>形式声明,贯穿页面全局。

2. 动作(页面交互部件,了解即可)

  • 作用:以XML标签形式实现页面跳转、组件调用、数据传递等功能,简化动态逻辑编写。
  • 常见类型
    • <jsp:include>:动态包含其他页面(运行时合并)。
    • <jsp:forward>:转发请求到其他资源。
    • <jsp:useBean>:实例化JavaBean组件。

3. 脚本(Java逻辑嵌入部件)

  • 作用:在HTML中直接嵌入Java代码,实现数据处理、逻辑控制等功能。
  • 三种形式
    1. 脚本段(Scriptlet)<% 代码逻辑 %>,用于编写多行Java代码。
      <% 
          int count = 0;
          for (int i = 0; i < 5; i++) {
              count += i;
          }
      %>
      
    2. 表达式(Expression)<%= 表达式 %>,直接输出数据到页面。
      <p>计算结果:<%= count %></p> <!-- 输出脚本段中的count值 -->
      
    3. 声明(Declaration)<%! 声明代码 %>,定义类成员(变量、方法)。
      <%! 
          // 声明全局方法
          public String getMessage() {
              return "Hello, JSP!";
          }
      %>
      <p><%= getMessage() %></p> <!-- 调用声明的方法 -->
      

三、JSP指令详解

JSP指令分为三大类:page(页面配置)、include(静态包含)、taglib(标签库,后续专题讲解),其中前两者是开发中最常用的核心指令。

1.1 JSP指令的标记是什么?

所有JSP指令均以<%@ %>作为标记,不同指令通过名称区分功能。

1.2 page指令:页面级配置核心

page指令的属性及作用

属性名 说明 示例
language 指定脚本语言(默认java,目前仅支持Java)。 <%@ page language="java" %>
extends 指定JSP生成的Servlet的父类(极少使用,默认由Tomcat自动生成)。 <%@ page extends="org.example.CustomServlet" %>
import 导入Java包(可多次声明,支持通配符)。 <%@ page import="java.util.Date, java.util.List" %>
<%@ page import="java.util.*" %>
session 是否启用HTTP会话(默认true,设为false可禁用Session)。 <%@ page session="false" %>
buffer 输出缓冲区大小(默认8kb,设为none禁用缓冲区)。 <%@ page buffer="16kb" %>
autoflush 缓冲区满时是否自动刷新(默认truebuffer="none"时必须为true)。 <%@ page autoflush="false" %>
isThreadSafe 是否支持多线程(默认true,设为false强制单线程处理请求)。 <%@ page isThreadSafe="false" %>
errorPage 指定错误处理页面(相对路径,捕获异常时跳转)。 <%@ page errorPage="/error.jsp" %>
isErrorPage 声明当前页面为错误处理页面(可使用exception内置对象)。 <%@ page isErrorPage="true" %>
contentType 设置响应内容类型和编码(核心属性,必须声明)。 <%@ page contentType="text/html;charset=UTF-8" %>

代码示例:复杂page指令配置

<%@ page 
    contentType="text/html;charset=UTF-8" 
    language="java" 
    import="java.util.*, org.example.dao.*" 
    session="true" 
    buffer="32kb" 
    autoflush="true" 
    errorPage="/common/error.jsp"
%>

1.3 include指令:静态页面包含

指令的作用

  • 静态包含:在JSP编译阶段将目标文件内容直接合并到当前页面,生成一个统一的Servlet类。
  • 适用场景:包含固定不变的静态资源(如页眉、页脚、公共样式)。

语法与示例

<%@ include file="相对路径" %> <!-- 注意:路径不带上下文根,如"footer.jsp" -->
案例:包含页脚文件

当前页面index.jsp

<html>
<body>
    <!-- 主体内容 -->
    <%@ include file="footer.jsp" %> <!-- 静态包含页脚 -->
</body>
</html>

被包含的footer.jsp

<footer>
    <p>版权所有 © 2025</p>
</footer>

静态包含 vs 动态包含(jsp:include动作)

特性 静态包含(include指令) 动态包含(jsp:include动作)
合并时机 编译阶段合并代码 运行阶段合并响应内容
参数传递 不支持 支持通过<jsp:param>传递参数
独立性 被包含文件与主文件耦合度高 被包含文件可独立运行
适用场景 静态资源(HTML/CSS/固定片段) 动态内容(如根据参数加载不同数据)

以上就是这篇博客的全部内容,下一篇我们将继续探索JSP的更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的JSP知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12950980.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到