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

SpringMVC 核心總結:從配置到 REST 實戰

     編輯:Java 綜合教學

SpringMVC 總結帖

SpringMVC 基於 MVC 設計,註解驅動、鬆耦合、支持 REST,是主流 Web 框架。

0. XML 配置

web.xml 配置 DispatcherServlet

<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/springmvc-servlet.xml</param-value>
  </init-param>
  <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

springmvc-servlet.xml 核心配置

<context:component-scan base-package="com.luoxn28"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="order" value="1"/>
  <property name="prefix" value="/"/>
  <property name="suffix" value=".jsp"/>
</bean>

1. @RequestMapping 請求映射

  • 類級別:提供初步 URL 前綴。
  • 方法級別:細分映射,支持 value、method、params、headers 多條件組合。
  • REST 風格:@RequestMapping("/delete/{id}") + @PathVariable("id") 綁定佔位符。

2. 請求參數綁定

  • @RequestParam:綁定查詢參數,required=false 可選。
  • @RequestHeader:綁定請求頭。
  • @CookieValue:綁定 Cookie。
  • POJO 自動匹配:屬性名與參數名一致自動填充,支持級聯。
  • Servlet 原生 API:HttpServletRequest、HttpSession 等直接作為參數。

3. 模型數據處理

  • ModelAndView:返回類型為 ModelAndView 時手動添加數據。
  • Map/Model:入參為 Map/Model/ModelMap,返回時自動入模型。
  • @SessionAttributes:將模型屬性存入 Session 共享。
  • @ModelAttribute:方法級(預先放入模型)與參數級(從模型獲取/綁定參數/放入模型)。

注意:@SessionAttributes 標註的屬性必須預先放入模型,否則拋 HttpSessionRequiredException。

4. 視圖與視圖解析器

  • Handler 返回 String/ModelAndView/View 均轉為 ModelAndView。
  • ViewResolver 解析邏輯視圖名為具體 View (JSP/Excel/JSON 等),實現解耦。
  • 常用解析器:InternalResourceViewResolver (JSP 默認)、ContentNegotiatingViewResolver (多視圖)。
  • order 屬性控制優先級,數值越小優先級越高。

重定向與轉發

  • redirect:success.jsp:客戶端重定向。
  • forward:success.jsp:服務端轉發。

5. REST 實戰示例

領域模型 Person,靜態集合模擬數據。Controller Rest 實現增刪改查:

@Controller @RequestMapping("/rest")
public class Rest {
    @RequestMapping("/persons") public String list(Map map) { ... }
    @RequestMapping(value="/person", method=POST) public String add(Person p, Map map) { ... }
    @RequestMapping(value="/person/{name}", method=DELETE) public String del(@PathVariable String name, Map map) { ... }
    @RequestMapping(value="/person/{name}", method=GET) public String update(@PathVariable String name, Map map) { ... }
}

前端 list.jsp 用隱藏表單 + _method=DELETE 模擬 DELETE 請求,配合 HiddenHttpMethodFilter 實現 REST 語義。

附:REST 核心概念

  • 資源:URI 唯一標識的實體。
  • 表現層:資源的具體呈現格式 (JSON/XML/HTML)。
  • 狀態轉化:HTTP 動詞 (GET/POST/PUT/DELETE) 驅動服務端狀態變更。

示例:GET /order/1 獲取、DELETE /order/1 刪除、PUT /order/1 更新、POST /order 新增。

參考:尚硅谷 SpringMVC 視頻、《Spring 學習之第一個 Spring MVC 程序》。

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