框架知识点总结

1.mybatis中通过哪个标签可以读取propertis文件?

<properties resource="jdbc.properties">

2.拦截器和过滤器的区别

     1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。

     2. 拦截器不依赖servlet容器,过滤器依赖servlet容器。

     3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

     4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

     5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

3.动态包含和静态包含的区别:

  1. 动态包含用的元素是page,而且有两种形式(如下3,4)。静态包含用的是file,只有一种形式。
  2. 生成的文件不同,静态的包含是将两个jsp文件二合一,生成一个以包含页面命名的servlet和class文件,动态包含的两个jsp文件各自生成自己的servlet和class文件。
  3. 动态传参方式一:<jsp:include page=“a.jsp?param=123”/>时被包含的jsp页面是可以访问该参数的。
  4. 动态传参方式二:
                <jsp:include page=“a.jsp”>
                         <jsp:param name=“” value=“”>
                        <jsp:param name=“” value=“”>
               </ jsp:include >
  5. 在客户端访问包含页面时地址栏后面直接加上参数后传递,这种形式的传参是客户端送来的,但是这两个页面的request对象不是同一个,因为3中已经说了包含的页面可以向被包含的页面传递参数,所以被包含的request对象含的参数个数应该大于等于包含页面的参数个数的。所以它们各有各的request对象。而且被包含的jsp页面可以访问传到包含页面的参数。
  6. 动态包含只有在执行到它的时候才加载,所以它才叫动态包含。

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、使用MyBatismapper接口调用时有哪些要求?

       ①  Mapper接口方法名和mapper.xml中定义的每个sqlid相同 
      
  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>,加上动态sql9个标签,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是开源的,轻量级的,以IocInverse of control)控制反转和AopAspect 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、描述设置Requiredsupport传播行为事物状况

required  A开了一个事务,B也是requried,调用B时,如果有事务使             A的事务,如果没有事务,新建一个事务,AB还是使用一个。

supportA开了一个事务 Bsupport,调用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既可以包含视图信息,也可以包含模型数据信息。

2Model是每一次请求都必须会带着的,但是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/>是一种简写形式,替代了什么配置。

 

替换了RequestMappingHandlerMappingRequestMappingHandlerAdapter两个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

 

猜你喜欢

转载自blog.csdn.net/qq_43154385/article/details/86476639