1、简述springmvc
- springmvc是一款web层框架,它是基于java实现了mvc的设计模式。将mvc的model、controller、view分离,将web层实现职责解耦
- 四大组件:DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResoler
- 工作流程:
1.用户的请求统一交由DispatcherServlet处理
2.DispatcherServlet将请求交由HandlerMapping获取请求映射,匹配该 请求的handler
3.DispatcherServlet调用HandlerAdapter处理handler请求,给前端返回一个modelAndView
4.DispatcherServlet调用ViewResoler视图解析器解析modelAndView,返回指定的view
5.DispatcherServlet对view进行渲染
6.DispatcherServlet将页面响应给用户
2、springmvc常用注解
类上:@RestController、@RequestMapping、@ResponseBody
方法上:@PostMapping、@GetMapping、@PutMapping、@DeleteMapping
参数上:@RequestBody、@RequestParam、@PathVariable
格式转换:@DateTimeFormat
3、使用springmvc如何完成文件上传
controller的方法参数使用MutipartFile接收。
4、springmvc的controller线程安全吗,怎么解决
不安全。
解决方式:桶spring的单例模式如何确保线程安全。
1.将controller定义成多例,不推荐
2.减少使用非静态变量,不太现实
3.定义ThreadLocal成员变量,将非静态的成员变量声明到ThreadLocal中,实现线程私有。
5、springmvc获得request,response,session的几种方式
1.controller方法的形参位置定义 :HttpServletRequest HttpServletResponse,HttpSession
2. 调用RequestContextHolder的方法getRequestAttributes()获取
3. 注入HttpServletRequest 、HttpServletResponse、HttpSession
6、springmvc怎么处理异常
第一种:实现 HandlerExceptionResolver 接口,重写接口中的方法
第二种(常用):自定义一个类,类上加@ControllerAdvice注解,类中定义的方法上加@ExceptionHandler注解,注解里写上捕捉的异常的class对象。
7、springmvc的拦截器
定义一个Bean对象,实现HandlerInterceptor接口,重写接口中的方法
8、过滤器和拦截器的区别
1.过滤器JavaWeb的三大组件之一,拦截器是springmvc的技术
2.过滤器实现的是Filter接口,拦截器实现的是HandlerInterceptor接口
3.过滤器的底层是函数回调,拦截器的底层是动态代理
4.过滤器过滤的是所有web的请求,拦截器拦截的是访问controller的请求。