Spring MVC 基礎包 + Servlet API + 日誌門面。
<servlet>
<servlet-name>dispatcherServlet</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>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
關鍵點:url-pattern 定義攔截範圍,contextConfigLocation 指定配置文件位置。
<context:component-scan base-package="com.demo.handler"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
視圖解析邏輯:prefix + viewName + suffix → /WEB-INF/views/hello.jsp
@Controller
public class HelloWorldHandler {
@RequestMapping("/hello")
public String hello() {
System.out.println("hello world...");
return "hello"; // 視圖名
}
}
訪問 https://localhost:8080/project/hello.action → 控制台輸出 "hello world..." → 頁面顯示 hello.jsp 內容。
| 核心問題域 | 關鍵技術點 |
|---|---|
| 原生 Servlet 資源獲取 | HttpServletRequest、HttpServletResponse、HttpSession 注入 |
| 請求映射 | @RequestMapping 六大屬性、RESTful 風格 |
| 參數綁定 | @RequestParam、@PathVariable、@RequestBody、對象自動綁定 |
| 模型數據傳遞 | Model、ModelMap、@ModelAttribute、@SessionAttributes |
| 數據格式化 | @DateTimeFormat、@NumberFormat、Formatter、ConversionService |
| 數據校驗 | JSR-303 @Valid、BindingResult、自定義 Validator |
| 返回值處理 | String、ModelAndView、@ResponseBody、ResponseEntity、異步 Callable/DeferredResult |
| 視圖渲染 | JSP、Thymeleaf、FreeMarker、內容協商 ViewResolver 鏈 |
| 防重複提交 | Token 模式、@RequestMapping(method=POST) + Session 驗證 |
| 文件上傳/下載 | MultipartFile、MultipartResolver、大文件斷點續傳 |
| 運行流程與生命週期 | DispatcherServlet → HandlerMapping → HandlerAdapter → HandlerInterceptor → ViewResolver |
按上表 11 大問題域逐個攻克,理解 DispatcherServlet 核心流程,掌握擴展點(HandlerInterceptor、HandlerMethodArgumentResolver、HandlerMethodReturnValueHandler 等),才能真正駕馭 Spring MVC。