第三阶段第二周考试题

第三阶段第二周考试题

1.谈谈对Spring的IoC/DI的理解

我的答案:(满分10分,得分10分)

IOC:是反转控制,或者控制反转的意思,正控的话就是自己创建所需要的对象,而反转控制,就是把创建对象交给Spring容器来创建,像那些共同的代码,例如事务处理,日志文件等也交给Spring容器管理,这样既降低了代码的耦合度,也简化开发,提高代码的复用性.

DI:依赖注入的意思,我们可以通过依赖注入为对象的属性进行注入值,可以通过XML形式和对象的setter方法,在Spring的核心配置文件中为对象的属性赋值,这时该对象的实体类中必须也有对应的setter方法,也可以通过注解的方式为属性进行赋值,这时只需在Spring核心配置文件中添加扫描器,并在实现类中添加注解,此时不需要在xml文件中配置属性的值,也不需要设置setter方法

 

答案解析:

SpringIoC和DI是同一个概念不同角度的描述.IoC强调对象的创建的权利由Spring完成,DI强调对象的属性由Spring自动的注入值. 

 

2.SpringMVC中,forward和redirect字符串的作用

我的答案:(满分10分,得分10分)

forward:是请求转发,可以请求转发到目标视图,并获取到request作用域中的值,地址栏不会发生改变,不可以重定向到WEB-INF下的j文件中

redirect:是重定向,可以重定向到视图,虽然不可以获取到request作用域中的值,但是可以重定向到WEB-INF下的j文件中,地址栏发生改变

答案解析:

两个字符串的共同功能是使视图解析器的前缀和后缀不再生效.forward的作用是以请求转发的方式跳转到视图页面,redirect是以重定向的方式跳转到视图页面

老师批注:两个字符串的共同功能是使视图解析器的前缀和后缀不再生效 

3.@Autowired注解给字段注入值时从容器中获取对象的顺序

我的答案:(满分10分,得分10分)

首先根据对象的类型去找,默认的对象名是类的首字母小写,如果找到了就直接注入,如果找不到,再根据名字去找,相当于通过类型+id去找,找到了就注入,找不到报错

答案解析:

首先按照字段的类型获取,如果没有类型,则会抛出异常.如果有一个匹配的类型就会直接注入;如果有多个匹配的类型,则再寻找名为为字段名的对象.如果能找到则直接注入,如果没有匹配的名字怎抛出异常 

 

4.静态代理和动态代理的区别

我的答案:(满分10分,得分10分)

静态代理是在编译时就确定代理角色和真实角色的关系

静态代理为每一个类都创建一个代理对象,代码冗余量大,而且耦合度较高

 

动态代理是在运行时才确定代理角色和真实角色的关系;

动态代理中必须实现接口

动态代理为每一个类动态的创建代理对象,降低代码的耦合度

答案解析:

静态代理是在程序运行之前就已经存在了代理对象的字节码,目标对象和代理对象的关系是在程序运行之前就已经确定了.

动态代理是在程序运行之前没有代理对象的字节码,字节码是在程序运行期间有JVM动态的生成.代理对象和被代理对象的关系是在程序运行时才确定了的.

 

5.使用SpringMVC框架响应一个JSON对象的开发步骤.(前端控制器,Controller控制器已经配置完成)

我的答案:(满分10分,得分5分)

从浏览器端发送一个请求到前端控制器

前端控制器收到浏览器端的请求之后会调用处理器映射器,处理器映射器对请求的url进行解析返回给前端控制器

前端控制器会根据处理映射器返回的结果去调用处理器适配器

处理器适配器通过适配调用Controller控制器

Controller控制器执行完相应的方法返回一个ModelAndView也就是JSON对象给处理器适配器,处理器适配器进一步将JSON对象返回给前端控制器

前端控制器将JSON对象直接响应给浏览器端的当前页面显示,不需要跳转刷新页面

答案解析:

1.导入jackson的依赖

2.创建返回对象的方法,并标注@RequestMapping,指定方法的访问路径

3.方法上标注@ResponseBody注解.

老师批注:@ResponseBody注解 

 

6.Spring的AOP的理解?

我的答案:(满分10分,得分10分)

AOP是面向切面编程,不使用SpringAOP时我们需要对很对对象进行事务管理,日志文件,代码冗余繁琐复杂,而且代码耦合度较高,但使用Spring的AOP面向对象编程,我们可以把项目中的一些共同的操作,例如事务管理,以及日志文件,配置成一个个的切面,将业务与事务处理相分离,提高代码的复用性降低代码的耦合度,简化开发

答案解析:

AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。Spring AOP使用的动态代理实现。

 

7.SpringMVC的流程?

我的答案:(满分10分,得分10分)

浏览器浏览器想前端控制器发送请求

前端控制器调用处理器映射器

处理器映射器根据请求的url进行解析,并返回给前端控制器

前端控制器调用处理器适配器

处理器适配器通过适配调用Controller控制器

Controller控制器返回ModelAndView对象给处理器适配器因为处理器适配器处理不了模型和视图对象,进一步将模型和视图对象返回给前端控制器

前端控制器调用视图解析器,并将具体的视图返回给前端控制器

前端控制器到调用视图,对视图进行渲染之后,返回给前端控制器

前端控制器进一步将内容响应给浏览器客户端

答案解析:

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.XML文件注入

在spring的核心配置文件中设置对象对应的属性名的值,实体类中属性必须有对应的setter方法

2.注解注入

在spring的核心配置文件中配置注解扫描器,在对应的类和对象上添加对应的注解,此时不需要setter方法,也不需要再xml文件中配置属性的值

答案解析:

1.构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。

2.Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方

法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。 

 

9.SpringMVC怎么和前端AJAX交互的?

我的答案:(满分10分,得分8分)

1.AJAX发送请求到前端控制器,

2.前端控制器通过处理器映射器找到相应的处理器,

3.然后调用处理器适配器,处理器适配器找到相应的处理器

4.接收传过来的参数,并对其进行处理,将结果转为JSON对象返回给前端控制器

5.前端控制器将数据响应给AJAX

6.AJAX完成数据的局部刷新

答案解析:

通过 jackson 框架就可以把 java 里面的对象直接转化成 js 可以识别的 json 对象具体步骤如下 :

1.加入jackson相关依赖

2.在接受 Ajax 方法里面可以直接返回 Object,List 等,但方法前面要加上@ResponseBody注解

 

 

 

10.写出Spring常用注解5个

我的答案:(满分10分,得分10分)

@Component

@Service

@Controller

@Repository

@Autowired

答案解析:

@Service、@Repository、@Controller、 @Autowired、@Resource任意五个即可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值