试卷总分:100 及格分:60 平均分:82.28 得分:98
1.Spring/SpringMVC常用的注解及其作用(至少8个)
我的答案:(满分10分,得分10分)
@Component 加在类上的注解,将此类的对象放在IoC容器中
@Controller 跟Component相同,不过为了方便程序员识别,一般加在控制层的类上
@Service 跟Component相同,不过为了方便程序员识别,一般加在Service层的类上
@Repository 跟Component相同,不过为了方便程序员识别,一般加在dao层的类上
@Mapper 扫描Mapper接口的注解
@ResponseBody 对象转为JSON格式的注解
@PathVariable 获取请求路径中携带的参数的注解
@RequestParam 请求参数改名的注解
@RequestMapping 设置请求路径的注解
@DateTimeFormat 日期格式转换的注解
答案解析:
@Component,@Repository,@Service,@controller:由Spring管理类的对象的创建
@Autowired,@Resource:从容器中获取类的对象并给字段赋值
@RequestMapping:映射方法的访问路径
@ResponseBody:将方法返回的对象转换为JSON
@Scope:设置对象的作用域
@PostConstruct,@PreDestory:设置对象的生命周期
@Aspect:设置为切面类
@Transactional:添加事务控制
个人批注:emmm,之前一直在复习这块,感觉毫无压力
2.SpringMVC中,forward和redirect字符串的作用
我的答案:(满分10分,得分10分)
1.使用forward和redirect可以去掉视图解析器的前缀和后缀
2.forward是指转发到指定页面,redirect是指重定向到指定页面
答案解析:
两个字符串的共同功能是使视图解析器的前缀和后缀不再生效.forward的作用是以请求转发的方式跳转到视图页面,redirect是以重定向的方式跳转到视图页面
个人批注:我怀疑老师是想让我弥补上次少写一条的遗憾哈哈哈哈
3.简述redis的数据类型有哪些,以及各自的应用场景
我的答案:(满分10分,得分10分)
1.String类型 应用场景做缓存,计数器
2.hash类型 应用场景做缓存
3.set类型 应用场景抽奖
4.list类型 应用场景朋友圈点赞
5.sortedSet 应用场景做排行榜
答案解析:
字符串(String),主要做缓存;哈希(hash),做缓存;列表(list),模拟栈和队列;集合(set),可以做抽奖案例,去重;有序列表(sorted set),做排名
个人批注:下午的时候,老师刚讲过,这块又很简单,直接就记住了,有什么办法呢?哈哈哈
4.简述Mybatis的缓存机制
我的答案:(满分10分,得分10分)
Mybatis的缓存机制有两种
1.一级缓存:SqlSession级别的缓存,自动开启.SqlSession生命周期很短,所以这种缓存的声明周期也很短.
2.二级缓存:namespace级别的缓存,需要在mapper.xml文件中开启缓存,然后添加<cach/>,并且使用到的类要实现序列化接口.
答案解析:
Mybatis的缓存分成一级缓存和二级缓存.
一级缓存是默认开启的,作用域为SqlSession,二级缓存缓存需要收的开启,作用域为namespace级别.
开启二级缓存需要在mapper映射文件添加</cache>标签,同时需要实现序列化接口.
个人批注:我严重怀疑老师出这个题,是因为他上课的时候随口提了一句二级缓存,然后我下课的时候问个没完,哈哈哈(cache少写了一个e,还有就是我本来想写实现Serializable接口的,结果忘了怎么写的,然后干脆就没写,还好老师答案也没写啧啧啧.)
5.association标签的作用是什么?使用association标签常用的属性及其作用是什么?
我的答案:(满分10分,得分10分)
association标签的作用:resultMap中的属性是一个对象的时候(比如多对一查询时),需要使用association标签.
常用属性:
1.property 类中定义的相应的属性的名字
2.column (当使用额外SQL查询的时候,需要传给额外SQL查询中的相应的参数.对应的是当前查询的表中的相应列名,貌似一般是id的列名,具体情况具体分析吧)
3.javaType 关联对象的类型(全限定名)
答案解析:
association用于执行一条单独的SQL语句,将查询出的结果集封装成对象并注入给属性.
select属性:发送的单独的SQL的statement;column:执行SQL语句时的需要的参数来源于哪个列的值;javaType:封装成哪个类的对象;property:将封装成的对象注入给哪个属性.
个人批注:我突然觉得之前我考的不好,不是我的问题,而是因为题不是老师出的.要是老师重点讲过,我肯定不会卡啊.
6.SpringMVC的流程?
我的答案:(满分10分,得分10分)
1.客户端发送请求到前端控制器
2.前端控制器调用处理器映射器
3.处理器映射器查找相应的处理器,
并生成相应的处理器对象并返回给前端控制器
4.前端控制器调用处理器适配器,
处理器适配器找到真正的处理器,并执行处理器
5.执行完毕后生成的ModelAndView对象返回给前端控制器
6.前端控制器调用视图解析器,视图解析器对其进行解析,并返回给前端控制器
7.前端控制器调用相应的渲染,将数据填充进去,生成的jsp,html再次返回给前端控制器
8.前端控制器将页面响应给客户端
答案解析:
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响应用户。
7.SpringMVC怎么样设定重定向和转发的?
我的答案:(满分10分,得分10分)
SpringMVC的redirect和forward可以去掉视图解析器的前缀和后缀,根据指定页面的路径跳转
具体格式如下:
1.重定向: return "redirect:指定页面的路径"
2.转发:return "forward:指定页面的路径"
答案解析:
1.转发:在返回值前面加"forward:",譬如"forward:user.do"
2.重定向:在返回值前面加"redirect:",譬如"redirect:user.do"
8.有哪些不同类型的IoC(依赖注入)方式?
我的答案:(满分10分,得分10分)
1.Setter注入
2.构造器注入
答案解析:
1.构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一
系列参数,每个参数代表一个对其他类的依赖。
2.Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方
法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
个人批注:我圆满了,把上次丢的分,全都补回来了哈哈哈哈
9.解释Spring支持的几种bean的作用域?
我的答案:(满分10分,得分8分)
1.scope属性的值为prototype时,bean是多例的
2.scope属性的值为sington时,bean是单例的
答案解析:
singleton : bean在每个Spring ioc 容器中只有一个实例。
prototype:一个bean的定义可以有多个实例。
request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring
ApplicationContext情形下有效。
session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于
web的Spring ApplicationContext情形下有效。
global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作
用域仅在基于web的Spring ApplicationContext情形下有效。
老师批注:可以适当了解一下答案中的其它情况
个人批注:过分,考超纲题.(emmm,突然发现singleton写错了,啧啧啧.)
10.SpringMVC怎么和前端AJAX交互的?
我的答案:(满分10分,得分10分)
在SpringMVC中可以使用@ResponseBody注解,将返回的对象转为JSON格式返回给AJAX,从而进行交互.
答案解析:
通过 jackson 框架就可以把 java 里面的对象直接转化成 js 可以识别的 json 对象具体步骤如下 :
1.加入jackson相关依赖
2.在接受 Ajax 方法里面可以直接返回 Object,List 等,但方法前面要加