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