SpringMVC 14道题

  • 1. springmvc工作流程
  • 2. springmvc的四大组件
  • 3. springmvc常用的注解,每个注解的作⽤
  • 4. springmvc参数绑定方式
  • 5. springmvc如何即可以响应xml又可以响应json(早期)
  • 6. 使用springmvc如何完成文件上传
  • 7. springmvc和spring父子容器关系
  • 8. 什么是restful风格
  • 9. springmvc支持restful风格吗?有哪些注解
  • 10.springmvc获得--request,response,session⼏种⽅式
  • 11. 注解方式springmvc使用的是那个HandlerMapping,HandlerAdapter
  • 12. springmvc怎么处理异常
  • 13. springmvc拦截器怎么使用
  • 14. 拦截器和过滤器的区别


1. springmvc工作流程

https://www.bilibili/video/BV15b4y117RJ?p=160


2. springmvc的四大组件


3. springmvc常用的注解,每个注解的作⽤


4. springmvc参数绑定方式

SpringMVC接受前端传递的参数,经过【类型转化】,将参数封装到【Controller方法的形参】;
前端传递不同格式的参数,需要在Controller方法中定义不同的类型的形参进行参数绑定;


5. springmvc如何即可以响应xml又可以响应json(早期)


6. 使用springmvc如何完成文件上传


7. springmvc和spring父子容器关系

SpringMVC+Spring这种开发模式的时候,会有两个容器
SpringMVC容器管理,controller,Handlermapping,ViewResolver
Spring容器管理,service,datasource,mapper,dao
Spring容器是父容器,SpringMVC容器是子容器
子容器可以访问父容器上面的资源,所以我们会在看Controller可以注入Service


8. 什么是restful风格


9. springmvc支持restful风格吗?有哪些注解

@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
@PathVariable
@RequestBody
@ResponseBody


10.springmvc获得–request,response,session⼏种⽅式

在Controller方法的形参中可以直接定义HttpServletRequest HttpServletResponse,HttpSession
SpringMVC框架如何发现Controller方法定义了以上三个形参,在调用的时候,会自动传递;
方式2:
通过RequestContextHolder中的静态方法来获取
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
方式3
注入HttpServletRequest HttpServletResponse,HttpSession


11. 注解方式springmvc使用的是那个HandlerMapping,HandlerAdapter

处理器映射器是springmvc中的一个组件,其作用是根据url获取Handler,spring中定义HandlerMapping接口,该接口有很多实现类其中RequestMappingHandlerMapping
处理器适配器是springmvc中的一个组件,其作用是执行Handler,spring中定义HandlerAdapter接口,该接口有很多实现类其中RequestMappingHandlerAdapterf6310e8471e9ceb92395434b45c.png)


12. springmvc怎么处理异常

全局异常处理器
方式1:实现 HandlerExceptionResolver 接口
方式2: @Controlleradvice + @ ExceptionHandler 注解


13. springmvc拦截器怎么使用

1.自定义拦截器,实现HandlerInterceptor接口
2.springmvc配置文件|配置类中配置


14. 拦截器和过滤器的区别

1.实现原理不同
过滤器和拦截器 底层实现方式大不相同,过滤器 是基于函数回调的,拦截器 则是基于Java的反射机制(动态代理)实现的
2.使用范围不同
过滤器实现的是 javax.servlet.Filter 接口,而这个接口是在Servlet规范中定义的,也就是说过滤器Filter 的使用要依赖于Tomcat等容器,导致它只能在web程序中使用
3.触发时机不同
过滤器Filter是在请求进入tomcat服务器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后。
拦截器 Interceptor 是在请求进入servlet后,在进入Controller之前进行预处理的,Controller 中渲染了对应的视图之后请求结束
4.拦截范围不同
过滤器几乎可以对所有进入Tomcat的请求起作用
而拦截器只会对Controller中请求或访问static目录下的资源请求起作用

更多推荐

框架之SpringMVC面试题