概述
1.mybatis中通过哪个标签可以读取propertis文件?
<properties resource="jdbc.properties">
2.拦截器和过滤器的区别
1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2. 拦截器不依赖servlet容器,过滤器依赖servlet容器。
3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
3.动态包含和静态包含的区别:
- 动态包含用的元素是page,而且有两种形式(如下3,4)。静态包含用的是file,只有一种形式。
- 生成的文件不同,静态的包含是将两个jsp文件二合一,生成一个以包含页面命名的servlet和class文件,动态包含的两个jsp文件各自生成自己的servlet和class文件。
- 动态传参方式一:<jsp:include page=“a.jsp?param=123”/>时被包含的jsp页面是可以访问该参数的。
- 动态传参方式二:
<jsp:include page=“a.jsp”>
<jsp:param name=“” value=“”>
<jsp:param name=“” value=“”>
</ jsp:include > - 在客户端访问包含页面时地址栏后面直接加上参数后传递,这种形式的传参是客户端送来的,但是这两个页面的request对象不是同一个,因为3中已经说了包含的页面可以向被包含的页面传递参数,所以被包含的request对象含的参数个数应该大于等于包含页面的参数个数的。所以它们各有各的request对象。而且被包含的jsp页面可以访问传到包含页面的参数。
- 动态包含只有在执行到它的时候才加载,所以它才叫动态包含。
4、mybatis中如何为实体类取别名?
<typeAliases>
5、如何设置mybatis的缓存?
一级缓存不用开启
使用二级缓存三个条件
1)是核心配置文件<setting name="cacheEnabled" value="true"/>
2)是相应的mapper文件中<cache/>
3)pojo实现序列化
6、如何设置mybatis的懒加载?
<!-- 配置延时加载的开关 -->
<setting name="lazyLoadingEnabled" value="true"/>
7、transactionManager标签是用来做什么的?
设置事务类型<transactionManager type="JDBC"></transactionManager>
8、dataSource标签是用来做什么的?
<dataSource type="POOLED">设置数据源,配置连接池
9、mappers标签是用来做什么的?
加载我们的mapper映射文件
10、如何解决查询结果中的列名和实体中的属性名不一致的情况?
resultMap设置映射关系.
11、SqlSessionFactory是否是单例的?
是
12、SqlSession能是单例的吗?强烈建议把sqlsession声明到方法里面去
因为SqlSession是用来操作数据库,生命周期是一个会话,会话结束必须关闭
13、为什么要清除缓存?
因为不清除缓存会出现脏读。
14、resultMap标签的作用是什么?
数据库和pojo类中的字段不一样时需要resultMap来映射
15、用什么标签实现一对一映射?一对多?
association collection
16、${}和#{}区别?
#代表占位符,防止sql注入,$只是替换(模糊查询使用)
17、在mapper中如何传递多个参数?
@param注解
18、如何解决列和属性名不一致的情况?
resultMap
19、数据库中查询着有值,但是得到的实体bean属性却为空,你觉得有哪些错误的可能?
映射的问题。
20、mapper.xml中的namespace的作用?
a.唯一标识
b.可以通过它在一个mapper.xml中引用另外一个xml中的资源
21、mapper.xml中有一个SQL的配置错误,例如写了一个不存在的resultType或resultMap,那么会不会影响其他方法的执行?
会的
22、说说一级缓存的原理?
执行一个查询语句时,先查询缓存,缓存里有的话就直接返回查询数据,否则去查询数据库;
23、什么是脏读?mybatis一级缓存是如何避免脏读的?
执行增删改操作后及时清空缓存,避免脏读;
24、如何使mybatis之前的一级缓存失效?即一级缓存的生命周期
session关闭
25、不同的sqlsession对象之间能共享二级缓存吗?
可以
26、查询条件不一样可以使用到一级缓存或二级缓存吗?
不可以
27、不同的sqlsession对象之间能共享一级缓存吗?
不可以
28、不同的sqlsession对象执行一模一样的查询SQL,第二个会用到前一个的一级缓存吗?
一级缓存无法用到,但是可以共享到二级缓存。
29、mybatis的一级缓存是缓存到了内存还是硬盘?
内存
30、mybatis会缓存增、删、改操作吗?
不会
31、对象序列化的必要条件是什么?
实现serierliable接口
32、如何防止二级缓存出现脏读?
清缓存
33、第一个sqlsession必须执行commit或者close方法,才会将查询的内容序列化到二级缓存中,对吗?
对。
34、mybatis中如何获得新插入的记录的主键?你可以获取那些主键
<selectKey>
自增id和uuid
35、什么是懒加载(延迟加载),举个例子?
先单表查询,根据需要查询关联表
36、如果是扫包的方式加载xml映射文件,要求映射文件的名字跟mapper接口的名字必须一样,对吗?
对
37、哪个注解可以解决列名-属性名不匹配的问题?
@ResultMap @Results
38、哪个注解用来标识一个select语句?
@Select
39、如果结果集中明确只有一条数据,用session自带的哪个方法可以查?
selectOne, selectList
40、@result标签中的property指向的是什么?
java对象的属性
41、<where>标签可以去除第一个条件中的and或者or吗?
可以
42、<foreach>标签中的open是干什么用的? close是干嘛用的?
拼接循环体前的内容和拼接循环体后的内容
43、<trim>中的prefix和prefixOverrides是什么用的?
添加前缀和去掉前缀多余的字符
44、<set>标签可以去掉最后一个条件中的逗号吗?
可以
45、MyBatis编程步骤是什么样的?
1)加载核心配置文件
2)创建SqlSessionFactory
3)通过SqlSessionFactory创建SqlSession
4)通过sqlsession执行数据库操作
5)调用session.commit()提交事务
6)调用session.close()关闭会话
46、使用MyBatis的mapper接口调用时有哪些要求?
① Mapper接口方法名和mapper.xml中定义的每个sql的id相同
② Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的 parameterType的类型相同
③ Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的 resultType的类型相同
④ Mapper.xml文件中的namespace即是mapper接口的类路径。
47、 SqlMapConfig.xml中配置有哪些内容?
SqlMapConfig.xml中配置的内容和顺序如下:
properties(属性)
settings(配置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
environment(环境子属性对象)
transactionManager(事务管理)
dataSource(数据源)
mappers(映射器)
48.、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?
还有很多其他的标签,<resultMap>、<sql>、<include>、<selectKey>,加上动态sql的9个标签,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中<sql>为sql片段标签,通过<include>标签引入sql片段,<selectKey>为不支持自增的主键生成策略标签。
49、Mybatis映射文件中,如果A标签通过include引用了B标签的内容,请问,B标签能否定义在A标签的后面,还是说必须定义在A标签的前面?
答:虽然Mybatis解析Xml映射文件是按照顺序解析的,但是,被引用的B标签依然可以定义在任何地方,Mybatis都可以正确识别。
50、什么是spring?
spring是开源的,轻量级的,以Ioc(Inverse of control)控制反转和Aop(Aspect Oriented Programming)面向切面编程为核心 的容器框架。
51、什么是ioc,它有什么作用?
IOC是Inversion of Control的缩写,翻译成“控制反转”,
作用:将原来程序中自己创建实现类对象的控制权反转到IOC容器中,
程序只需要从IoC容器获取创建好的对象。
52、什么是DI,DI和ioc区别?
DI 强调 IoC容器将对象的依赖关系,动态注入到对象之中 ,
DI是控制反转(IOC)具体的实现过程。
53、Bean的命名方式?
id、name和匿名,id唯一name可以多个,加载任意一个name都可以,匿名就是class(类的首字母小写)。
54、Bean的作用域 ?
1)singleton:单例bean
在构造applicationContext时候自动创建bean(限定为此bean为单例),在容器中只有一个实例
应用场景:service、dao作为单例 bean管,当多线程访问bean时,bean中不存在数据域的成员变量,此bean是线程的安全的,可以设置为singleton。
2)prototype:多例bean
只在每次调用getBean()创建一个新的bean实例,即从容器中取bean去实例。
55、属性依赖注入有几种方式,分别怎么实现属性的依赖注入?
属性依赖注入有两种,一种是通过构造注入,一种是属性注入。
1) 构造注入:
<bean id="users" class="bgs.com.service.UserServiceImp">
<constructor-arg index="0" ref="userDaos"></constructor-arg>
</bean>
2) 属性注入:<property name="userService" ref="users"></property>
56、实例化bean的注解有哪些?
使用@Component,在class上使用@Component标识这个是一个bean,由于spring的 IOC容器管理。
在class上使用@Component和其他(web层:@Controller (表示一个控制器)
业务层:@Service (表示一个业务bean)
持久层:@Respository(表示一个持久层的dao))标记
57、@Resource、@Autowired注解的区别?
都可以完成属性注入,autowried是 spring提供的,resource是javaEE规范,如果系统的bean只有一个类型,可以使用autowired,如果bean有多个类型,需要autowired和qualifier结合使用
58、什么是aop,他的作用?
AOP( Aspect Oriented Programing) 面向切面编程。
AOP采取横向抽取机制,取代了传统纵向继承体系的重复性代码(性能监视、事务管理、安全检查、缓存),AOP在运行期通过代理方式向目标类织入增强代码。
59、Aop的原理?
spring AOP基于代理的方式,对原来的业务类生成代理对象,
在代理对象中对原有业务对象的方法进行增强。
springAOP底层基于jdk接口代理,cglib实现子类代理,springAop通过动态代理实现。
60、什么是连接点?
Joinpoint(连接点):
具有特定功能的方法
一个类有很多方法,这每个方法都叫连接点。
61、什么是切入点?
具有共性功能方法的统称
62、什么是增强(织入)?什么是目标对象?
将抽取的功能加入原始功能运行的过程叫做增强(织入),控制的是字节码
包含切入点的类
63、什么是代理?什么是切面?
代理:一个类被AOP织入增强后,就产生一个结果代理类;
(运行过程中使用AOP代理对象进行运行)
切面:是切入点和通知的结合。64、SqlSessionFactory对象是单例的吗?
64、@Aspect注解的作用?
声明切面类
65、AOP常用的注解包括?
@Aspect、@Before、@AfterReturning、@Around、@AfterThrowing、@After等
66、请例举AOP的增强类型?
Before:前置增强处理,在目标方法前织入增强处理
AfterReturning:后置增强处理,在目标方法正常执行(不出现异常)后织入增强处理
AfterThrowing:异常增强处理,在目标方法抛出异常后织入增强处理
After:最终增强处理,不论方法是否抛出异常,都会在目标方法最后织入增强处理
Around:环绕增强处理,在目标方法的前后都可以织入增强处理。
67、AfterReturning和After的区别?
AfterReturning,程序不出现异常的时候执行
After,无论什么时候都会执行
68、事物的特性?
原子性:不可分割,事务由多个原子组成,这些原子要么全成功,要么全失败。
一致性:事务在执行前与执行后数据保持一致。
隔离性:事务与事务之间不可以互相影响。
持久性:事务一旦commit(提交,代表数据真正修改了,不可以在改变。
69、事物的隔离级别?
Default:默认隔离级别;使用后端数据库默认的隔离级别。
Read_uncommited:读未提交;允许你读取还未提交的改变了的数据。可能导致脏读,幻读,不可重读。
Read_commited:读已提交;允许在并发事物已经提交后读取。可以防止脏读,但幻读和不可重读扔可发生。
Repeatable_read:可重复读;对相同字段的读取是一致的,除非数据被事物本身改变。可防止脏读,不可重读,但幻读仍可能发生。
Serializable:串行化;确保不发生脏,幻,不可重读。这在所有的隔离级别中是最慢的。它是典型的通过事物通过完全锁定在事物中涉及的数据表来完成的。
70、什么是事务传播行为? 有什么用?
事务传播行为用于解决两个被事务管理的方法互相调用问题。
实际开发中将事务在service控制,如下方法调用存在传播行为:
71、描述设置Required和support传播行为事物状况?
required A开了一个事务,B也是requried,调用B时,如果有事务使 用A的事务,如果没有事务,新建一个事务,A和B还是使用一个。
support,A开了一个事务 ,B是support,调用B时,如果有事务使用A的事务,如果没有事务,就不使用事务。
72、什么是声明式事务?
基于AOP思想,在创建目标对象时,为目标进行代理,通过环绕通知,动态为目标添加事务管理代码
73、怎样用xml配置事物管理器?
实例化org.springframework.jdbc.datasource.DataSourceTransactionManager类,
配置增强,配置传播行为 <tx:advice></tx:advice> ,配置切面
74、怎样用注解配置事物管理器?
开启注解扫描<tx:annotation-driven
transaction-manager="transactionManager"/>
在需要事务控制的方法上面配置注解@Transactional
75、什么是mvc,mvc执行流程?
它是一种设计模式,Model,View,Controller
M:model 模型:主要用于数据封装 javaBean
V:view 视图: 用于数据的显示
C:Controller 控制: 用于逻辑控制操作
76、springMvc处理器有几个,映射器有几个?
处理器有两个,映射器有三个
77、配置视图解析器有什么作用?
可以将逻辑地址转为物理地址。简单方便
78、@RequestMapping是什么?有什么作用?
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。
用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
79、@RequestMapping有哪些属性分别是什么意思?
value:可以设置请求路径,method:可以设置请求方式
80、springMvc接收的参数类型有哪些?
传递简单类型,pojo,包装类型,HttpServletRequest,HttpServletResonse,HttpSession,数组
81、页面数据回显的方式?
1:request方式
2.ModelAndView
3.Model
4.Map
82、ModelAndView和Model回显数据的区别有哪些?
1)Model只是用来传输数据的,并不会进行逻辑视图的寻址。
ModelAndView既可以包含视图信息,也可以包含模型数据信息。
2)Model是每一次请求都必须会带着的,但是ModelAndView是需要我们自己去新建的。
3)ModelAndView方法是addObject()Model的方法是addAttribute()
83、handler方法入参上的注解有哪些
@RequestParam,@RequestHeader,@CookieValue,@PathVariable
84、@RequestParam是什么?它的作用?
@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。
Value:参数名字,即入参的请求参数名字,如value=“aa”表示请求的参数区中的名字为aa的参数的值将传入;
defaultValue:默认值,表示如果请求中没有同名参数时的默认值
Required:是否必须,默认是true,表示请求中一定要有相应的参数与value对应否则报错,否则将报400错误码;如果设置默认值则走默认值
85、handler方法如何返回json格式的数据
1)添加json的类库
2)在处理器适配器上添加属性messageConverter或者用<mvc:annotation-driven>
3) handler方法返回要转json的数据
4)方法上添加@Response的注解
86、springMVC能否实现请求转发与重定向,语法结构是什么?
return “forward:/index.jsp”;
return “redirect:/index.jsp”;
87、<mvc: annotation-driven/>是一种简写形式,替代了什么配置。
替换了RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个bean,
同时提供了五种支持:@NumberFormat annotation支持,@DateTimeFormat支持,@Valid(后端的数据验证)支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
88、当DispatcherServlet请求映射配置为"/"时,如何实现静态资源的放行?
1)在web.xml中配置default的映射,要求:该映射在DispatcherServlet前;
2)<mvc:resources mapping="/images/**" location="/images/" />
3)<mvc:default-servlet-handler>
89、@PathVariable有什么作用?
可以获取url路径上的参数值。
90、在restful风格开发中,四个请求方式的动词分别表示什么操作?
GET:用来获取资源;
POST:新建资源;
PUT:更新资源;
DELETE:删除资源
91、springMvc是如何实现提交put和delete请求的
1)在web.xml中配置一个filter
2)提交方式为post,提交时带一个_method的参数,参数值为delete为delete请求,参数值为put为put请求;
92、如何让springMVC支持文件上传
1)导jar包
2)springMVC的配置文件中配一个multipartResolver
3)jsp页面 输入框的类型为file,form表单的提交方式为post,添加enctype属性
4)handler方法里用MultipartFile对象去接收客户端提交的文件,然后存储在服务器上
93、springMVC支持多视图解析吗?
支持
94、三大框架整合的思路?
1)web.xml配置内容:spring的listener,SpringMVC的servlet
2)spring配置文件:数据源,sqlSessionFactory,MapperScannerConfigurer扫描dao层,扫描service层,配置事务;
3)springMVC配置文件:处理器映射器,处理器适配器,扫描handler,视图解析器
4)mybatis核心配置文件:settings,pojo的类名
95、Springmvc支持json格式吗?
springmvc自身不支持json格式,需要导入jackson jar包,在方法上添加@ResponseBody的注解
96、Springmvc常用的注解有哪些?
@RequestMapping,@RequestParam @RequestHeader @ResponseBody @CookieValue
最后
以上就是单薄战斗机为你收集整理的框架知识点总结的全部内容,希望文章能够帮你解决框架知识点总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复