一 请求响应
1. 请求(Request)
客户端向服务器发送的HTTP请求,通常包含以下内容:
-
请求行:HTTP方法(GET/POST等)、请求的URL、协议版本。
-
请求头(Headers):客户端信息(如浏览器类型、支持的语言)、Cookie、内容类型等。
-
请求体(Body):POST/PUT请求时携带的数据(如表单参数、JSON)。
在JavaWeb中的处理:
-
Servlet通过
HttpServletRequest
对象接收请求:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {// 获取请求参数(如URL中的参数)String username = request.getParameter("username");// 获取请求头信息String userAgent = request.getHeader("User-Agent");
}
2. 响应(Response)
服务器处理请求后返回给客户端的HTTP响应,通常包含:
-
状态行:状态码(如200成功、404未找到)、状态描述。
-
响应头(Headers):内容类型(如HTML/JSON)、Cookie、缓存控制等。
-
响应体(Body):返回的实际内容(如HTML页面、JSON数据)。
在JavaWeb中的处理:
-
Servlet通过
HttpServletResponse
对象生成响应:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {// 设置响应内容类型(如HTML或JSON)response.setContentType("text/html;charset=UTF-8");// 写入响应内容PrintWriter out = response.getWriter();out.println("<h1>Hello, World!</h1>");// 设置响应状态码(可选)response.setStatus(200);
}
3. 常见场景
-
GET请求:获取数据(如访问网页),参数通过URL传递。
-
POST请求:提交数据(如表单提交),参数通过请求体传递。
-
重定向:服务器返回302状态码,让客户端跳转到新URL。
response.sendRedirect("/new-page.jsp");
返回JSON:常用于前后端分离项目。
response.setContentType("application/json;charset=UTF-8");
String json = "{\"name\":\"Tom\", \"age\":20}";
out.print(json);
4. 典型流程
-
客户端发送HTTP请求到服务器(如访问
/login
)。 -
服务器解析请求,交给对应的Servlet处理。
-
Servlet通过
request
获取参数,执行业务逻辑(如查询数据库)。 -
Servlet通过
response
生成响应(返回页面或数据)。 -
客户端接收并渲染响应结果。
5 总结
-
请求(Request):客户端向服务器要数据或提交数据。
-
响应(Response):服务器处理请求后返回结果。
-
JavaWeb通过
HttpServletRequest
和HttpServletResponse
对象封装了HTTP协议的底层细节,开发者只需关注业务逻辑的实现。
二 BS架构与CS架构
1. BS架构(Browser/Server)
定义
用户通过浏览器(如Chrome、Firefox)访问应用,业务逻辑和数据存储集中在服务器端,客户端仅负责展示和简单交互。
特点
-
客户端:无需安装额外软件,只需浏览器。
-
服务器:负责核心逻辑、数据处理和存储。
-
通信:基于HTTP/HTTPS协议,通过请求-响应模式交互。
优点
-
跨平台:支持任何有浏览器的设备(PC、手机、平板)。
-
维护方便:只需更新服务器,客户端自动同步。
-
低成本:无需开发和维护多平台的客户端。
-
轻量级:适合快速迭代的Web应用(如电商、博客)。
缺点
-
性能依赖网络:弱网环境下体验差。
-
功能受限:复杂操作(如3D渲染、本地硬件调用)支持有限。
-
安全性较低:易受XSS、CSRF等Web攻击。
适用场景
-
Web应用(如在线办公、电商网站)。
-
信息展示型系统(如新闻门户、企业官网)。
-
轻量级交互需求(如表单提交、数据查询)。
技术栈
-
前端:HTML/CSS/JavaScript、React/Vue等框架。
-
后端:Java/Python/PHP、Spring/Django/Node.js。
-
协议:HTTP/HTTPS、WebSocket。
2. CS架构(Client/Server)
定义
用户需要安装独立的客户端软件,客户端承担部分业务逻辑,与服务器协同工作。
特点
-
客户端:需安装特定程序(如桌面应用、手机APP)。
-
服务器:负责核心数据和业务逻辑。
-
通信:通常基于TCP/UDP或自定义协议,支持实时交互。
优点
-
性能高:客户端可处理复杂计算(如图形渲染、本地缓存)。
-
功能强大:支持本地硬件操作(如摄像头、打印机)。
-
离线可用:部分功能可在无网络时使用(如本地数据库)。
缺点
-
开发维护成本高:需适配多平台(Windows/macOS/iOS/Android)。
-
更新复杂:需用户手动升级客户端版本。
-
依赖用户设备:硬件兼容性可能存在问题。
适用场景
-
高性能需求应用(如大型游戏、视频编辑软件)。
-
本地硬件交互(如工业控制、医疗设备)。
-
企业级内部系统(如ERP、财务软件)。
技术栈
-
客户端:C++/C#(桌面)、Java/Kotlin(Android)、Swift(iOS)。
-
服务器:Java/Python/C++、MySQL/Oracle等数据库。
-
通信协议:TCP/UDP、gRPC、自定义二进制协议。