- 核心概念:什么是服务器端?为什么需要它?
- Android 客户端与 Java 服务器端的通信流程
- 服务器端技术选型(用 Java 实现的多种方式)
- 一个完整的实战案例:使用 Spring Boot 搭建简单的 API 服务器
- 进阶与最佳实践
核心概念:什么是服务器端?为什么需要它?
想象一下一个 App,比如一个社交软件:

- 客户端 (Android App):用户在你的手机上打开 App,看到的是界面(UI),可以点击按钮、输入文字、上传图片,这个 App 本身运行在用户的手机上。
- 服务器端:当你点击“登录”按钮时,App 需要去验证你的用户名和密码,这些用户数据不可能都存在你的手机里(不安全,也放不下),它们存储在互联网上的一台强大的计算机(服务器)上,这台计算机上运行的程序,就是服务器端程序。
服务器端的核心作用:
- 数据存储与管理:存储用户信息、帖子、图片、订单等所有核心数据。
- 业务逻辑处理:执行核心的计算和规则,比如计算商品价格、处理支付、匹配游戏玩家等。
- 提供 API (Application Programming Interface):定义一套规则,让客户端(如 Android App)可以安全、规范地请求数据和提交数据。
- 安全性:保护数据安全,防止未授权的访问,处理用户认证和授权。
- 多用户支持:可以同时为成千上万的客户端提供服务。
一句话总结:客户端负责展示和交互,服务器端负责数据、逻辑和核心功能。
Android 客户端与 Java 服务器端的通信流程
最常见的通信方式是 HTTP/HTTPS 协议,客户端发送一个 HTTP 请求,服务器端处理后返回一个 HTTP 响应。
流程图如下:

+----------------+ 1. 发送HTTP请求 (JSON格式) +-----------------------+
| |------------------------------------->| |
| Android App | ( POST /api/users/login) | Java Server |
| (Client) | | (Server) |
| |<-------------------------------------| |
+----------------+ 2. 接收并处理请求 +-----------------------+
^ | | |
| | | | 3. 查询数据库
| | | |
| | 5. 返回HTTP响应 | |
| | (JSON格式) | |
| | ( {token:"xxx"}) | |
| | | |
| | | V
| +------------------+
| 4. 封装数据为JSON
|
+---- 6. 解析响应数据,更新UI
关键点:
- 请求:客户端告诉服务器“我想做什么”,包含方法(GET/POST/PUT/DELETE)、路径(
/api/users)、请求头(Header,如Content-Type)、请求体(Body,如用户名密码)。 - 响应:服务器告诉客户端“结果是什么”,包含状态码(200成功,404未找到,500服务器错误)、响应头、响应体(通常是 JSON 格式的数据)。
- 数据格式:客户端和服务器端“说”的语言必须一致,最常用的是 JSON,因为它轻量、易于人阅读,并且被所有编程语言支持。
服务器端技术选型(用 Java 实现的多种方式)
用 Java 写服务器端,技术栈非常丰富,从传统到现代,可以分为几类:
A. 传统 Servlet + Tomcat
这是最基础、最经典的 Java Web 技术。
- 核心组件:
- Servlet:一个 Java 类,用于接收和处理 HTTP 请求,你需要为每一个 URL(如
/login,/register)写一个 Servlet。 - Tomcat:一个 Web 服务器(也叫 Servlet 容器),用于部署和运行你的 Servlet 程序。
- Servlet:一个 Java 类,用于接收和处理 HTTP 请求,你需要为每一个 URL(如
- 优点:Java Web 的基石,原理清晰,几乎所有 Java 开发者都应了解。
- 缺点:开发繁琐,需要大量模板代码(XML 配置),开发效率低。
B. JSP (JavaServer Pages)
可以看作是 Servlet 的“视图”技术,允许在 HTML 页面中嵌入 Java 代码来动态生成内容,现在基本不用于前后端分离的项目,主要用于一些遗留系统或快速生成后台管理页面。

C. 现代化框架 (强烈推荐)
为了解决传统 Servlet 的开发效率问题,出现了许多优秀的 Web 框架,它们极大地简化了开发。
Spring Boot (当前最主流的选择)
- 简介:Spring Boot 并不是一个全新的框架,而是对 Spring 生态的“增强”和“简化”,它采用“约定优于配置”的原则,让你能以最小的配置快速搭建、运行生产级的 Spring 应用。
- 优点:
- 快速开发:几行代码就能启动一个内嵌的 Web 服务器(如 Tomcat)。
- 简化配置:无需繁琐的 XML 配置,大量使用注解。
- 生态强大:拥有全世界最大的 Java 生态系统,有无数现成的 Starter(如
spring-boot-starter-web)和第三方库支持。 - 微服务友好:是构建微服务架构的首选技术。
- 适用场景:几乎所有的现代 Web 应用,从简单的 RESTful API 到复杂的分布式系统。
Javalin (轻量级选择)
- 简介:一个轻量级、现代化、极简的 Java 和 Kotlin Web 框架,它专注于提供一个简单、直观的 API。
- 优点:
- 轻量:库文件很小,启动速度快。
- API 简洁:学习曲线平缓,上手非常快。
- 同时支持 Java 和 Kotlin。
- 适用场景:中小型项目、微服务、或者当你需要一个不依赖庞大 Spring 生态的轻量级方案时。
SparkJava (微框架)
- 简介:一个受 Ruby 框架 Spark 启发的微框架,以其极简的 API 而闻名。
- 优点:非常轻量,API 设计非常纯粹,路由定义简单。
- 适用场景:非常简单的 API 服务或微服务。
如何选择?
- 新手入门/大型项目/企业级应用:首选 Spring Boot,虽然学习曲线稍陡,但一旦掌握,开发效率和项目维护性都非常高。
- 快速原型/中小项目/追求极简:可以考虑 Javalin 或 SparkJava。
完整实战案例:使用 Spring Boot 搭建简单的 API 服务器
我们将创建一个最简单的 API,用于接收 Android 客户端发送的用户名,并返回一个欢迎消息。
第一步:环境准备
- JDK 8+:确保已安装 Java 开发工具包。
- Maven:项目构建工具。
- IDE:推荐使用 IntelliJ IDEA (社区版即可) 或 Eclipse。
第二步:创建 Spring Boot 项目
最简单的方式是使用 Spring Initializr (一个在线项目生成器)。
- 访问 https://start.spring.io/
- 填写项目信息:
- Project: Maven
- Language: Java
- Spring Boot: 选择一个稳定的版本 (如 2.7.x 或 3.x.x)
- Project Metadata:
- Group:
com.example - Artifact:
demo-server - Name:
demo-server - Packaging: Jar
- Java: 11 (或你安装的版本)
- Group:
- 添加依赖:
- 点击 "ADD DEPENDENCIES"
- 搜索并添加
Spring Web
- 点击 "GENERATE" 按钮,下载生成的
demo-server.zip文件,并用你的 IDE 打开它。
第三步:编写 Controller
在 src/main/java/com/example/demo 目录下,创建一个新的 Java 类 HelloController.java。
package com.example.demo;
import org.springframework.web.bind.annotation.*;
// @RestController 告诉 Spring 这是一个 RESTful 控制器
// 它相当于 @Controller + @ResponseBody
@RestController
public class HelloController {
// @RequestMapping 定义这个方法处理 "/hello" 路径的 GET 请求
// @RequestParam 将 URL 中的 "name" 参数绑定到方法的 