Spring mvc框架-面试问题总结

框架面试问题

一、Springmvc

1、Spring mvc工作流程

Spring MVC框架主要由DispatcherServlet、处理器映射、控制器、视图解析器、视图组成,其工作原理如图 9.2所示。

从下图9.2可以总结出Spring MVC的工作流程如下:

  • 客户端请求提交到DispatcherServlet;
  • 由DispatcherServlet控制器寻找一个或多个 HandlerMapping,找到处理请求的Controller;
  • DispatcherServlet将请求提交到Controller;
  • Controller调用业务逻辑处理后返回ModelAndView;
  • DispatcherServlet寻找一个或多个ViewResolver视图解析器,找到 ModelAndView指定的视图;
  • 视图负责将结果显示到客户端。

在这里插入图片描述

2、创建Controller业务逻辑类(实现Controller接口和使用Controller注解)

在这里插入图片描述

3、注解

Controller注解类型(需要开启注解扫描)

在Spring MVC中使用org.springframework,stereotype.Controller注解声明某类的实例是一个控制器。
在这里插入图片描述

在Spring MVC中使用扫描机制找到应用中所有基于注解的控制器类,所以,为了让控制器被Spring MVC框架扫描到,需要在配置文件中声明spring-context,并使用< context:component-scan/>元素指定控制器类的基本包。

RequestMapping注解类型

在基于注解的控制器类中可以为每个请求编写对应的处理方法。那么如何将请求与处理方法一一对应昵?需要使用org.springframework.web.bind.annotation.RequestMapping注解类型将请求与处理方法一一对应。
使用RequestMapping注解将请求与处理方法一一对应。
在这里插入图片描述

4、Controller的参数类型(Servlet API、Model(键值Map)、实体等)

在许多实际项目需求中,后台要从控制层直接返回前端所需的数据,这时Model大家族就派上用场了。

如果需要在请求处理方法中使用Servlet API类型、,那么可以将这些类型作为请求处理方法的参数类型,Servlet API参数类型的示例代码如下
Servlet API、org.springframework.ui.Model、输入输出流、表单实体类、注解类型、与Spring框架相关的类型等

特别重要的类型是org.springframework.ui.Model类型,该类型是一个包含Map的Spring框架类型。在每次调 用请求处理方法时SpringMVC都将创建org.springframework.ui.Model对象。

5、Controller的返回值类型(String、ModelAndView、Model等)

最常见的返回类型就是代表逻辑视图名称的String类型,例如前面章节中的请求处理方法。除了String类型以外, 还有ModelAndView(例如第9章的传统控制器〉、 Model、View以及其他任意的Java类型。

ModelAndView是自己创建的,而Model不是自己创建的。

ModelAndView理解(自己创建)

通过ModelAndView构造方法可以指定返回的页面名称(逻辑视图名),也可以在初始化之后再通过mav.setViewName()方法跳转到指定的页面 , ModelAndView的实例是由用户手动创建的,这也是和ModelMap的一个区别。使用addObject()设置需要返回的值

6、接收参数的注解

通过@PathVariable接收URL中的请求参数

在这里插入图片描述在这里插入图片描述

@RequestParam接收请求参数(请求参数和接收参数参数名称要一致)

通过@RequestParam接收请求参数适用于get和post提交请求方式,可以将10.2.1节中控制器类 UserController中register 方法的代码修改如下:
在这里插入图片描述当请求参数与接收参数名不一致时,“通过处理方法的形参接收请求参数”不 会报404错误,而“通过@RequestParam接收请求参数”会报 404错误。

通过@ModelAttribute接收请求参数

在这里插入图片描述在这里插入图片描述

7、视图解析器

在这里插入图片描述

8、转发和重定向

在返回的String前面加forward:或者redirect:

9、RequestBody、ResponseBody

  • @RequestBody 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。
  • @ResponseBody 注解实现将 controller 方法返回对象转化为 json 响应给客户。
发布了105 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38367817/article/details/104698867