首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 應用連接 Tomcat + MySQL 服務器的完整配置指南

     編輯:程式設計疑難解答

架構概覽

Android 客戶端 不能直接連接 MySQL(安全性、連接池、網絡穿透等問題)。標準架構為:

Android App --HTTP/HTTPS--> Tomcat (Spring Boot / Servlet) --JDBC/Connection Pool--> MySQL

服務器端配置步驟

1. Tomcat 部署與配置

  • 安裝 JDK 8/11,配置 JAVA_HOME、PATH。
  • 解壓 Tomcat,修改 conf/server.xml:
    - 端口(默認 8080)
    - 綁定地址 address="0.0.0.0" 允許外網訪問
    - 配置 HTTPS(生產環境必須)
  • 啟動測試:bin/startup.sh,瀏覽器訪問 https://server-ip:8080。

2. MySQL 遠程訪問授權

-- 創建業務用戶
CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON your_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

-- 確保 my.cnf 綁定 0.0.0.0
bind-address = 0.0.0.0
-- 重啟 MySQL 生效

3. Java 連接池配置

<!-- context.xml 或 Spring 配置 -->
<Resource name="jdbc/MyDB"
    auth="Container"
    type="javax.sql.DataSource"
    maxTotal="20"
    maxIdle="10"
    maxWaitMillis="-1"
    username="app_user"
    password="strong_password"
    driverClassName="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/your_db?useSSL=false&serverTimezone=UTC&characterEncoding=utf8"
/>

4. 暴露 REST API

使用 Spring Boot(推薦)或原生 Servlet + JSON 庫(Jackson/Gson)實現 CRUD 接口:

@RestController
@RequestMapping("/api/appointments")
public class AppointmentController {
    @Autowired AppointmentService service;
    
    @GetMapping("/list")
    public List<Appointment> list(@RequestParam String userId) {
        return service.findByUser(userId);
    }
    
    @PostMapping("/book")
    public Result book(@RequestBody AppointmentDTO dto) {
        return service.createAppointment(dto);
    }
}

Android 客戶端調用

1. 網絡權限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2. 使用 OkHttp / Retrofit 請求 API

// Retrofit 定義
public interface ApiService {
    @GET("api/appointments/list")
    Call<List<Appointment>> getAppointments(@Query("userId") String userId);
    
    @POST("api/appointments/book")
    Call<Result> bookAppointment(@Body AppointmentDTO dto);
}

// 調用
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://your-server-ip:8080/")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

ApiService api = retrofit.create(ApiService.class);
api.getAppointments("user123").enqueue(new Callback<List<Appointment>>() {
    @Override public void onResponse(Call<List<Appointment>> call, Response<List<Appointment>> response) {
        // 更新 UI
    }
    @Override public void onFailure(Call<List<Appointment>> call, Throwable t) {
        // 錯誤處理
    }
});

關鍵注意事項

  • 服務器公網 IP / 域名:阿里雲需配置安全組開放 8080/443 端口,綁定彈性公網 IP。
  • HTTPS 必須:生產環境申請 SSL 證書(Let's Encrypt 免費),配置 Tomcat 或 Nginx 反向代理終止 SSL。
  • 數據庫連接池調優:根據併發量設置 maxTotal、maxIdle,監控泄漏。
  • 輸入驗證與 SQL 注入防護:服務端使用 JPA/MyBatis 參數綁定,嚴禁拼接 SQL。
  • 異常統一處理:全局異常處理器返回標準化錯誤碼,客戶端友好提示。

總結

Android 連接 Tomcat + MySQL 的核心是三層架構:客戶端通過 HTTP 調用 REST API,服務端業務邏輯層操作數據庫。切勿嘗試客戶端直連數據庫。掌握 Tomcat 部署、MySQL 遠程授權、連接池配置、REST API 開發、Retrofit 調用這五大核心環節,即可構建穩健的移動應用後端體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved