SpringMVC还能难倒我们,复习复习知识点儿

「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战


1. 概述

1.1 SpringMVC你是如何理解的?

SpringMVC是一个轻量级的Web框架,通过模型-视图-控制器三层架构,对前端页面渲染和后端数据处理进行分离,实现解耦,提高开发效率和可维护性。


2. 核心组件

2.1 SpringMVC包含了哪些核心组件?

  1. 前端控制器(dispatchServlet),接受请求,响应结果,相当于转发器,具有分发功能
  2. 处理器映射器(handlerMapping),根据URL来寻找Handler
  3. 处理器适配器(handlerAdapter),执行Handler,进行业务处理
  4. 处理器(handler),需要我们自己开发,也就是Controller中的方法
  5. 视图解析器(ViewResolver),进行视图解析,根据视图逻辑解析成真正的视图
  6. 视图(view):需要我们自己开发页面

2.2 工作原理

在这里插入图片描述

  1. 用户发送请求经过DispatcherServlet
  2. DispatcherServlet发送请求给HandlerMapping,委托查找Handler
  3. HandlerMapping会根据url,返回HandlerExecutionChain对象
  4. DispatcherServlet发送HandlerExecutionChain对象给HandlerAdapter
  5. HandlerAdapter找到对应的Controller方法,也就是Handler,在其中对业务进行处理
  6. 返回ModelAndView对象给HandlerAdapter
  7. HandlerAdapter将ModelAndView发送给DispatcherServlet
  8. DispatcherServlet会将ModelAndView发送给ViewResolver,进行视图解析
  9. 解析完成后,返回真正的视图View
  10. DispatcherServlet响应用户的请求

3. 常用注解

3.1 Spring MVC常用的注解有哪些?

  • @RequestMapping:用于类和方法上,标注处理请求的路径,其中value属性用来指定URL地址,method指定请求类型,GET、POST、PUT、DELETE等
  • @ResponseBody:将对象转换为Json字符串
  • @RequestBody:将Json字符串转换给Java对象
  • @RestController:相当于@ResponseBody + @Controller
  • @PathVariable:实现RestFul风格时用的注解,能够在URL地址值中,获取变量值
@RequestMapping(value = "/page/{id}",value = RequestMethod.GET)
public String test(@PathVariable int id){
	...
}
复制代码

3.2 @RequestParam注解的作用

从前端传过来的Request中获取参数,标注在方法的形参上

public String test01(@RequestParam(value = "id") int id)
复制代码

3.3 @Controller注解的作用

@Controller标记在类上,被它标记的类就是Spring MVC中的Controller对象。能够对请求进行处理,返回ModelAndView对象。


4. 面试问题

4.1 Spring MVC如何实现重定向和转发

  1. 转发:在返回值前加上“forward”
  2. 重定向:在返回值前加上“redirect”

4.2 异常处理

我们可以自己定义一个全局异常处理器,用@ControllerAdvice修饰处理器和@ExceptionHandler修饰方法。 Java秒杀系统方案优化 高性能高并发实战,学习手记(二)

4.3 如何获得从前端传过来的参数?

直接在形参里声明这个参数,但是名字与传过来参数的名字必须保持一致

4.4 说说WebApplicationContext

WebApplicationContext:继承自ApplicationContext的一个接口,对ApplicationContext进行了扩展,它是为web开发准备的,它允许从相对于Web根目录的路径中装载配置文件完成初始化。它新增了作用域:reques/session/global session。它的实现类有XMLWebApplicationContextAnnotationConfigWebApplicationContext

猜你喜欢

转载自juejin.im/post/7035062241288421407