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: 学会将数据传递到视图的方法,使用
Model、ModelMap等对象。 - 视图解析器: 了解视图解析器的配置,将逻辑视图名称解析为实际视图。
6. 拦截器和过滤器:
- HandlerInterceptor: 学习如何配置和使用拦截器,对请求进行预处理和后处理。
- Filter: 了解如何配置过滤器,对请求和响应进行过滤操作。
7. 数据绑定和验证:
- 数据绑定: 了解Spring MVC如何进行数据绑定,将请求数据绑定到方法参数。
- 数据验证: 学会使用
@Valid和BindingResult进行数据验证。
8. RESTful风格的服务:
- RESTful风格: 了解如何设计和实现RESTful风格的服务,包括HTTP方法的使用、资源的表示等。
1. 如何开启注解处理器和适配器?
在Spring MVC中,要开启注解处理器和适配器,需要进行以下配置:
- 在XML配置文件中开启注解扫描:
xml
<context:component-scan base-package="com.example" />
这会告诉Spring扫描指定包下的类,查找带有@Controller、@Service等注解的类。
- 开启注解驱动:
xml
<mvc:annotation-driven />
这个配置项会开启注解处理器和适配器,使得Spring MVC能够识别和处理@RequestMapping等注解。
2. @PathVariable与@RequestParam的区别?
-
@PathVariable:
- 用于从URI模板中提取变量值,通常用于RESTful风格的请求。
- 在
@RequestMapping注解中使用,用于将URI模板中的变量映射到方法的参数上。
@GetMapping("/user/{userId}") public String getUser(@PathVariable String userId) { // 方法体 } -
@RequestParam:
- 用于从请求参数中获取值,通常用于普通的HTTP请求。
- 在
@RequestMapping注解中使用,将请求参数映射到方法的参数上。
@GetMapping("/user") public String getUser(@RequestParam String userId) { // 方法体 }
3. SpringMvc中有个类把视图和数据都合并的一起的叫什么?它有什么作用?
开启注解处理器和适配器:
在Spring MVC中,要开启注解处理器和适配器,需要进行以下配置:
- 在XML配置文件中开启注解扫描:
xmlCopy code
<context:component-scan base-package="com.example" />
这会告诉Spring扫描指定包下的类,查找带有@Controller、@Service等注解的类。
- 开启注解驱动:
xmlCopy code
<mvc:annotation-driven />
这个配置项会开启注解处理器和适配器,使得Spring MVC能够识别和处理@RequestMapping等注解。
@PathVariable与@RequestParam的区别:
-
@PathVariable:
- 用于从URI模板中提取变量值,通常用于RESTful风格的请求。
- 在
@RequestMapping注解中使用,用于将URI模板中的变量映射到方法的参数上。
javaCopy code @GetMapping("/user/{userId}") public String getUser(@PathVariable String userId) { // 方法体 } -
@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有哪些优点?
- 松散耦合: Spring MVC采用了松散耦合的设计,使得模型、视图和控制器能够独立开发和测试,降低了组件之间的耦合性。
- 灵活性: Spring MVC提供了丰富的配置选项,能够适应不同的应用需求,可以通过XML配置或注解配置。
- 强大的扩展性: Spring MVC是一个灵活且可扩展的框架,支持各种视图技术、处理器映射策略、异常处理策略等。
- 模块化: Spring MVC的组件都是模块化的,可以选择性地使用并集成到其他Spring模块中。
- 集成性: 易于集成其他Spring组件和框架,如Spring Boot、Spring Security等。
- 强大的数据绑定和验证支持: 提供了灵活的数据绑定和验证机制,简化了表单处理的过程。
6. SpringMvc的执行流程?
- 客户端发送请求: 请求被发送到前端控制器(DispatcherServlet)。
- 前端控制器处理请求: 前端控制器负责处理所有的请求,并将请求分发给适当的处理器(Controller)。
- 处理器执行: 处理器执行业务逻辑,产生一个Model对象(数据模型)和一个View名称(视图名称)。
- 模型和视图解析: 将Model对象和View名称交给视图解析器,解析出真正的View对象。
- 视图渲染: 视图负责将Model数据渲染到客户端,生成响应。
- 响应返回: 将生成的响应返回给客户端。
7. SpringMVC常用的注解有哪些?
- @Controller: 声明一个类为Spring MVC的控制器。
- @RequestMapping: 映射请求路径到方法,用于指定请求的URL和处理方法的关联关系。
- @RequestParam: 用于绑定请求参数到方法参数。
- @PathVariable: 用于从URI中提取模板变量的值。
- @ResponseBody: 表示方法返回的结果直接写入HTTP响应体中,通常用于返回JSON或XML数据。
- @ModelAttribute: 用于将方法返回的对象添加到模型中,供视图使用。
- @GetMapping、@PostMapping: 等用于简化常用HTTP方法的注解。
- @Valid、@ModelAttribute、BindingResult: 用于支持数据绑定和验证。