SpringMVC框架

221 阅读6分钟

1. 了解Spring MVC的基本概念:

  • 模型-视图-控制器(MVC): 理解Spring MVC是基于MVC设计模式的框架,通过模型、视图和控制器的组织方式来构建Web应用。
  • 前端控制器: 了解DispatcherServlet作为前端控制器,负责接收所有请求并将其分派给相应的处理器。

2. 学习Spring MVC的配置方式:

  • XML配置: 了解通过XML配置文件配置Spring MVC,包括映射处理器、适配器、视图解析器等。
  • 注解配置: 学习使用注解配置Spring MVC,包括@Controller@RequestMapping等注解的使用。
  • Java配置: 了解使用Java配置类配置Spring MVC,取代XML配置的一种方式。

3. 掌握请求映射和处理:

  • @RequestMapping注解: 学会使用@RequestMapping注解映射请求路径到处理方法。
  • 路径变量: 了解@PathVariable注解,用于提取URI中的变量。
  • 请求参数: 使用@RequestParam注解处理请求参数。

4. 处理方法的参数和返回值:

  • 方法参数: 学习如何通过方法参数接收请求数据,包括请求参数、路径变量、请求体等。
  • 返回值: 了解处理方法的返回值类型,包括视图名称、ModelAndView、字符串、JSON数据等。

5. 模型和视图:

  • Model和ModelMap: 学会将数据传递到视图的方法,使用ModelModelMap等对象。
  • 视图解析器: 了解视图解析器的配置,将逻辑视图名称解析为实际视图。

6. 拦截器和过滤器:

  • HandlerInterceptor: 学习如何配置和使用拦截器,对请求进行预处理和后处理。
  • Filter: 了解如何配置过滤器,对请求和响应进行过滤操作。

7. 数据绑定和验证:

  • 数据绑定: 了解Spring MVC如何进行数据绑定,将请求数据绑定到方法参数。
  • 数据验证: 学会使用@ValidBindingResult进行数据验证。

8. RESTful风格的服务:

  • RESTful风格: 了解如何设计和实现RESTful风格的服务,包括HTTP方法的使用、资源的表示等。

1. 如何开启注解处理器和适配器?

在Spring MVC中,要开启注解处理器和适配器,需要进行以下配置:

  1. 在XML配置文件中开启注解扫描:
xml
<context:component-scan base-package="com.example" />

这会告诉Spring扫描指定包下的类,查找带有@Controller@Service等注解的类。

  1. 开启注解驱动:
xml
<mvc:annotation-driven />

这个配置项会开启注解处理器和适配器,使得Spring MVC能够识别和处理@RequestMapping等注解。

2. @PathVariable与@RequestParam的区别?

  1. @PathVariable:

    • 用于从URI模板中提取变量值,通常用于RESTful风格的请求。
    • @RequestMapping注解中使用,用于将URI模板中的变量映射到方法的参数上。
    @GetMapping("/user/{userId}")
    public String getUser(@PathVariable String userId) {
        // 方法体
    }
    
  2. @RequestParam:

    • 用于从请求参数中获取值,通常用于普通的HTTP请求。
    • @RequestMapping注解中使用,将请求参数映射到方法的参数上。
    @GetMapping("/user")
    public String getUser(@RequestParam String userId) {
        // 方法体
    }
    

3. SpringMvc中有个类把视图和数据都合并的一起的叫什么?它有什么作用?

开启注解处理器和适配器:

在Spring MVC中,要开启注解处理器和适配器,需要进行以下配置:

  1. 在XML配置文件中开启注解扫描:
xmlCopy code
<context:component-scan base-package="com.example" />

这会告诉Spring扫描指定包下的类,查找带有@Controller@Service等注解的类。

  1. 开启注解驱动:
xmlCopy code
<mvc:annotation-driven />

这个配置项会开启注解处理器和适配器,使得Spring MVC能够识别和处理@RequestMapping等注解。

@PathVariable与@RequestParam的区别:

  1. @PathVariable:

    • 用于从URI模板中提取变量值,通常用于RESTful风格的请求。
    • @RequestMapping注解中使用,用于将URI模板中的变量映射到方法的参数上。
    javaCopy code
    @GetMapping("/user/{userId}")
    public String getUser(@PathVariable String userId) {
        // 方法体
    }
    
  2. @RequestParam:

    • 用于从请求参数中获取值,通常用于普通的HTTP请求。
    • @RequestMapping注解中使用,将请求参数映射到方法的参数上。
    javaCopy code
    @GetMapping("/user")
    public String getUser(@RequestParam String userId) {
        // 方法体
    }
    

SpringMvc中的类合并视图和数据:

在Spring MVC中,有一个名为ModelAndView的类,用于将视图名称和模型数据一起传递到视图。ModelAndView是一个持有模型数据和视图名称的容器。

@Controller
public class MyController {

    @GetMapping("/example")
    public ModelAndView example() {
        ModelAndView modelAndView = new ModelAndView("exampleView"); // 视图名称
        modelAndView.addObject("dataKey", "someData"); // 模型数据
        return modelAndView;
    }
}

在上述例子中,exampleView是视图的名称,而dataKey是传递到视图的模型数据。ModelAndView的作用是封装了视图和模型,便于在控制器中同时处理视图和数据的情况。

4. 什么是SpringMvc?

Spring MVC(Model-View-Controller)是Spring框架的一个模块,用于构建基于Java的Web应用程序。它提供了一种设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。Spring MVC遵循前端控制器模式,通过中央控制器来处理请求和调度相应的处理器(Controller)。

5. SpringMvc有哪些优点?

  1. 松散耦合: Spring MVC采用了松散耦合的设计,使得模型、视图和控制器能够独立开发和测试,降低了组件之间的耦合性。
  2. 灵活性: Spring MVC提供了丰富的配置选项,能够适应不同的应用需求,可以通过XML配置或注解配置。
  3. 强大的扩展性: Spring MVC是一个灵活且可扩展的框架,支持各种视图技术、处理器映射策略、异常处理策略等。
  4. 模块化: Spring MVC的组件都是模块化的,可以选择性地使用并集成到其他Spring模块中。
  5. 集成性: 易于集成其他Spring组件和框架,如Spring Boot、Spring Security等。
  6. 强大的数据绑定和验证支持: 提供了灵活的数据绑定和验证机制,简化了表单处理的过程。

6. SpringMvc的执行流程?

  1. 客户端发送请求: 请求被发送到前端控制器(DispatcherServlet)。
  2. 前端控制器处理请求: 前端控制器负责处理所有的请求,并将请求分发给适当的处理器(Controller)。
  3. 处理器执行: 处理器执行业务逻辑,产生一个Model对象(数据模型)和一个View名称(视图名称)。
  4. 模型和视图解析: 将Model对象和View名称交给视图解析器,解析出真正的View对象。
  5. 视图渲染: 视图负责将Model数据渲染到客户端,生成响应。
  6. 响应返回: 将生成的响应返回给客户端。

7. SpringMVC常用的注解有哪些?

  1. @Controller: 声明一个类为Spring MVC的控制器。
  2. @RequestMapping: 映射请求路径到方法,用于指定请求的URL和处理方法的关联关系。
  3. @RequestParam: 用于绑定请求参数到方法参数。
  4. @PathVariable: 用于从URI中提取模板变量的值。
  5. @ResponseBody: 表示方法返回的结果直接写入HTTP响应体中,通常用于返回JSON或XML数据。
  6. @ModelAttribute: 用于将方法返回的对象添加到模型中,供视图使用。
  7. @GetMapping、@PostMapping: 等用于简化常用HTTP方法的注解。
  8. @Valid、@ModelAttribute、BindingResult: 用于支持数据绑定和验证。