SpringMVC 学习

时尚捕手 2019-06-18 ⋅ 7 阅读

1. 简介

SpringMVC 是基于 Java 的轻量级开源框架,用于构建基于 Web 的应用程序。它是 Spring 框架的一部分,提供了一种灵活的 MVC(Model-View-Controller)模式,可以方便地开发 Web 应用程序。本篇博客将介绍 SpringMVC 框架的基本概念、工作原理及常用功能。

2. 工作原理

在 SpringMVC 中,请求从浏览器发送到控制器(Controller),然后控制器根据请求的 URL 调用相应的方法来处理请求。处理完成后,控制器将结果封装为一个 ModelAndView 对象,并返回给前端视图(View)层进行展示。ViewResolver 将 ModelAndView 对象绑定到具体的视图模板上,最后渲染成 HTML 页面返回给浏览器。

SpringMVC 的工作流程如下:

  1. 客户端发送请求到 DispatcherServlet。
  2. DispatcherServlet 根据请求的 URL 调用相应的控制器的方法。
  3. 控制器处理请求并返回一个 ModelAndView 对象。
  4. ViewResolver 将 ModelAndView 对象绑定到实际的视图模板上。
  5. 视图模板渲染成最终的 HTML 页面。
  6. DispatcherServlet 返回 HTML 页面给客户端。

3. 基本概念

3.1 控制器(Controller)

控制器负责接收前端请求并处理。在 SpringMVC 中,控制器可以通过注解 @Controller 或实现 Controller 接口来定义。

@Controller
public class MyController {
    
    @RequestMapping("/home")
    public ModelAndView home() {
        ModelAndView modelAndView = new ModelAndView("home");
        // 处理逻辑
        return modelAndView;
    }
}

3.2 视图(View)

视图负责展示模型数据,并生成最终的 HTML 页面返回给客户端。在 SpringMVC 中,可以使用 JSP、Thymeleaf 等视图技术来渲染视图。

@Controller
public class MyController {
    
    @RequestMapping("/home")
    public String home(Model model) {
        // 处理逻辑
        model.addAttribute("message", "Hello, SpringMVC!");
        return "home";
    }
}

3.3 模型(Model)

模型用于封装数据,供视图使用。在 SpringMVC 中,可以使用 ModelModelAndView 对象来传递模型数据。

@Controller
public class MyController {
    
    @RequestMapping("/home")
    public String home(Model model) {
        // 处理逻辑
        model.addAttribute("message", "Hello, SpringMVC!");
        return "home";
    }
}

3.4 视图解析器(ViewResolver)

视图解析器负责将视图名称解析为具体的视图模板。在 SpringMVC 中,可以通过配置 InternalResourceViewResolver 来使用 JSP 视图解析器。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

4. 常用功能

4.1 URL 映射

使用 @RequestMapping 注解可以将请求的 URL 映射到相应的控制器方法上。

@Controller
public class MyController {
    
    @RequestMapping("/home")
    public String home() {
        // 处理逻辑
        return "home";
    }
}

4.2 请求参数绑定

SpringMVC 可以自动将请求参数绑定到控制器方法的参数上。

@Controller
public class MyController {
    
    @RequestMapping("/user")
    public String showUser(@RequestParam("id") int id, Model model) {
        // 处理逻辑
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "user";
    }
}

4.3 表单处理

SpringMVC 可以通过 @ModelAttribute 注解将表单数据绑定到实体对象上。

@Controller
public class MyController {
    
    @RequestMapping(value = "/user", method = RequestMethod.POST)
    public String createUser(@ModelAttribute("userForm") UserForm userForm) {
        // 处理逻辑
        userService.createUser(userForm);
        return "redirect:/userList";
    }
}

4.4 异常处理

SpringMVC 提供了异常处理机制,可以统一处理控制器方法中的异常。

@ControllerAdvice
public class ExceptionHandlerAdvice {

    @ExceptionHandler(Exception.class)
    public String handleException(Exception e, HttpServletRequest request) {
        // 处理异常逻辑
        return "error";
    }
}

5. 总结

本篇博客介绍了 SpringMVC 的基本概念、工作原理及常用功能。通过学习 SpringMVC,我们可以构建灵活、高效的 Web 应用程序。希望本篇博客能够帮助您更好地理解和使用 SpringMVC!


全部评论: 0

    我有话说: