Java Web 技術棟樑林立,初學者易迷失。本文以「客戶端 ↔ 服務端交互」為主線,梳理 Servlet 容器、HTTP 協議解析、JSP/EL/JSTL、JavaScript/DOM/AJAX、MVC 架構演進(Struts → Spring MVC)、核心對象生命周期,構建完整知識地圖。
sendRedirect)、輸出流。| 技術 | 角色 | 核心 API/語法 |
|---|---|---|
| HTML | 結構 | 語義化標簽、表單、表格、iframe |
| CSS | 表現 | 選擇器、盒模型、Flex/Grid、動畫、媒體查詢 |
| JavaScript | 行為 | DOM 操作、事件、AJAX (fetch/axios)、ES6+、模塊化 |
DOM 將 HTML 文檔映射為對象樹,JS 通過 getElementById/querySelector 操作節點。
// jQuery 封裝
$.ajax({
url: "/api/user/1",
data: { id: 1 },
success: function(resp) { $("#userName").text(resp.name); }
});
// 核心流程:創建 XMLHttpRequest → open() → send() → onreadystatechange 處理響應
HttpJspPage (Servlet 子類),_jspService 方法輸出 HTML。request/response/session/application/out/pageContext/config/page/exception。${user.name}、JSTL 標簽庫 <c:forEach> 替代 Scriptlet (<% %>),實現數據與展示分離。StrutsPrepareAndExecuteFilter 攔截所有請求。ModelDriven 或屬性驅動,自動注入請求參數。params、validation、workflow 等攔截器嵌套調用,實現 AOP 風格橫切邏輯。@Controller、@RequestMapping、@PathVariable、@RequestBody、@ResponseBody,POJO 即 Controller。ContextLoaderListener 啟動業務層容器 (Service/DAO);DispatcherServlet 啟動 Web 層容器 (Controller/ViewResolver),Web 容器可引用業務容器 Bean。// web.xml (Spring MVC)
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param>
</servlet>
<servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
// spring-mvc.xml
<context:component-scan base-package="com"/>
<mvc:annotation-driven/>
<mvc:resources mapping="/static/**" location="/static/"/> <!-- 靜態資源 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
Java Web 的本質是基於 HTTP 協議的請求-響應模型。Servlet 容器提供運行環境,MVC 模式指導分層架構,框架封裝通用邏輯,前端技術賦能用戶體驗。透過現象看本質,才能在技術更迭中立於不敗之地。