试卷总分:100 及格分:60 平均分:70.68 得分:87
1.谈谈对Spring的IoC/DI的理解
我的答案:(满分10分,得分10分)
IoC:控制反转,是一种思想.以前写程序都是由我们自己创建对象,而IoC思想是将创建对象的任务交给IoC容器.当我们需要对象的时候,直接从IoC容器中取就可以了.
DI:依赖注入,其实IoC跟DI算是同一个东西,DI就是为对象的字段注入值.
答案解析:
SpringIoC和DI是同一个概念不同角度的描述.IoC强调对象的创建的权利由Spring完成,DI强调对象的属性由Spring自动的注入值.
个人批注:老师重点讲解的内容,我一般都能记得住,感觉重要的是理解,也不用强行背.
2.SpringMVC中,forward和redirect字符串的作用
我的答案:(满分10分,得分8分)
1.forward就是转发到某个页面
2.redirect就是重定向到某个页面
答案解析:
两个字符串的共同功能是使视图解析器的前缀和后缀不再生效.forward的作用是以请求转发的方式跳转到视图页面,redirect是以重定向的方式跳转到视图页面
老师批注:两个字符串的共同功能是使视图解析器的前缀和后缀不再生效
个人批注:这个题的确是我疏忽,老师上课的时候详细讲过,还举了例子.就是第一反应吧,看到forward和redirect就想到转发和重定向,然后没想太多.要是做题仔细,应该也能写全.
3.@Autowired注解给字段注入值时从容器中获取对象的顺序
我的答案:(满分10分,得分10分)
1.首先,通过对象的类型寻找,如果找到,就使用setter方法为字段注入值.如果没找到就报错.
2.如果找到多个同类型的,就使用@Qualifier注解,确定找的是哪一个.找到就使用setter方法为字段注入值,没找到就报错.
答案解析:
首先按照字段的类型获取,如果没有类型,则会抛出异常.如果有一个匹配的类型就会直接注入;如果有多个匹配的类型,则再寻找名为为字段名的对象.如果能找到则直接注入,如果没有匹配的名字怎抛出异常
个人批注:这个题还可以,凡是老师讲过的重点,我基本上都有认真的理解过.
4.静态代理和动态代理的区别
我的答案:(满分10分,得分10分)
静态代理是在程序编译时期就已经确定了代理类和真实角色的关系.有源文件.
动态代理是在程序运行时期,依靠反射,动态的创建真实角色的代理类,生成字节码文件,运行.是没有源文件的.
答案解析:
静态代理是在程序运行之前就已经存在了代理对象的字节码,目标对象和代理对象的关系是在程序运行之前就已经确定了.
动态代理是在程序运行之前没有代理对象的字节码,字节码是在程序运行期间有JVM动态的生成.代理对象和被代理对象的关系是在程序运行时才确定了的.
个人批注:这块也认真研究过,没什么难度
5.使用SpringMVC框架响应一个JSON对象的开发步骤.(前端控制器,Controller控制器已经配置完成)
我的答案:(满分10分,得分8分)
1.导入jackson依赖
2.在Controller控制器中添加JSON的注解
3.返回一个对象类型(加完注解,直接返回的就是JSON格式)
答案解析:
1.导入jackson的依赖
2.创建返回对象的方法,并标注@RequestMapping,指定方法的访问路径
3.方法上标注@ResponseBody注解.
老师批注:@ResponseBody注解
个人批注:其实我当时写的时候是想写出JSON注解的,然后忘了那个注解叫啥了,妈呀幸好没写,扣了两分,要是写了估计就扣五分了.哈哈哈哈
6.Spring的AOP的理解?
我的答案:(满分10分,得分10分)
Spring的AOP是一种面向切面编程的思想.由于我们写代码的时候,会出现很多重复代码,例如事务控制,日志管理等.每一个模块中都需要,但是这些模块可能毫无关系.无法抽象出一个父类,去避免书写过多重复代码.而AOP解决了这个问题,切面的思想,使得即便各个模块毫无关系,也可以通过配置文件或者注解的方式,为这些模块加上相应的增强,如事务控制,日志管理安全控制等.
答案解析:
AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。Spring AOP使用的动态代理实现。
7.SpringMVC的流程?
我的答案:(满分10分,得分10分)
1.用户发送请求给前端控制器
2.前端控制器调用处理器映射器,处理器映射器找到相应的映射,生成处理器对象,并返回给前端控制器.
3.前端控制器调用处理器适配器,并将处理器对象传过去.处理器适配器找到相应的处理器,进行处理.并返回一个ModelAndView对象给前端控制器.
4.前端控制器调用视图解析器,视图解析器解析ModelAndView,并返回给前端控制器.
5.ModelAndView进行渲染,数据填充
6.前端控制器,将渲染后的页面响应给用户
答案解析:
1.用户发送请求至前端控制器DispatcherServlet;
2.DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取
Handle;
3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果
有则生成)一并返回给DispatcherServlet;
4.DispatcherServlet 调用 HandlerAdapter处理器适配器;
5.HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);
6.Handler执行完成返回ModelAndView;
7.HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;
8.DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;
9.ViewResolver解析后返回具体View;
10.DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
11.DispatcherServlet响应用户。
8.有哪些不同类型的IoC(依赖注入)方式?
我的答案:(满分10分,得分4分)
1.属性注入
2.集合注入
3.对象注入
答案解析:
1.构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。
2.Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方
法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
个人批注:我是个憨憨,我理解错题意了,emmm反正就是方向错了,然后这个错了,那个也错了
9.SpringMVC怎么和前端AJAX交互的?
我的答案:(满分10分,得分7分)
1.AJAX发送请求到前端控制器,
2.前端控制器通过处理器映射器找到相应的处理器,
3.然后调用处理器适配器,处理器适配器找到相应的处理器
4.接收传过来的参数,并对其进行处理,将结果转为JSON对象返回给前端控制器
5.前端控制器将数据响应给AJAX
6.AJAX完成数据的局部刷新
答案解析:
通过 jackson 框架就可以把 java 里面的对象直接转化成 js 可以识别的 json 对象具体步骤如下 :
1.加入jackson相关依赖
2.在接受 Ajax 方法里面可以直接返回 Object,List 等,但方法前面要加上@ResponseBody注解
个人批注:我感觉我大致理解这个东西,就是写的时候,有点儿emmm乱七八糟
10.写出Spring常用注解5个
我的答案:(满分10分,得分10分)
1.@Component
2.@Repository
3.@Controller
4.@Service
5.@Autowired
答案解析:
@Service、@Repository、@Controller、 @Autowired、@Resource任意五个即可
个人批注:太棒了,我常用的刚好五个哈哈哈哈哈
本次考试总结:
我爱学习,学习爱我,耶!