我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Spring MVC(Model-View-Controller)是 Spring 框架 提供的 基于 Java 的 Web 框架,用于构建 可扩展、可维护的 Web 应用

它基于 MVC 设计模式,将应用逻辑分离为 模型(Model)、视图(View)和控制器(Controller),使代码更清晰、易于维护。

 


 

Spring MVC 主要组件

 

1. DispatcherServlet(前端控制器)

作用:拦截所有 HTTP 请求,并将其分发给相应的处理器(Controller)。

位置:在 web.xml 或 SpringBootApplication 启动类中配置。

 

2. Controller(控制器)

作用:接收用户请求,调用 Service 处理业务逻辑,并返回数据或视图。

注解:使用 @Controller 或 @RestController 标注。

@RestController
@RequestMapping("/hello")
public class HelloController {
    @GetMapping
    public String sayHello() {
        return "Hello, Spring MVC!";
    }
}

3. Model(模型)

作用:负责存储和处理数据,可以是 Java 对象,也可以是数据库实体。

传递方式:Model、ModelMap、ModelAndView

@Controller
@RequestMapping("/user")
public class UserController {
    @GetMapping("/info")
    public String getUserInfo(Model model) {
        model.addAttribute("username", "Hannah");
        return "userInfo";  // 渲染 userInfo.jsp / userInfo.html
    }
}

4. View(视图)

作用:负责显示数据,支持 JSP、Thymeleaf、Freemarker 等模板引擎。

返回方式

直接返回视图名称(return "viewName";)。

@ResponseBody 直接返回 JSON 数据(适用于 @RestController)。

 

5. ViewResolver(视图解析器)

作用:将 Controller 返回的逻辑视图名解析为具体的视图页面。

示例:配置 Thymeleaf 解析器:

@Bean
public ViewResolver viewResolver() {
    ThymeleafViewResolver resolver = new ThymeleafViewResolver();
    resolver.setTemplateEngine(templateEngine());
    resolver.setCharacterEncoding("UTF-8");
    return resolver;
}

 

 

6. HandlerMapping(处理器映射器)

作用:根据请求 URL,找到对应的 Controller 方法。

 

7. Interceptor(拦截器)

作用:拦截请求,执行 权限验证、日志记录 等逻辑。

public class AuthInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        System.out.println("请求被拦截!");
        return true;  // 返回 false 拦截请求
    }
}

 

 


 

Spring MVC 处理流程

1. 用户请求 → DispatcherServlet

2. 找到对应的 ControllerHandlerMapping

3. 执行 Controller 方法(调用 Service 层处理业务)

4. 返回 Model 数据(或 JSON)

5. 视图解析器渲染 View

6. 返回 HTTP 响应

 


 

Spring MVC 与 Spring Boot

Spring MVC:传统 XML 或 Java 配置,手动配置 DispatcherServlet、视图解析器等。

Spring Boot:简化配置,使用 @SpringBootApplication 自动配置 Spring MVC。

 

posted on 2025-04-05 00:17  我就是奇迹  阅读(23)  评论(0)    收藏  举报