前言
前幾天我們先從 HTML、CSS 和 JavaScript 開始,慢慢建立醫療資訊小系統的前端。
到目前為止,網頁已經可以顯示內容,也可以透過 JavaScript 增加一些互動。
但是現在還有一個問題:
這些資料都還只是存在網頁上。
如果希望之後可以把病患資料儲存到資料庫,就需要一個可以處理資料的後端。
所以今天開始,我要正式進入 Java Web 的部分。
今天的主角就是:
Servlet。
⸻
Servlet 是什麼?
Servlet 是 Java Web 中用來處理網路請求的一種技術。
簡單來說,當使用者在網頁上做了一個動作,例如:
瀏覽器會把請求送到後端,而 Servlet 就可以負責接收並處理這些請求。
可以先把它想成:
使用者
↓
瀏覽器
↓
Servlet
↓
Java 程式
↓
回傳結果
這樣就可以讓前端網頁和後端 Java 程式開始溝通。
⸻
建立第一個 Servlet
今天先做一個非常簡單的 Servlet。
例如建立:
HelloServlet.java
基本程式可以寫成:
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("Hello, Medical System!");
out.println("我的第一個 Servlet 成功執行了!");
}
}
第一次看到可能會覺得程式碼有點多。
但今天先不用全部背起來。
我們先理解最重要的幾個部分。
⸻
@WebServlet 是什麼?
@WebServlet("/hello")
這一行可以理解成:
當使用者進入 /hello 時,要交給這個 Servlet 處理。
例如網站網址假設是:
http://localhost:8080/MedicalSystem/hello
瀏覽器就會找到我們剛剛建立的 HelloServlet。
⸻
doGet() 是什麼?
protected void doGet(...)
這個方法主要用來處理 HTTP GET 請求。
例如我們直接在瀏覽器輸入網址:
/hello
就可以觸發這個 Servlet 的 doGet()。
之後還會學到另一個很重要的方法:
doPost()
它通常會用來處理表單送出的 POST 請求。
這兩個方法之後會在我們的醫療資訊系統裡一直使用到。
⸻
讓 Servlet 回傳資料
在程式裡:
PrintWriter out = response.getWriter();
可以取得輸出的工具。
接著:
out.println("Hello, Medical System!");
就可以把 HTML 內容回傳給瀏覽器。
所以當我們開啟 Servlet 的網址時,就可以看到:
Hello, Medical System!
我的第一個 Servlet 成功執行了!
這代表:
瀏覽器 → Servlet → Java → 瀏覽器
這條路已經成功跑起來了。
⸻
Servlet 和我們的醫療系統有什麼關係?
現在可能會覺得:
「只是顯示 Hello,有什麼用?」
其實這只是第一步。
之後我們會把它變成:
病患資料表單
↓
Servlet
↓
Java 處理資料
↓
MySQL
↓
儲存病患資料
例如使用者填寫:
姓名:王小明
性別:男
出生日期:2005/01/01
電話:0912345678
按下「新增」之後,資料就會送到 Servlet。
Servlet 再把資料交給後端程式處理。
最後再寫入 MySQL。
這才是我們真正想完成的功能。
⸻
今天遇到的第一個問題
開始接觸 Java Web 後,我發現它和單純寫 HTML、CSS、JavaScript 有很大的不同。
以前只要把 .html 檔案打開,就可以看到網頁。
但是 Servlet 並不是直接點兩下 Java 檔案就能執行。
它需要透過 Web Server,例如 Tomcat,來接收瀏覽器的請求。
所以整個流程會變成:
瀏覽器
↓
Tomcat
↓
Servlet
↓
Java
這也是為什麼前面在準備開發環境時,需要先把 Tomcat 準備好。
⸻
今天的小結
今天正式跨進 Java Web 的世界。
第一次建立 Servlet,雖然目前只讓它顯示一段簡單的文字,但也代表我們的系統開始有了「後端」。
目前我們已經慢慢建立起:
HTML
↓
CSS
↓
JavaScript
↓
Java Servlet
接下來,我會開始讓前端網頁真正把資料傳給 Servlet。
下一篇就會來試試看:
如何讓 HTML 表單把使用者輸入的資料送到 Java 後端?
這樣距離真正的病患資料管理功能就更近一步了。
Day 9,完成!