当然可以,下面是《SpringMVC(看这一篇就够了)》的完整整理版内容,从基础原理到核心功能,适合初学者、开发者系统学习掌握。
✅ SpringMVC(看这一篇就够了)
🧠 一、什么是 SpringMVC?
SpringMVC 是 Spring Framework 提供的一套基于 Java 的 Web 框架 ,用于构建模块化、解耦、灵活的 Web 应用。 其核心设计遵循 MVC(Model-View-Controller)架构模式,常用于 RESTful API、网站后台等开发。
🧩 二、核心架构图(工作流程)
用户请求 → DispatcherServlet(前端控制器)
↓
HandlerMapping(处理器映射)
↓
Controller(控制器处理请求)
↓
Service/DAO(业务逻辑和数据访问)
↓
返回 ModelAndView
↓
ViewResolver(视图解析器)
↓
渲染 JSP/HTML 页面
🧰 三、SpringMVC 核心组件详解
组件名 作用 DispatcherServlet 前端控制器,请求分发核心 HandlerMapping 映射请求到对应的 Controller 方法 Controller 控制器,处理用户请求并返回数据或视图 ViewResolver 视图解析器,决定返回的视图位置(如 JSP) ModelAndView 封装模型数据 + 视图名称的对象 Interceptor 拦截器,处理请求前后逻辑(类似过滤器)
🛠 四、快速入门:Hello SpringMVC
1. 添加依赖(Maven)
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.31</version>
</dependency>
</dependencies>
2. 配置 web.xml(老项目)
<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>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3. 编写 Controller
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello(Model model) {
model.addAttribute("msg", "Hello SpringMVC");
return "hello";
}
}
4. 配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
5. 创建 JSP 页面(hello.jsp)
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<h2>${msg}</h2>
</body>
</html>
🧬 五、常用注解整理
注解 含义 @Controller
声明控制器类 @RequestMapping
请求路径映射(类/方法) @ResponseBody
返回 JSON 数据 @RequestParam
获取请求参数 @PathVariable
RESTful 参数绑定 @ModelAttribute
预处理表单模型数据 @RestController
@Controller + @ResponseBody
的简化版
📦 六、请求参数绑定与返回值处理
表单提交:
<form action="/user/add" method="post">
<input name="username">
<input name="age">
</form>
Java 对象接收:
public class User {
private String username;
private int age;
// getters/setters
}
@PostMapping("/user/add")
public String addUser(User user) {
// 自动封装表单数据到 User
return "success";
}
🔁 七、RESTful 风格支持
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") int id) { ... }
@PutMapping("/user") // 修改
@DeleteMapping("/user") // 删除
🧱 八、拦截器配置(Interceptor)
public class MyInterceptor implements HandlerInterceptor {
public boolean preHandle(...) {
System.out.println("前置处理");
return true;
}
}
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.xxx.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
📊 九、返回 JSON 的写法
@RestController
@RequestMapping("/api")
public class JsonController {
@GetMapping("/user")
public User getUser() {
return new User("Tom", 18);
}
}
需要依赖 Jackson:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
🚧 十、常见错误与排查
问题 原因 HTTP 404 请求地址无对应映射 405 Method Not Allowed 请求方法不匹配(GET/POST) 页面乱码 JSP 编码未设置 UTF-8 返回 JSON 是空白 缺少 Jackson 依赖 请求参数不生效 名字不一致或未映射字段
📚 十一、SpringMVC 实战建议
配合 Thymeleaf 或 Vue 做前后端分离
用注解替代 XML 配置(Spring Boot 中更推荐)
推荐使用 Spring Boot 来简化 SpringMVC 的配置过程
🎯 十二、SpringMVC 与 Spring Boot 区别
项目 SpringMVC Spring Boot 配置方式 XML/Java配置 零配置或注解 启动方式 依赖容器(如 Tomcat) 内嵌容器 推荐程度 一般 强烈推荐(生产标准)
📎 推荐学习路线
Java Web 基础(Servlet/JSP)
Spring IoC/AOP 理解
SpringMVC 控制器开发
集成 MyBatis、Redis、Thymeleaf
升级到 Spring Boot / Spring Cloud
发表回复