静态页面 和 动态页面(Java Web开发)

news2024/12/26 21:08:30

1. 静态页面

1.1 什么是静态页面?

  • 静态页面是指 HTML 文件直接存放在服务器上,不依赖后端逻辑处理而生成内容
  • 客户端浏览器请求静态页面时,服务器直接将文件发送到客户端,浏览器负责渲染页面。

特点:

  • 固定内容:页面内容不随用户或请求动态改变。
  • 无需后端处理:页面资源直接通过文件路径加载,Spring Boot 不需要进行映射。
  • 快速响应:由于不需要后端参与逻辑处理,响应速度更快。
  • 适用于简单页面:如关于页面、公司简介、帮助文档等。

1.2 Spring Boot 中的静态页面处理

默认静态资源目录

Spring Boot 默认会从以下目录加载静态资源:

  • src/main/resources/static

  • src/main/resources/public

这些目录中的文件可以直接通过浏览器访问。

目录示例

src/main/resources/static
├── index.html
├── about.html
├── css/
│   └── styles.css
├── js/
│   └── scripts.js
└── images/
    └── logo.png

访问方式

浏览器访问 URL 时,URL 路径直接映射到 static 目录中的文件。

如果 about.html 位于 static 目录中,则可以通过以下方式访问:

http://localhost:8080/about.html

静态 HTML 示例

文件路径:src/main/resources/static/about.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>About Us</title>
    <!-- 引入 CSS 文件 -->
    <link rel="stylesheet" href="/css/styles.css">
</head>
<body>
    <h1>Welcome to Our Company</h1>
    <p>This is the about page.</p>
    <!-- 引入 JS 文件 -->
    <script src="/js/scripts.js"></script>
</body>
</html>

1.3 静态页面中的 CSS 和 JS 文件

CSS 引用

  • CSS 文件可以存放在 static/css 目录中。
  • 通过 <link> 标签引用:
    <link rel="stylesheet" href="/css/styles.css">
    

JavaScript 引用

  • JS 文件可以存放在 static/js 目录中。
  • 通过 <script> 标签引用:
    <script src="/js/scripts.js"></script>
    

2. 动态页面

2.1 什么是动态页面?

  • 动态页面是由 后端逻辑根据用户请求动态生成的 HTML 页面
  • 页面内容可以根据用户、时间、系统状态等进行动态变化。

特点:

  • 内容动态生成:后端根据业务逻辑提供数据,结合模板生成 HTML。
  • 需要后端参与:通过 Controller 接收请求,调用业务逻辑,返回生成的页面。
  • 依赖模板引擎:如 Thymeleaf、FreeMarker 等,用于将数据填充到 HTML 模板中。
  • 适用于复杂业务场景:如用户个人主页、购物车页面、动态报表等。

2.2 Spring Boot 中的动态页面处理

默认模板目录

Spring Boot 默认将模板文件存放在 src/main/resources/templates 目录中。

目录示例

src/main/resources/templates
├── index.html
├── user/
│   └── profile.html

Controller 映射逻辑

动态页面通过 Spring MVC 的 Controller 处理请求,并返回模板名称。

Controller 示例代码:

@Controller
public class PageController {

    // 主页映射
    @GetMapping("/")
    public String homePage(Model model) {
        model.addAttribute("title", "Welcome to My Website");
        return "index"; // 渲染 templates/index.html
    }

    // 用户信息页映射
    @GetMapping("/user/profile")
    public String userProfile(Model model) {
        model.addAttribute("username", "John Doe");
        model.addAttribute("email", "john.doe@example.com");
        return "user/profile"; // 渲染 templates/user/profile.html
    }
}

动态模板文件示例

模板文件:src/main/resources/templates/index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title th:text="${title}">Default Title</title>
</head>
<body>
    <h1 th:text="${title}">Welcome Page</h1>
    <p>This is the homepage.</p>
</body>
</html>

模板文件:src/main/resources/templates/user/profile.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>User Profile</title>
</head>
<body>
    <h1>User Profile</h1>
    <p>Username: <span th:text="${username}"></span></p>
    <p>Email: <span th:text="${email}"></span></p>
</body>
</html>

访问流程

  1. 用户访问 http://localhost:8080/,请求被映射到 PageController 的 homePage() 方法。

  2. 方法返回模板名称 index

  3. Spring 使用模板引擎渲染 index.html,将数据填充到页面中。

  4. 最终生成的 HTML 页面发送到浏览器。


2.3 动态页面中的 CSS 和 JS 文件

Thymeleaf 的动态路径解析

  • th:href:用于动态解析 CSS 文件路径。
  • th:src:用于动态解析 JS 文件路径。
  • 这些路径可以根据项目上下文或环境动态调整。

示例:动态加载静态资源

<link rel="stylesheet" th:href="@{/css/styles.css}">
<script th:src="@{/js/scripts.js}"></script>

3. 静态页面与动态页面的对比

特性静态页面动态页面
存放位置src/main/resources/static 或 publicsrc/main/resources/templates
访问方式URL 直接指向文件名(如 /about.html)。URL 映射到 Controller 方法,由模板引擎生成 HTML。
内容是否固定内容固定,所有用户访问到的页面相同。内容动态生成,根据请求、用户或业务逻辑返回不同的页面。
是否依赖后端不依赖,直接返回文件。必须依赖后端逻辑,结合模板引擎生成页面。
CSS/JS 引用通过标准 HTML 标签(<link> 和 <script>)引用。使用 Thymeleaf 的 th:href 和 th:src 动态解析路径,适配环境和上下文路径。
典型用途- 静态资源(CSS/JS 文件)。
- 公共页面(如帮助文档)。
- 用户个性化页面(如个人中心)。
- 动态报表、购物车页面等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2253074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Elasticsearch】Docker安装和基本概念

1. Docker安装ES 拉取es镜像 docker pull elasticsearch:8.5.3 创建网络 docker network create oj-network 启动es docker run -d --name oj-es-dev -e "ES_JAVA_OPTS-Xms256m -Xmx256m" -e "discovery.typesingle-node" -v D:\javacode\oj-byte\depl…

基于Java Springboot环境保护生活App且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

[SWPUCTF 2021 新生赛]gif好像有点大

[SWPUCTF 2021 新生赛]gif好像有点大 帧解一下 找到这个二维码用软件CQR解开一下 得到flag NSSCTF{The_G1F_ls_T00_b1g} [BJDCTF 2020]base?? 给了我们base64加密的密文 用python直接解密 import base64 dict{0: J, 1: K, 2: L, 3: M, 4: N, 5: O, 6: x, 7: y, 8: U, 9: …

Unity类银河战士恶魔城学习总结(P156 Audio Settings音频设置)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了音频的大小设置与保存加载 音频管理器 UI_VolumeSlider.cs 定义了 UI_VolumeSlider 类&#xff0c;用于处理与音频设置相关的…

【Java从入门到放弃 之 类加载器】

类加载器 ClassLoader 类加载器动态加载类的两种方式类加载过程双亲委派模型特点类加载器层次结构 自定义类加载器总结 类加载器 类加载器负责将Java字节码文件&#xff08;.class文件&#xff09;动态加载到内存中&#xff0c;并将其转化为JVM可以执行的类对象。它是Java运行…

华为HarmonyOS 让应用快速拥有账号能力 -- 1 华为账号一键登录

概述 华为账号一键登录是基于OAuth 2.0协议标准和OpenID Connect协议标准构建的OAuth2.0 授权登录系统&#xff0c;应用可以通过华为账号一键登录能力方便地获取华为账号用户的身份标识和手机号&#xff0c;快速建立应用内的用户体系。 优势&#xff1a; 利用系统账号的安全…

高效数据分析:五款报表工具助力企业智能决策

概述 报表工具是企业进行数据分析、展示和决策支持的核心工具之一。本文将为大家介绍五款各具特色的报表工具&#xff0c;包括国产的山海鲸报表、FineReport&#xff0c;以及国际工具Databox、Pentaho Reporting和Zoho Analytics。通过详细分析它们的功能特点、优势和不足&…

生态环境一体化智慧监管平台

在数字化和智能化的浪潮中&#xff0c;生态环境保护与治理正迎来革命性的变化。生态环境一体化智慧监管平台的建设&#xff0c;不仅响应了这一趋势&#xff0c;而且为中国式现代化的生态治理提供了新的解决方案。本文将深度分析该平台的建设内容&#xff0c;探讨其在推动生态文…

基于PyTorch框架的线性回归实现指南

目录 ​编辑 1. 线性回归基础 2. PyTorch环境搭建 3. 数据准备 4. 定义线性回归模型 5. 损失函数和优化器 6. 训练模型 7. 评估模型 8. 结论 线性回归是统计学和机器学习中最基本的预测模型之一&#xff0c;它试图找到输入特征和输出结果之间的线性关系。在深度学习框…

重生之我在异世界学编程之C语言:深入指针篇(下)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 题集&#xff08;1&#xff09;指针笔试题1&a…

【HarmonyOS】鸿蒙应用地理位置获取,地理名称获取

【HarmonyOS】鸿蒙应用地理位置获取&#xff0c;地理名称获取 一、前言 首先要理解地理专有名词&#xff0c;当我们从系统获取地理位置&#xff0c;一般会拿到地理坐标&#xff0c;是一串数字&#xff0c;并不是地理位置名称。例如 116.2305&#xff0c;33.568。 这些数字坐…

SimpleLive1.7.5 |适配手机和TV,聚合抖B虎鱼四大直播

SimpleLive是一款聚合多个直播平台的应用程序&#xff0c;内置虎牙、斗鱼、哔哩哔哩及抖音直播。提供无广告体验&#xff0c;支持弹幕显示调整、夜间模式切换等功能。用户无需登录即可关注不同平台的主播并查看其直播状态。 大小&#xff1a;14M 下载地址&#xff1a; 百度网…

泷羽sec:shell作业

⼀、⽤Shell写⼀个计算器 #!/bin/bash read -p "请输入表达式&#xff08;格式为 操作数1 运算符 操作数2&#xff0c;如 5 3&#xff09;&#xff1a;" expression a1$(echo $expression | awk {print $1}) a2$(echo $expression | awk {print $2}) a3$(echo …

ETL工具观察:ETLCloud与MDM是什么关系?

一、什么是ETLCloud ETLCloud数据中台是一款高时效的数据集成平台&#xff0c;专注于解决大数据量和高合规要求环境下的数据集成需求。 工具特点 1.离线与实时集成&#xff1a;支持离线数据集成&#xff08;ETL、ELT&#xff09;和变更数据捕获&#xff08;CDC&#xff09;实…

轻NAS系统CasaOS设备安装小雅超集结合内网穿透实现自由访问海量资源

文章目录 前言1. 本地部署AList2. AList挂载网盘3. 部署小雅alist3.1 Token获取3.2 部署小雅3.3 挂载小雅alist到AList中 4. Cpolar内网穿透安装5. 创建公网地址6. 配置固定公网地址 前言 本文主要介绍如何在安装了轻NAS系统CasaOS的小主机中部署小雅AList&#xff0c;并使用A…

MATLAB 最小二乘点云拟合球 (89)

MATLAB 最小二乘点云拟合球 (89) 一、算法介绍二、算法实现1.代码2.结果这是缘,亦是最美的相见 一、算法介绍 球面拟合算法是一种通过数学方法将一组三维点(通常在三维空间中分布)拟合到一个理想的球形表面上。这个过程通常涉及使用最小二乘法来最小化实际数据点与拟合的…

【分页查询】.NET开源 ORM 框架 SqlSugar 系列

&#x1f4a5; .NET开源 ORM 框架 SqlSugar 系列 &#x1f389;&#x1f389;&#x1f389; 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

WebStorm快捷键保持跟Idea一致

修改连续行局部多选 在WebStorm中同时按下ctrl alt s&#xff1b; 选择KeyMap 输入Column Selection Mode选择快捷键, 右键选择Add Mouse Shortcut 按下alt 鼠标左键 如果出现占用的情况&#xff0c;直接删除其他使用该快捷键的地方即可&#xff1b; 修改跨行局部多选 在…

好书推荐《LangChain大模型AI应用开发实践》

Hi大家好&#xff0c;我是码银~ 今天我要给大家带来一本特别的书籍推荐——《LangChain大模型AI应用开发实践》。如果你对人工智能、自然语言处理或者正在寻找一种高效构建AI应用的方法&#xff0c;那么这本书绝对不容错过。 这本书是由哔哩哔哩知名UP主【老陈打码】&#xff0…

python使用openpyxl处理excel

文章目录 一、写在前面1、安装openpyxl2、认识excel窗口 二、基本使用1、打开excel2、获取sheet表格3、获取sheet表格 尺寸4、获取单元格数据5、获取区域单元格数据6、sheet.iter_rows()方法7、修改单元格的值8、向表格中插入行数据9、实战&#xff1a;合并多个excel 三、获取E…