Spring框架

Spring框架
1.什么是spring框架?
spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开 源框架
2.spring的作用
方便解耦,简化开发,AOP编程支持,声明式事务支持,集成Junit更加方便的进行分层测试,方便集成各种优秀框架
3.什么是IOC?
控制反转,把创建对象的权利交给spring
4.什么是DI
属性的依赖注入,spring在通过IOC创建对象的时候,如果对象还有属性,就一并给赋值进去DI是在IOC的基础上进行对象的属性 注入
5.依赖注入的三种实现方式?
构造器注入,Setter方法注入,接口注入
SpringMVC框架
1.什么是 SpringMvc?
SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合。
2.SpringMVC 工作原理?
a、客户端发送请求到 DispatcherServlet
b、DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller c、Controller 调用业务逻辑后,返回 ModelAndView
d、DispatcherServlet 查询 ModelAndView,找到指定视图e、视图将结果返回到客户端
3.SpringMVC 流程?

a、用户发送请求至前端控制器 DispatcherServlet。
b、DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。
c、处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
d、DispatcherServlet 调用 HandlerAdapter 处理器适配器。
e、HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)。
f、Controller 执行完成返回 ModelAndView。
g. HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。h、DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
i、ViewReslover 解析后返回具体 View。
g、DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。
k、DispatcherServlet 响应用户。
4.如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
a、springmvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器。
b、springmvc 是基于方法开发(一个 url 对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),
struts2 是基于类开发,传递参数是通过类的属性,只能设计为多例。
c、Struts 采用值栈存储请求和响应的数据,通过 OGNL 存取数据,springmvc 通过参数解析器是将 request 请求内容解析,并给方法形参赋值,将数据和视图封装成 ModelAndView对象,最后又将 ModelAndView 中的模型数据通过 reques 域传输到页面。Jsp 视图解析器默认使用 jstl。
5.@RequestMapping 注解用在类上面有什么作用?
是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路 径。

Mybatis框架
1.什么是 MyBatis?
MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。
2.Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
a、Mybatis 动态 sql 可以让我们在 Xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能。b、Mybatis 提 供 了 9 种 动 态 sql 标 签 : trim|where|set|foreach|if|choose|when|otherwise|bind。
c、其执行原理为,使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的功能。
3.#{}和KaTeX parse error: Expected 'EOF', got '#' at position 13: {}的区别是什么? a、#̲{}是预编译处理,{}是字符串替换。

b、Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;
c、Mybatis 在处理 时 , 就 是 把 {}时,就是把 {}替换成变量的值。
d、使用#{}可以有效的防止 SQL 注入,提高系统安全性。
4.为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动ORM 映射工具。
5.MyBatis 与 Hibernate 有哪些不同?
a、Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句,不过 mybatis 可以通过 XML 或注解方式灵活配置要运行的 sql 语句,并将java 对象和 sql 语句映射生成最终执行的 sql,最后将 sql 执行的结果再映射生成 java 对象。
b、Mybatis 学习门槛低,简单易学,程序员直接编写原生态 sql,可严格控制 sql 执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是 mybatis 无法做到数据库无关性,如果需要实现支持多种数据库的软件则需要自定义多套 sql 映射文件,工作量大。
c、Hibernate 对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate 开发可以节省很多代码,提高效率。但是Hibernate 的缺点是学习门槛高,要精通门槛更高,而且怎么设计 O/R 映射,在性能和对象模型之间如何权衡,以及怎样用好 Hibernate 需要具有很强的经验和能力才行。总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。
6.MyBatis 的好处是什么?
a、MyBatis 把 sql 语句从 Java 源程序中独立出来,放在单独的 XML 文件中编写,给程序的维护带来了很大便利。
b、MyBatis 封装了底层 JDBC API 的调用细节,并能自动将结果集转换成 Java Bean 对象, 大大简化了 Java 数据库编程的重复工作。
c、因为 MyBatis 需要程序员自己去编写 sql 语句,程序员可以结合数据库自身的特点灵活控制 sql 语句,因此能够实现比 Hibernate 等全自动 orm 框架更高的查询效率,能够完成复杂查询。
7.什么是 MyBatis 的接口绑定,有什么好处?
接口映射就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑定,我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可以有更加灵活的选择和设置.
8.接口绑定有几种实现方式,分别是怎么实现的?
接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上@Select@Update 等注解里面包含 Sql 语句来绑定,另外一种就是通过 xml 里面写 SQL 来绑定,在这种情况下,要指定 xml 映射文件里面的 namespace 必须为接口的全路径名.
shiro安全框架
1.shiro可以完成哪些工作?
shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等
2.Apache Shiro 的三大核心组件
a、Subject :当前用户的操作
b、SecurityManager:用于管理所有的Subject

c、Realms:用于进行权限信息的验证
3.shiro有哪些组件?
a、Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
b、Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验 证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
c、Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
d、Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; e、Web Support:Web支持,可以非常容易的集成到Web环境;
f、Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
g、Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; h、Testing:提供测试支持;
i、Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
g、Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。
4.比较 SpringSecurity 和 Shiro
相比 Spring Security, Shiro 在保持强大功能的同时,使用简单性和灵活性。 SpringSecurity: 即使是一个一个简单的请求, 最少得经过它的 8 个Filter。SpringSecurity 必须在 Spring 的环境下使用。初学 Spring Security,曲线还是较大,需要深入学习其源码和框架, 配置起来也较费力.
5.Shiro 的优点
a、简单的身份认证, 支持多种数据源
b、对角色的简单的授权, 支持细粒度的授权(方法级) c、支持一级缓存,以提升应用程序的性能
d、内置的基于 POJO 企业会话管理, 适用于 Web 以及非 Web 的环境e、非常简单的加密 API
f、不跟任何的框架或者容器捆绑, 可以独立运行

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值