跳转到内容

Java Spring MVC

来自代码酷

Java Spring MVC[编辑 | 编辑源代码]

Spring MVC(Model-View-Controller)是 Spring Framework 提供的一个基于 Java 的 Web 框架,用于构建灵活、可扩展的 Web 应用程序。它实现了 MVC 设计模式,将应用程序逻辑分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。Spring MVC 提供了强大的配置选项、依赖注入(DI)和面向切面编程(AOP)支持,使其成为企业级 Java Web 开发的流行选择。

核心概念[编辑 | 编辑源代码]

MVC 架构[编辑 | 编辑源代码]

Spring MVC 遵循 MVC 设计模式,其工作流程如下:

graph TD A[客户端请求] --> B(DispatcherServlet) B --> C[HandlerMapping] C --> D[Controller] D --> E[Model] E --> F[ViewResolver] F --> G[View] G --> H[响应返回客户端]

  • DispatcherServlet:前端控制器,接收所有 HTTP 请求并分发给相应的处理器。
  • HandlerMapping:确定请求应由哪个控制器处理。
  • Controller:处理业务逻辑并返回模型数据。
  • ViewResolver:解析逻辑视图名称到实际视图(如 JSP、Thymeleaf)。
  • View:渲染模型数据并生成响应(如 HTML、JSON)。

主要组件[编辑 | 编辑源代码]

  • @Controller:标记类为控制器,处理 HTTP 请求。
  • @RequestMapping:映射 URL 到控制器方法。
  • Model:存储视图渲染所需的数据。
  • View:负责呈现模型数据。

基本示例[编辑 | 编辑源代码]

以下是一个简单的 Spring MVC 控制器示例:

@Controller
public class GreetingController {

    @RequestMapping("/greet")
    public String greet(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "greeting"; // 对应视图名称(如 greeting.jsp)
    }
}

输入:访问 /greet 输出:视图(如 JSP)显示 "Hello, Spring MVC!"

视图示例(JSP)[编辑 | 编辑源代码]

<!-- greeting.jsp -->
<html>
<head><title>Greeting</title></head>
<body>
    <h1>${message}</h1>
</body>
</html>

进阶功能[编辑 | 编辑源代码]

注解驱动开发[编辑 | 编辑源代码]

Spring MVC 支持多种注解简化开发:

  • @GetMapping / @PostMapping:限定 HTTP 方法。
  • @RequestParam:绑定请求参数。
  • @PathVariable:提取 URL 路径变量。
@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id, Model model) {
    model.addAttribute("user", userService.findById(id));
    return "userProfile";
}

数据绑定与验证[编辑 | 编辑源代码]

Spring MVC 支持自动将请求参数绑定到对象,并支持 JSR-303 验证:

@PostMapping("/register")
public String register(@Valid User user, BindingResult result) {
    if (result.hasErrors()) {
        return "registrationForm";
    }
    userService.save(user);
    return "redirect:/success";
}

实际应用场景[编辑 | 编辑源代码]

电商网站商品展示[编辑 | 编辑源代码]

1. 用户访问 /products。 2. 控制器查询数据库并返回商品列表。 3. 视图渲染为 HTML 页面。

@Controller
public class ProductController {
    @Autowired
    private ProductRepository repository;

    @GetMapping("/products")
    public String listProducts(Model model) {
        model.addAttribute("products", repository.findAll());
        return "productList";
    }
}

REST API 开发[编辑 | 编辑源代码]

Spring MVC 可构建 RESTful 服务,返回 JSON/XML:

@RestController
@RequestMapping("/api/users")
public class UserApiController {

    @GetMapping
    public List<User> getAllUsers() {
        return userService.findAll();
    }
}

配置方式[编辑 | 编辑源代码]

XML 配置[编辑 | 编辑源代码]

传统方式通过 web.xml 和 Spring 配置文件:

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

Java 配置[编辑 | 编辑源代码]

现代推荐方式,使用 @Configuration

@Configuration
@EnableWebMvc
@ComponentScan("com.example")
public class WebConfig implements WebMvcConfigurer {
    // 配置视图解析器等
}

性能优化[编辑 | 编辑源代码]

  • 使用 异步处理(@Async)提高并发能力。
  • 启用 缓存(@Cacheable)减少数据库访问。
  • 配置 静态资源处理 避免不必要的控制器调用。

总结[编辑 | 编辑源代码]

Spring MVC 提供了强大而灵活的方式来构建 Java Web 应用程序,适合从简单页面到复杂企业系统的开发。其注解驱动的方法和与 Spring 生态系统的无缝集成,使其成为 Java 开发者的首选框架之一。

模板:Stub