SpringMVC 基於 MVC 設計,註解驅動、鬆耦合、支持 REST,是主流 Web 框架。
<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>
<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>
value、method、params、headers 多條件組合。@RequestMapping("/delete/{id}") + @PathVariable("id") 綁定佔位符。@RequestParam:綁定查詢參數,required=false 可選。@RequestHeader:綁定請求頭。@CookieValue:綁定 Cookie。HttpServletRequest、HttpSession 等直接作為參數。Map/Model/ModelMap,返回時自動入模型。注意:@SessionAttributes 標註的屬性必須預先放入模型,否則拋 HttpSessionRequiredException。
InternalResourceViewResolver (JSP 默認)、ContentNegotiatingViewResolver (多視圖)。order 屬性控制優先級,數值越小優先級越高。redirect:success.jsp:客戶端重定向。forward:success.jsp:服務端轉發。領域模型 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 語義。
示例:GET /order/1 獲取、DELETE /order/1 刪除、PUT /order/1 更新、POST /order 新增。
參考:尚硅谷 SpringMVC 視頻、《Spring 學習之第一個 Spring MVC 程序》。