Jsp技术入门指南【五】详细讲解jsp结构页面
Jsp技术入门指南【五】详细讲解jsp结构页面
- 前言
- 一、JSP页面的结构
- 二、JSP页面的部件
- 1. 指令(核心控制部件)
- 2. 动作(页面交互部件,了解即可)
- 3. 脚本(Java逻辑嵌入部件)
- 三、JSP指令详解
- 1.1 JSP指令的标记是什么?
- 1.2 page指令:页面级配置核心
- page指令的属性及作用
- 代码示例:复杂page指令配置
- 1.3 include指令:静态页面包含
- 指令的作用
- 语法与示例
- 案例:包含页脚文件
- 静态包含 vs 动态包含(<jsp:include>动作)
前言
- 在之前的博客里,我们讲了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代码的混合体,其核心结构可分为三部分:
- 静态模板:包含HTML/CSS/JS等前端代码,定义页面布局和展示样式。
- 动态内容:通过JSP元素(指令、动作、脚本)嵌入Java逻辑,实现数据交互和页面动态渲染。
- 元信息:通过指令声明页面属性(如编码、导入包、错误处理等),控制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代码,实现数据处理、逻辑控制等功能。
- 三种形式:
- 脚本段(Scriptlet):
<% 代码逻辑 %>
,用于编写多行Java代码。<% int count = 0;for (int i = 0; i < 5; i++) {count += i;} %>
- 表达式(Expression):
<%= 表达式 %>
,直接输出数据到页面。<p>计算结果:<%= count %></p> <!-- 输出脚本段中的count值 -->
- 声明(Declaration):
<%! 声明代码 %>
,定义类成员(变量、方法)。<%! // 声明全局方法public String getMessage() {return "Hello, JSP!";} %> <p><%= getMessage() %></p> <!-- 调用声明的方法 -->
- 脚本段(Scriptlet):
三、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 | 缓冲区满时是否自动刷新(默认true ,buffer="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
非常感谢您的阅读,喜欢的话记得三连哦 |