当前位置: 首页 > news >正文

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

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

  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,最终由浏览器渲染出用户界面。

相关文章:

  • 二维 根据矩阵变换计算镜像旋转角度
  • 【LLM大模型技术专题】「入门到精通系列教程」LangChain4j与Spring Boot集成开发实战指南
  • 记录一下centos8安装nginx并部署使用
  • 使用 Python 的 psutil 库进行系统资源监控
  • Apparent connection leak detected问题排查
  • Java Lombok @Data 注解用法详解
  • Reids 如何处理缓存穿透、缓存击穿、缓存雪崩问题?
  • 常用的Docker命令
  • 通用寄存器的 “不通用“ 陷阱:AX/CX/DX 的寻址禁区与突围之道
  • 代码训练LeetCode(22)研究者H指数
  • 防止网站被iframe嵌套的安全防护指南
  • 多线程编程技术解析及示例:pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock
  • 数学知识体系难易程度表及关系
  • 蓝牙防丢器应用方案
  • 贝叶斯优化+LSTM+时序预测=Nature子刊!
  • Elasticsearch的写入性能优化
  • 高速ADC数据格式与JESD204B IP数据格式映射关系
  • FART 精准脱壳:通过配置文件控制脱壳节奏与范围
  • AI,如何重构理解、匹配与决策?
  • Oracle数据库笔记
  • 六安市 网站集约化建设/新平台推广
  • 网站运营技巧/河南网站建设报价
  • 对网站的赏析/电子商务网店运营推广
  • 公司商标设计网站/免费个人推广引流平台
  • 外贸公司做网站该去哪里找/网址域名查询ip地址
  • 净化科技网站建设/佛山做网站推广的公司