Java SSM框架理论知识
一、Spring理论知识
1、Spring 在ssm中起什么作用?
Spring:轻量级框架
作用:Bean工厂,用来管理Bean的生命周期和框架集成。
两大核心:1、IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory。2、AOP:面向切面编程
2、Spring的事务?
编程式事务管理:编程方式管理事务,极大灵活性,难维护。
声明式事务管理:可以将业务代码和事务管理分离,用注解和xml配置来管理事务。
3、IOC 在项目中的作用?
作用:Ioc解决对象之间的依赖问题,把所有Bean的依赖关系通过配置文件或注解关联起来,降低了耦合度。
4、Spring的配置文件中的内容?
开启事务注解驱动
事务管理器
开启注解功能,并配置扫描包
配置数据库
配置SQL会话工厂,别名,映射文件
不用编写Dao层的实现类
5、Spring下的注解?
注册:@Controller @Service @Component
注入:@Autowired @Resource
请求地址:@RequestMapping
返回具体数据类型而非跳转:@ResponseBody
6、Spring DI 的三种方式?
构造器注入:通过构造方法初始化
<constructor-arg index="0" type="java.lang.String" value="宝马"></constructor-arg>
setter方法注入:通过setter方法初始化
<property name="id" value="1111"></property>
接口注入
7、Spring主要使用了什么模式?
工厂模式:每个Bean的创建通过方法
单例模式:默认的每个Bean的作用域都是单例
代理模式:关于Aop的实现通过代理模式
8、IOC,AOP的实现原理?
IOC:通过反射机制生成对象注入
AOP:动态代理
二、SpringMvc理论知识
1、SpringMvc 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
问题:单例模式,在多线程访问时有线程安全问题
解决方法:不要用同步,在控制器里面不能写字段
2、SpringMvc 中控制器的注解?
@Controller:该注解表明该类扮演控制器的角色
3、@RequestMapping 注解用在类上的作用?
作用:用来映射一个URL到一个类或者一个特定的处理方法上
4、前台多个参数,这些参数都是一个对象,快速得到对象?
方法:直接在方法中声明这个对象,SpringMvc就自动把属性赋值到这个对象里面
5、SpringMvc中函数的返回值?
String,ModelAndView,List,Set 等
一般String,Ajax请求,返回一个List集合
6、SpringMvc中的转发和重定向?
转发:return:“hello”
重定向 :return:“redirect:hello.jsp”
7、SpringMvc和Ajax之间的相互调用?
通过JackSon框架把java里面对象直接转换成js可识别的json对象,具体步骤如下:
加入JackSon.jar
在配置文件中配置json的映射
在接受Ajax方法里面直接返回Object,list等,方法前面需要加上注解@ResponseBody
8、SpringMvc的工作流程图?
9、Struts2 和 SpringMvc的区别?
入口不同:
Struts2:filter过滤器
SpringMvc:一个Servlet即前端控制器
开发方式不同:
Struts2:基于类开发,传递参数通过类的属性,只能设置为多例
SpringMvc:基于方法开发(一个url对应一个方法),请求参数传递到方法形参,可以为单例也可以为多例(建议单例)
请求方式不同:
Struts2:值栈村塾请求和响应的数据,通过OGNL存取数据
SpringMvc:通过参数解析器将request请求内容解析,给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面,jsp视图解析器默认使用的是jstl。
三、Mybatis理论知识
1、Ibatis和Mybatis?
Ibatis:2010年,apache的Ibatis框架停止更新,并移交给了google团队,同时更名为MyBatis。从2010年后Ibatis在没更新过,彻底变成了一个孤儿框架。一个没人维护的框架注定被mybatis拍在沙滩上。
Mybatis:Ibatis的升级版本。
2、什么是Mybatis的接口绑定,有什么好处?
Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。
3、什么情况用注解,什么情况用xml绑定?
注解使用情况:Sql语句简单时
xml绑定使用情况:xml绑定 (@RequestMap用来绑定xml文件)
4、Mybatis在核心处理类叫什么?
SqlSession
5、查询表名和返回实体Bean对象不一致,如何处理?
映射键值对即可
<result column="title" property="title" javaType="java.lang.String"/>
column:数据库中表的列名
property:实体Bean中的属性名
6、Mybatis的好处?
把Sql语句从Java中独立出来。
封装了底层的JDBC,API的调用,并且能够将结果集自动转换成JavaBean对象,简化了Java数据库编程的重复工作。
自己编写Sql语句,更加的灵活。
入参无需用对象封装(或者map封装),使用@Param注解
7、Mybatis配置一对多?
<collection property="topicComment" column="id" ofType="com.tmf.bbs.pojo.Comment" select="selectComment" />
property:属性名
column:共同列
ofType:集合中元素的类型
select:要连接的查询
8、Mybatis配置一对一?
<association property="topicType" select="selectType" column="topics_type_id" javaType="com.tmf.bbs.pojo.Type"/>
property:属性名
select:要连接的查询
column:共同列
javaType:集合中元素的类型
9 、${} 和 #{}的区别?
${}:简单字符串替换,把${}直接替换成变量的值,不做任何转换,这种是取值以后再去编译SQL语句。
#{}:预编译处理,sql中的#{}替换成?,补全预编译语句,有效的防止Sql语句注入,这种取值是编译好SQL语句再取值。
总结:一般用#{}来进行列的代替
10、获取上一次自动生成的主键值?
select last _insert_id()
11、Mybatis如何分页,分页原理?
RowBounds对象分页
在Sql内直接书写,带有物理分页
12、Mybatis工作原理?
原理:
通过SqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出SqlSessionFactory。
SqlSessionFactory开启一个SqlSession,通过SqlSession实例获得Mapper对象并且运行Mapper映射的Sql语句。
完成数据库的CRUD操作和事务提交,关闭SqlSession。
Java SSM框架理论知识的更多相关文章
- Java 多线程——基础知识
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- Java面试必备知识
JAVA面试必备知识 第一,谈谈final, finally, finalize的区别. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可 ...
- Java之webService知识
Java之webService知识 1 webservice基础知识 1.1 webService请求的本质 一次webService本质请求,如下所示: 1.2 wsdl文档解析 wsdl文档元素结 ...
- java必备基础知识(一)
学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Java视频扩展知识 线程池的了解
Java视频扩展知识 线程池的了解 1.简单介绍: Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用.为我们在开发中处理线程的 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- 什么才是java的基础知识?
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...
- java部分基础知识整理----百度脑图版
近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...
随机推荐
- 全套visio版本安装教程及下载地址
1:visio 2003 安装教程及下载地址 https://mp.weixin.qq.com/s/vhJUagKBz3vM-Dru0cwYow 2:visio 2007 安装教程及下载地址 http ...
- webpack 快速入门 系列 —— 初步认识 webpack
初步认识 webpack webpack 是一种构建工具 webpack 是构建工具中的一种. 所谓构建,就是将资源转成浏览器可以识别的.比如我们用 less.es6 写代码,浏览器不能识别 less ...
- SpringBoot简单尝试
一.spring boot核心 配置在类路径下autoconfigure下(多瞅瞅) @SpringBootApplication里的重要注解(@Configuration,@EnableAutoCo ...
- 『居善地』接口测试 — 3、Requests库介绍
目录 1.Requests库 2.Requests库文档 3.Requests库安装 4.Requests库的使用 (1)使用步骤 (2)示例练习 5.补充:Json数据和Python对象互相转化 1 ...
- 自带的 print 函数居然会报错?
前言 最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志. 任务运行时偶尔会出现一些异常: 因为我在不同地方都有打印日志,导致每次报错的地 ...
- 项目展示$\alpha$
项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 强制转会与项目展示 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 ...
- 【转载】基于Linux命令行KVM虚拟机的安装配置与基本使用
基于Linux命令行KVM虚拟机的安装配置与基本使用 https://alex0227.github.io/2018/06/06/%E5%9F%BA%E4%BA%8ELinux%E5%91%BD%E4 ...
- canal 实现Mysql到Elasticsearch实时增量同步
简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据 ...
- 单臂路由实现不同vlan间通信
单臂路由实现不同vlan间通信 拓扑图 PC配置 PC1 :192.168.1.1 vlan10 192.168.1.254 PC2 :192.168.2.1 vlan20 192.168.2.254 ...
- Git-【技术干货】工作中Git的使用实践
Git-[技术干货]工作中Git的使用实践 置顶 2019-09-17 21:02:16 web洋仔 阅读数 11444更多 分类专栏: Git 版权声明:本文为博主原创文章,遵循CC 4.0 B ...