JavaWeb简介

news2025/6/7 6:44:30

目录

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)​​:负责与客户端交互。核心功能包括接收客户端发送的数据、执行业务逻辑处理,并将处理结果(需要的数据)返回给客户端。

“服务器”一词含义广泛:

  1. ​物理层面 (服务器硬件)​​:一种高性能计算机,通常具备更快的运算速度、更高的承载能力及成本。
  2. ​软件层面 (服务器软件)​​:安装在计算机上的一类特殊软件程序,根据其核心功能可分为多种类型,例如:应用服务器 (Application Server)、数据库服务器 (Database Server)、Redis 服务器、DNS 服务器、邮件服务器 (Mail Server) 等。

​综上所述​​:我们可以将其归结为——服务器本质上是一台(或者多台协同工作的集群)安装了特定服务器软件的高性能计算机。


​1.2 JavaWeb 技术栈​

根据角色分工,技术栈可划分为两部分:

  • ​客户端 (前端部分)​​: HTMLCSSJavaScriptES6Node.jsnpmViteVue 3Vue RouterPiniaAxiosElement Plus, ...
  • ​服务器端 (后端部分)​​: HTTPXML/JSONTomcatServletRequestResponseCookieSessionFilterListenerMySQLJDBCDruidJacksonLombokJWT, ...

​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 中)​​,工作负担较重。
    • ​部署不分离​​:后端使用动态页面技术(如 JSPThymeleaf, Freemarker)渲染页面,​​前端代码(HTML模板等)嵌入在后端应用中,必须与后端程序打包部署在同一个服务器运行环境里​​。前端无法独立运行和部署。
  • ​前后端分离模式 (现代主流):​

    • ​开发分离​​:
      • 后端程序员:专注于开发 API 接口(使用如 Spring Boot + Spring MVC 框架)、业务逻辑处理、数据操作(JDBCJPAMyBatis)、用户认证授权(如 JWTOAuth2)等,​​产出的是数据接口 (JSON/XML) 而非页面​​。
      • 前端程序员:专注于使用前端框架(Vue.jsReactAngular)开发用户界面(UI)、管理客户端状态(PiniaRedux)、路由控制(Vue RouterReact Router)、通过 AJAX(如 AxiosFetch)调用后端 API 获取数据并渲染页面。
      • ​前后端通过明确的 API 文档 约定接口(请求路径、方法、参数、返回数据结构)进行沟通协作​​。
    • ​部署分离​​:

      • 前端项目:可以使用 Vue CLIViteReact 等工程化工具构建和打包(生成 HTMLJavaScriptCSS 等静态资源文件)。​​构建后的前端资源可以独立部署​​到专用的 Web服务器(如 Nginx)或 CDN 上。
      • 后端项目:打包成独立的 JAR/WAR 文件,部署在 TomcatJetty, 或嵌入式的 Spring Boot 应用服务器上,​​只负责提供 API 服务和数据支持​​。
      • ​前端应用通过 AJAX 跨域请求访问部署在不同服务器或不同端口上的后端 API​。
      • 优势:部署灵活、职责清晰、技术栈可选性更强、有利于并行开发和维护、更适合构建现代 Web 应用(如单页应用 SPA)。

      总结:现代 JavaWeb 应用的形态:以 ​​B/S 模式为主流架构​​,通过 ​​前后端分离​​ 的方式构建,​​后端核心是提供 RESTful API​​ 服务,前端通过 AJAX 调用这些 API,最终由浏览器渲染出用户界面。

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

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

相关文章

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 数据集摘要 高时空分辨率的植被覆盖度产品存在着广…

力扣HOT100之二分查找:74. 搜索二维矩阵

这道题直接a了,我们可以参考上一道题:35.搜索插入位置的思路,详情见我的上一篇博客。将每一行的第一个元素当作一个数组中的元素,然后对这个数组进行二分查找,如果直接找到了target,则直接返回true&#xf…

编程技能:格式化打印04,sprintf

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:编程技能:格式化打印03,printf 回到目录…

R语言基础| 下载、安装

在此前的单细胞教程中,许多小伙伴都曾因为R语言基础不足而十分苦恼。R语言是一种开源的编程语言和软件环境,专门用于统计分析、图形表示和数据挖掘。它最初由Ross Ihaka和Robert Gentleman在1993年创建,旨在为统计学家和数据分析师提供一个广…

微软的新系统Windows12未来有哪些新特性

在今年即将到来的重大设计升级中,苹果计划对其全线操作系统统一按年份命名,作为另一巨头微软的win12还远吗?win11和win10是微软现在正在用的主流版本,win11系统发布于2021年6月24日,win10系统发布于2015年7月29日。预计win12尝鲜版可能在2025年下半年或明年。 尽管win12还…

在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生

文章目录 🌌 序章🌠 一、命名管道的宿命与哲学1.1、创建及简单使用1.2、命名管道的工作原理1.3、命名管道与匿名管道的区别 2、命名管道的特点及特殊场景2.1、特点2.2、四种特殊场景 3、命名管道实操3.1、实现文件拷贝3.2、实现进程控制 小结 &#x1f3…

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()函数找到第一个…

图片压缩工具 | 图片属性详解及读取解析元数据

ℹ️ 图片信息及属性 基本属性 格式类型:JPEG、PNG、GIF、WEBP、BMP、TIFF等文件大小:以KB、MB等为单位的存储空间占用创建/修改日期:文件的元数据时间戳 视觉属性 尺寸/分辨率 宽度(像素)高度(像素&…

C# Onnx 动漫人物人脸检测

目录 效果 模型信息 项目 代码 下载 参考 效果 模型信息 Model Properties ------------------------- stride:32 names:{0: face} --------------------------------------------------------------- Inputs ------------------------- name&am…

C++内存列传之RAII宇宙:智能指针

文章目录 1.为什么需要智能指针?2.智能指针原理2.1 RAll2.2 像指针一样使用 3.C11的智能指针3.1 auto_ptr3.2 unique_ptr3.3 shared_ptr3.4 weak_ptr 4.删除器希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力! 智能指针是 C 中用于自动…

PVE 虚拟机安装 Ubuntu Server V24 系统 —— 一步一步安装配置基于 Ubuntu Server 的 NodeJS 服务器详细实录1

前言 最近在基于 NodeJS V22 写一个全栈的项目,写好了,当然需要配置服务器部署啦。这个过程对于熟手来说,还是不复杂的,但是对于很多新手来说,可能稍微有点困难。所以,我把整个过程全部记录一下。 熟悉我…

TDengine 开发指南——高效写入

高效写入 本章内容将介绍如何发挥 TDengine 最大写入性能,通过原理解析到参数如何配置再到实际示例演示,完整描述如何达到高效写入。 为帮助用户轻松构建百万级吞吐量的数据写入管道,TDengine 连接器提供高效写入的特性。 启动高效写入特性…

Linux kill 暂停命令

暂停进程 kill -19 在一台服务器上部署了360Pika服务,先用RedisClient连接一下,可以连接 现在暂停进程 暂停后发现再次连接无法连接 恢复进程 kill -18 恢复后可连接

2.0 阅读方法论与知识总结

引言 本文将详细分析考研英语阅读做题步骤,并对方法论进行总结,最后通过真题练习巩固方法。 一、做题步骤 所有技巧都建立在精读真题的基础上!建议按以下节奏复习: 1️⃣ 做题 先看题干了解文章大致主旨(看看有没有…

5. Qt中.pro文件(1)

本节主要讲.pro文件的作用和一些相关基础知识与操作。 本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1 PRO文件 1.1 pro文件作用 添加需要用到的QT模块,如通过QT module_name来添加需要用到的Qt模块。指定生…

简数采集技巧之快速获取特殊链接网址URL方法

简数采集器列表页提取器的默认配置规则:获取a标签的href属性值作为采集的链接网址,对于大部分网站都是适用的; 但有些网站不使用a标签作为链接跳转,而用javascript的onclick事件替代,那列表页提取器的默认规则将无法获…