JavaWeb简介
目录
1.1 JavaWeb 简介
1.2 JavaWeb 技术栈
1.3 JavaWeb 交互模式
1.4 JavaWeb 的 C/S 和 B/S 模式
C/S 模式 (Client-Server / 客户端-服务器模式)
B/S 模式 (Browser-Server / 浏览器-服务器模式)
1.5 JavaWeb 实现前后端分离
非前后端分离模式 (传统模式):
前后端分离模式 (现代主流):
1.1 JavaWeb 简介
JavaWeb 是利用 Java 技术解决 Web 互联网领域问题的技术栈集合,主要使用 JavaEE(现 Jakarta EE)技术体系开发企业级互联网应用。相比 JavaSE 阶段的项目,JavaWeb 项目的规模、架构模式有着显著差异。理解互联网项目的基础,首先要明确 客户端 (Client) 和 服务器 (Server) 的概念:
- 客户端 (Client):负责与用户直接交互。其主要功能包括接收用户输入(操作)、展示服务器端的数据,以及向服务器传递数据。常见的客户端形态包括:手机 App、微信小程序、PC 端桌面程序、PC 浏览器以及其他智能设备的应用程序。
- 服务器 (Server):负责与客户端交互。核心功能包括接收客户端发送的数据、执行业务逻辑处理,并将处理结果(需要的数据)返回给客户端。
“服务器”一词含义广泛:
- 物理层面 (服务器硬件):一种高性能计算机,通常具备更快的运算速度、更高的承载能力及成本。
- 软件层面 (服务器软件):安装在计算机上的一类特殊软件程序,根据其核心功能可分为多种类型,例如:应用服务器 (Application Server)、数据库服务器 (Database Server)、Redis 服务器、DNS 服务器、邮件服务器 (Mail Server) 等。
综上所述:我们可以将其归结为——服务器本质上是一台(或者多台协同工作的集群)安装了特定服务器软件的高性能计算机。
1.2 JavaWeb 技术栈
根据角色分工,技术栈可划分为两部分:
- 客户端 (前端部分):
HTML
,CSS
,JavaScript
,ES6
,Node.js
,npm
,Vite
,Vue 3
,Vue Router
,Pinia
,Axios
,Element Plus
, ... - 服务器端 (后端部分):
HTTP
,XML/JSON
,Tomcat
,Servlet
,Request
,Response
,Cookie
,Session
,Filter
,Listener
,MySQL
,JDBC
,Druid
,Jackson
,Lombok
,JWT
, ...
1.3 JavaWeb 交互模式
JavaWeb 应用中客户端与服务器之间最主要的交互方式有两种:
- 请求 (Request): 客户端主动向服务器发送数据的一种主要方式,目的是提交信息供服务器处理。请求只能由客户端发起,流向服务器。
- 响应 (Response): 服务器处理完客户端请求后,将结果数据返回给客户端的一种主要方式。响应只能由服务器发出,流向客户端。
这种 “请求-响应” 模式是 Web 交互的基础。
1.4 JavaWeb 的 C/S 和 B/S 模式
JavaWeb 应用主要通过两种模式提供服务:
-
C/S 模式 (Client-Server / 客户端-服务器模式)
- 应用程序分成两部分:需要在用户设备上安装的客户端程序和部署在服务器上的服务器端程序。
- 用户必须先下载并安装特定的客户端程序才能使用服务。
- 程序的运行负载(如计算、数据处理)由客户端和服务器共同承担。
- 优点:能充分利用客户端计算资源,通常可提供更好的用户界面效果和展现能力(如复杂的图形、流畅交互)。
- 缺点:
- 更新繁琐:应用更新时,通常需要同时更新客户端和服务器端。
- 跨平台性差:需为不同平台(Windows, macOS, Linux, iOS, Android等)开发不同的客户端版本。
- 开发成本高:需分别开发客户端和服务器端代码,且针对多种平台的客户端开发显著增加工作量。
-
B/S 模式 (Browser-Server / 浏览器-服务器模式)
- 应用程序只有服务器端部分,部署在服务器上。
- 用户只需一个标准的网页浏览器(如 Chrome, Firefox, Edge)即可访问应用,无需安装特定软件。
- 程序的运行负载主要由服务器承担。
- 优点:
- 使用便捷:只要设备有浏览器,就能访问。
- 更新简单:应用更新仅需更新服务器端代码,所有用户访问即是最新版本。
- 跨平台性极佳:真正的“一次编写,到处运行”,可运行在任何有标准浏览器的操作系统和设备上。
- 开发成本相对较低:开发重心在服务器端,前端基于Web标准,通常只需维护一套前端代码(或使用响应式设计)。
- 缺点:
- 客户端(浏览器)承担的计算能力有限,对数据的处理和展现能力相比原生C/S应用稍逊一筹(尤其在图形、复杂交互方面)。
- 用户体验高度依赖网络性能和浏览器能力。
模式选择:对于 Java 后端程序员而言,核心工作是开发服务器端代码(业务逻辑、数据访问、接口服务)。在前后端分离成为主流的架构模式下,无论前端采用何种技术栈(App、小程序、PC浏览器页面),只要后端按照预定义的接口文档(如 RESTful API) 实现功能,即可完成开发工作,后端程序员通常无需直接编写前端代码。
1.5 JavaWeb 实现前后端分离
-
非前后端分离模式 (传统模式):
- 开发不分离:后端程序员(常称为“全栈”)不仅需要编写服务器端业务逻辑和数据库访问代码(如 Java + JSP/Servlet),还要编写、修改甚至生成前端展示层代码(如 HTML, CSS, JavaScript 嵌入在 JSP 中),工作负担较重。
- 部署不分离:后端使用动态页面技术(如
JSP
,Thymeleaf
,Freemarker
)渲染页面,前端代码(HTML模板等)嵌入在后端应用中,必须与后端程序打包部署在同一个服务器运行环境里。前端无法独立运行和部署。
-
前后端分离模式 (现代主流):
- 开发分离:
- 后端程序员:专注于开发
API 接口
(使用如Spring Boot
+Spring MVC
框架)、业务逻辑处理、数据操作(JDBC
,JPA
,MyBatis
)、用户认证授权(如JWT
,OAuth2
)等,产出的是数据接口 (JSON/XML) 而非页面。 - 前端程序员:专注于使用前端框架(
Vue.js
,React
,Angular
)开发用户界面(UI)、管理客户端状态(Pinia
,Redux
)、路由控制(Vue Router
,React Router
)、通过AJAX
(如Axios
、Fetch
)调用后端API
获取数据并渲染页面。 - 前后端通过明确的
API 文档
约定接口(请求路径、方法、参数、返回数据结构)进行沟通协作。
- 后端程序员:专注于开发
-
部署分离:
- 前端项目:可以使用
Vue CLI
,Vite
,React
等工程化工具构建和打包(生成HTML
,JavaScript
,CSS
等静态资源文件)。构建后的前端资源可以独立部署到专用的Web服务器
(如Nginx
)或CDN
上。 - 后端项目:打包成独立的
JAR
/WAR
文件,部署在Tomcat
,Jetty
, 或嵌入式的Spring Boot
应用服务器上,只负责提供API
服务和数据支持。 - 前端应用通过
AJAX
跨域请求访问部署在不同服务器或不同端口上的后端API
。 - 优势:部署灵活、职责清晰、技术栈可选性更强、有利于并行开发和维护、更适合构建现代 Web 应用(如单页应用 SPA)。
- 前端项目:可以使用
- 开发分离:
总结:现代 JavaWeb 应用的形态:以 B/S 模式为主流架构,通过 前后端分离 的方式构建,后端核心是提供 RESTful API
服务,前端通过 AJAX
调用这些 API
,最终由浏览器渲染出用户界面。
相关文章:
JavaWeb简介
目录 1.1 JavaWeb 简介 1.2 JavaWeb 技术栈 1.3 JavaWeb 交互模式 1.4 JavaWeb 的 C/S 和 B/S 模式 C/S 模式 (Client-Server / 客户端-服务器模式) B/S 模式 (Browser-Server / 浏览器-服务器模式) 1.5 JavaWeb 实现前…...

CMS32M65xx/67xx系列CoreMark跑分测试
CMS32M65xx/67xx系列CoreMark跑分测试 1、参考资料准备 1.1、STM32官方跑分链接 1.2、官网链接 官方移植文档,如下所示,点击红框处-移植文档: A new whitepaper and video explain how to port CoreMark-Pro to bare-metal 1.3、测试软件git下载链接 …...

中国区域30m/15天植被覆盖度数据集(2010-2022)
时间分辨率:日空间分辨率;:10m - 100m共享方:式开放获取数据大小:2.98 TB数据时间范围:2010-01-01 — 2022-12-31元数据更新时间:2024-12-23 数据集摘要 高时空分辨率的植被覆盖度产品存在着广…...
LabVIEW准分子激光器智能控制系统
LabVIEW 开发准分子激光器智能控制系统,针对放电激励型准分子激光器强电磁干扰环境下的控制难题,采用 “PC 端 LabVIEW 人机交互 MCU 端实时控制 光纤隔离通信” 架构,实现激光能量闭环控制、腔体环境监测、气路自动管理等功能。硬件选用 N…...
微服务面试资料1
在当今快速发展的技术领域,微服务架构已经成为构建复杂系统的重要方式之一。本文将围绕微服务的核心概念、技术栈、分布式事务处理、微服务拆分与设计,以及敏捷开发实践等关键问题展开深入探讨,旨在为准备面试的 Java 开发者提供一份全面的复…...
Pytest Fixture 详解
Pytest Fixture 详解 Fixture 是 pytest 最强大的功能之一,用于提供测试所需的依赖资源(如数据库连接、临时文件、模拟对象等),并支持复用、作用域控制和自动清理。以下是全面详解: 1. 基本用法 定义 Fixture 使用 …...

力扣HOT100之二分查找:74. 搜索二维矩阵
这道题直接a了,我们可以参考上一道题:35.搜索插入位置的思路,详情见我的上一篇博客。将每一行的第一个元素当作一个数组中的元素,然后对这个数组进行二分查找,如果直接找到了target,则直接返回true…...
【前端】前后端通信
前端开发主要完成的两件事: 1)界面搭建 2)数据交互 本知识页参考: https://juejin.cn/post/6925296067378429960 0. XMLHttpRequest 客户端的一个API,为浏览器和服务器通信提供了一个便携通道。现代浏览器支持XMLHttp…...

编程技能:格式化打印04,sprintf
专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:编程技能:格式化打印03,printf 回到目录…...
C语言基础(11)【函数1】
内容提要 函数 文章目录 内容提要函数函数的描述函数的分类相关概念函数的定义:定义:案例: 形参和实参形参(形式参数)实参(实际参数)案例: 函数的返回值案例: 函数 函数…...

R语言基础| 下载、安装
在此前的单细胞教程中,许多小伙伴都曾因为R语言基础不足而十分苦恼。R语言是一种开源的编程语言和软件环境,专门用于统计分析、图形表示和数据挖掘。它最初由Ross Ihaka和Robert Gentleman在1993年创建,旨在为统计学家和数据分析师提供一个广…...
【hive sql】窗口函数
参考 包括窗口函数在内的执行顺序 from & join --确定数据源 where --行级过滤 group by --分组 having --组级过滤 窗口函数 --计算窗口函数结果 select --选择列 distinct --去重 order by --最终排序(可对窗口函数结果进行排序) limit/offset -…...
Ubuntu24.04 交叉编译 aarch64 ffmpeg
ffmpeg 官网: https://ffmpeg.org文档: https://ffmpeg.org/documentation.html 编译参数说明: https://trac.ffmpeg.org/wiki/CompilationGuide/Generic在Linux下编译: https://trac.ffmpeg.org/wiki/CompilationGuide 下载页: https://ffmpeg.org/download.html 安装依赖 …...
《AI角色扮演反诈技术解析:原理、架构与核心挑战》
AI角色扮演反诈技术解析:原理、架构与核心挑战 研究目标 技术栈梳理: 系统总结AI角色扮演在执法场景中的实现路径,涵盖大型语言模型(LLM)、提示词工程(Prompt Engineering)、多模态交互链路等…...

微软的新系统Windows12未来有哪些新特性
在今年即将到来的重大设计升级中,苹果计划对其全线操作系统统一按年份命名,作为另一巨头微软的win12还远吗?win11和win10是微软现在正在用的主流版本,win11系统发布于2021年6月24日,win10系统发布于2015年7月29日。预计win12尝鲜版可能在2025年下半年或明年。 尽管win12还…...
树莓派超全系列教程文档--(54)如何使用rsync在计算机之间同步文件夹
如何使用rsync在计算机之间同步文件夹 使用 rsync 在计算机之间同步文件夹 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rsync 在计算机之间同步文件夹 您可以使用 rsync 在计算机之间同步文件夹。例如,您可以使用 rsync 将R…...
华为ICT和AI智能应用
在华为的业务布局中,AI智能创新则贯穿于华为多个业务领域,二者紧密相关,共同推动华为及相关行业的发展。以下是具体介绍: Techco转型 - 背景:随着5G - A、云、人工智能等技术的发展,运营商从传统连接服…...
ROS2与Unitree机器人集成指南
Tested systems and ROS2 distro systemsROS2 distroUbuntu 20.04foxyUbuntu 22.04humblesrc目录上级才可以colcon build git clone https://github.com/unitreerobotics/unitree_ros2 Install Unitree ROS2 package 1. Dependencies sudo apt install ros-humble-rmw-cyclon…...

在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生
文章目录 🌌 序章🌠 一、命名管道的宿命与哲学1.1、创建及简单使用1.2、命名管道的工作原理1.3、命名管道与匿名管道的区别 2、命名管道的特点及特殊场景2.1、特点2.2、四种特殊场景 3、命名管道实操3.1、实现文件拷贝3.2、实现进程控制 小结 dz…...
Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 Cursor 工具项目构建指南:Java 21 环境下的 Spring Boot Prompt Rules 约束前言项目简…...
各个布局的区别以及示例
各个布局的区别以及示例 在前端开发中,常见的布局方式主要有以下几种,每种布局都有其适用场景和特点: 1. 普通文档流(Normal Flow) 特点:默认布局方式,元素按照HTML顺序依次排列。适用场景&am…...
什么是MVC?
导语: 在Java后端面试中,“MVC架构”是绕不开的基础话题。它不仅关乎项目的整体设计思路,更体现了候选人的架构理解能力与编码规范意识。本文将从面试官视角出发,结合高频问题、代码示例、答题技巧与加分项,带你全面吃…...

STM32的ADC简介
一、ADC简介 STM32的ADC是一种12位逐次逼近型模拟数字转换器。它具备18个通道,能够测量16个外部信号源以及2个内部信号源。各通道的A/D转换可以执行单次、连续、扫描或间断模式。转换结果可采用左对齐或右对齐的方式(12位)存储于16位数据寄存…...

Bash shell四则运算
文章目录 四则运算1. expr 命令2. $(( )) 表达式(推荐)3. $[ ] 表达式(已弃用)4. let 命令小数运算i 和 i 区别 四则运算 算术运算: - * / %(取模,求余数) Bash sh…...

(javaSE)Java数组进阶:数组初始化 数组访问 数组中的jvm 空指针异常
数组的基础 什么是数组呢? 数组指的是一种容器,可以用来存储同种数据类型的多个值 数组的初始化 初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。 数组初始化的两种方式:静态初始化,动态初始化 数组的静态初始化 初始化…...

力扣刷题Day 70:在排序数组中查找元素的第一个和最后一个位置(34)
1.题目描述 2.思路 方法1(自己写的):一次二分查找找到等于target的一个元素索引axis,然后向左右延伸找边界。 方法2(灵茶山艾府佬的闭区间二分查找写法):定义一个lower_bound()函数找到第一个…...
vue 多端适配之pxtorem
在 Vue 3 Vite 项目中使用 postcss-pxtorem 自动将 px 单位转换为 rem 单位,可以按照以下步骤配置: 一、基础版本 1. 安装依赖 首先安装必要的插件: npm install postcss postcss-pxtorem autoprefixer -D # 或 yarn add postcss postcs…...

图片压缩工具 | 图片属性详解及读取解析元数据
ℹ️ 图片信息及属性 基本属性 格式类型:JPEG、PNG、GIF、WEBP、BMP、TIFF等文件大小:以KB、MB等为单位的存储空间占用创建/修改日期:文件的元数据时间戳 视觉属性 尺寸/分辨率 宽度(像素)高度(像素&…...
React---day8
9.6 不可变数据的力量 我们知道是不能够修改this.state里面的数据的 举个例子 export class App extends React.PureComponent{constructor(){super();this.state {userList:[{name : "tom" , age : 18},{name : "lily" , age : 20},{name : "tik…...

C# Onnx 动漫人物人脸检测
目录 效果 模型信息 项目 代码 下载 参考 效果 模型信息 Model Properties ------------------------- stride:32 names:{0: face} --------------------------------------------------------------- Inputs ------------------------- name&am…...