首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java Web 核心技術全景圖:從 Servlet/JSP 到 Spring MVC/Struts 架構演進

     編輯:Java 綜合教學

一篇文章串通 Java Web 核心知識體系:Servlet 容器、MVC 模式、框架本質、前後端交互

Java Web 技術棟樑林立,初學者易迷失。本文以「客戶端 ↔ 服務端交互」為主線,梳理 Servlet 容器、HTTP 協議解析、JSP/EL/JSTL、JavaScript/DOM/AJAX、MVC 架構演進(Struts → Spring MVC)、核心對象生命周期,構建完整知識地圖。

一、 核心架構:Servlet 容器與 HTTP 交互

  • Servlet 容器(Tomcat/Jetty/Undertow):管理 Servlet 生命周期、映射 URL、解析 HTTP 請求/響應、提供線程池。
  • HttpServletRequest:封裝請求行(Method/URL/參數)、請求頭、Cookie、Session、屬性作用域(Request/Session/Application)。
  • HttpServletResponse:設置狀態碼(2xx/3xx/4xx/5xx)、響應頭、Cookie、重定向 (sendRedirect)、輸出流。
  • Cookie/Session:會話跟蹤機制,SessionID 通过 Cookie 或 URL 重寫傳遞。

二、 前端三大支柱:HTML、CSS、JavaScript

技術角色核心 API/語法
HTML結構語義化標簽、表單、表格、iframe
CSS表現選擇器、盒模型、Flex/Grid、動畫、媒體查詢
JavaScript行為DOM 操作、事件、AJAX (fetch/axios)、ES6+、模塊化

DOM 將 HTML 文檔映射為對象樹,JS 通過 getElementById/querySelector 操作節點。

三、 AJAX:無刷新交互的靈魂

// jQuery 封裝
$.ajax({
    url: "/api/user/1",
    data: { id: 1 },
    success: function(resp) { $("#userName").text(resp.name); }
});

// 核心流程:創建 XMLHttpRequest → open() → send() → onreadystatechange 處理響應

四、 JSP:Servlet 的模板引擎形態

  • 本質:JSP 編譯為 HttpJspPage (Servlet 子類),_jspService 方法輸出 HTML。
  • 內置對象:request/response/session/application/out/pageContext/config/page/exception。
  • EL 表達式 ${user.name}、JSTL 標簽庫 <c:forEach> 替代 Scriptlet (<% %>),實現數據與展示分離。

五、 MVC 架構演進:從 Struts 到 Spring MVC

Struts 2 核心機制

  • Filter 入口:StrutsPrepareAndExecuteFilter 攔截所有請求。
  • Action 封裝數據:實現 ModelDriven 或屬性驅動,自動注入請求參數。
  • ActionContext:線程局部變量存儲 Request/Session/Application,脫離 Servlet API。
  • 攔截器鏈:params、validation、workflow 等攔截器嵌套調用,實現 AOP 風格橫切邏輯。

Spring MVC 核心機制

  • DispatcherServlet:前端控制器,統一入口,委派給 HandlerMapping → HandlerAdapter → Handler (Controller) → ViewResolver → View。
  • 註解驅動:@Controller、@RequestMapping、@PathVariable、@RequestBody、@ResponseBody,POJO 即 Controller。
  • REST 支持:URL 模板、HTTP 方法語義、內容協商 (JSON/XML)。
  • 父子容器: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>

七、 學習路線建議

  1. 精通 HTTP 協議(請求/響應結構、狀態碼、Header、Cookie、緩存、CORS)。
  2. 手寫 原生 Servlet/JSP 理解容器工作原理,體會框架解決的痛點。
  3. 掌握 Spring MVC 核心流程(九大組件、源碼級理解 DispatcherServlet)。
  4. 前端基礎:HTML/CSS/JS/ES6/Vue 或 React,理解前後端分離模式。
  5. 中間件:Tomcat 調優、Nginx 反向代理、Redis 緩存、MySQL 索引優化。

八、 總結

Java Web 的本質是基於 HTTP 協議的請求-響應模型。Servlet 容器提供運行環境,MVC 模式指導分層架構,框架封裝通用邏輯,前端技術賦能用戶體驗。透過現象看本質,才能在技術更迭中立於不敗之地。

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