1 springMVC工作原理
1 用户发送请求 先到 DispatcherServlet
2 controller中地址在 HandlerMapping 中进行注册 DispatcherServlet在HandlerMapping中进行查找是否有web对应的handler
HandlerMapping 返回给 DispatcherServlet对应的 handler(Controller 内部方法的简称)
3 DispatcherServlet(CEO) 通过HandlerAdapter(经理) 调用 handler(Controller 内部方法的简称)
HandlerAdapter进行简化和适配参数 返回给 DispatcherServlet
4 如果要想渲染视图 就找视图解析器 ViewResolver 根据提供的地址 能快速找到视图
最终视图解析器返回试图 通过 DispatcherServlet 返回给前端.
2 拦截器和过滤器的区别
相似点:
拦截:拦截请求
过滤:拦截器或过滤器存在就是对请求进行统一处理
放行:对请求执行了必要操作后放行,让它访问原本想要访问的资源
不同点:
工作平台不同:
过滤器工作在Servlet容器中
拦截器工作在SpringMVC基础上
拦截的范围
过滤器:能够拦截到最大范围是整个web应用
拦截器:最大范围是整个SpringMVC负责的区域
Ioc容器的支持
过滤器:想得到ioc容器需要调用专门的工具方法,是间接的
拦截器:他自己就在ioc容器中,可以直接从ioc容器中装配组件,可以直接得到ioc容器的支持
3 理解启动Spring原理
单例:spring启动 -> 解析 xml -> 创建bean对象 ->bean保存到容器中 -> 随着容器的销毁而销毁
多例:spring启动 -> 解析xml -> 把解析出来的bean对象记录下来 -> 调用的时候创建bean对象
4 什么是spring
spring是一个容器 用来装bean的容器 管理bean的生命周期
5 什么是ioc
ioc就是控制反转,将管理bean的控制权 由程序员 转交给了 spring,由spring来管理对象
4 依赖注入的方式
spring通过set的方式进行属性依赖注入给对象
其中自动装配有两种模式
一种是autowire="byType" 是根据bean class与对象属性中的数据类型 进行寻找
一种是autowire="byName"是根据bean id 与对象属性名称 尽心匹配寻找
5 spring单例模式与多例模式
单例模式 在创建 bean的时候就初始化 无参构造
多例模式 在调用 bean的时候才初始化 无参构造
6 spring bean懒加载
开启懒加载的bean 只能在调用的时候 初始化 无参构造
7.spring默认异常处理
@Component
public class TestErrorAttributes extends DefaultErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {
//调用父类的方法,获取官方代码中,返回的key-value信息
Map<String, Object> map = super.getErrorAttributes(webRequest, options);
map.put("javasm_msg","自己的错误信息");
map.put("code",300);
map.put("message","自定义的信息");
return map;
}
}