java面试---框架

1、SpringMVC的工作原理

a. 用户向服务器发送请求,请求被 springMVC 前端控制器 DispatchServlet 捕获;

b. DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping

将请求映射到处理器 HandlerExcutionChain;

c. DispatchServlet 根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理;

d. Handler 对数据处理完成以后将返回一个 ModelAndView()对象给 DisPatchServlet;

e. Handler 返回的 ModelAndView()只是一个逻辑视图并不是一个正式的视图, DispatcherSevlet 通过ViewResolver 试图解析器将逻辑视图转化为真正的视图 View;

h. DispatcherServle 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端;

 

2、SpringMVC常用注解

1)@requestMapping用于url映射

2)@RequestBody 注解实现接受http请求的json数据,将json数据转化为java对象

3)@ResponseBody 注解实现将controller方法返回对象转化为json对象给客户

 

3、如何开启注解处理器和适配器

在springmvc.xml中通过开启<mvc:annotation-driven>来实现注解处理器和适配器的开启

 

4、如何解决get和post乱码问题

解决 post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器。 设置为 utf-8.

解决 get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法有两个:

        1. 修改 tomcat 配置文件添加编码与工程编码一致。

        2. 另 外 一 种 方 法 对 参 数 进 行 重 新 编 码

String userName = New  String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “utf-8”);

 

5、对spring的理解

spring容器主要核心:

1)控制反转

2)依赖注入

3)面向切面编程

 

6、spring中的设计模式

1)单例模式:spring的配置文件中设置bean默认为单例模式

2)模板方式模式:解决代码重复问题

3)前端控制器模式:spring提供前端控制器来对请求分发

4)工厂模式:创建对象时不会对客户端暴露创建逻辑

 

7、spring常用注解

@Required:该注解应用于设值方法

@Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量。

@Qualifier:该注解和@Autowired 搭配使用,用于消除特定 bean 自动装配的歧义。

 

8、spring能做什么

1)根据配置文件创建以及组装对象之间的依赖关系

2)面向切面编程帮助无耦合实现日志激励,性能统计,安全控制

3)非常简单的管理数据库事务

4)与第三方数据库框架无缝集成

5)与第三方web框架无缝集成

 

9、spring ioc的定义和优点

ioc复杂创建对象,管理对象,通过依赖注入,装配对象,配置对象,管理对象的生命周期;ioc吧应用代码量降到最低,容易测试;最小的代价和最小的侵入性使松散耦合得到实现

 

10、依赖注入方式

1)set注入

2)构造器注入

3)静态方法注入

4)实例工厂方法注入

 

11、spring支持的几种bean的作用域

1)singleton:bean在每个spring IOC容器中只有一个实例

2)prototype:一个bean的定义可以有多个实例

3)request:每次http请求都会创建一个bean

4)session:在一个http session中,一个bean定义对应一个实例

5)global-seesion:在一个全局的http session,一个bean对应一个实例

缺省的spring bean作用域是singleton

spring框架中单例bean不是线程安全的

 

12、spring AOP

aop把系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分就是横切关注点。如权限认真,日志,事务等

 

13、简单介绍shiro框架

一个安全框架。可以完成认证、授权、加密、会话管理、与web集成、缓存,三个核心组件

Subject:当前操作用户;代表了当前用户的安全操作。

SecuriityManager管理所有用户安全操作,shiro核心,典型的facade模式,管理内部组件实例

Realm:充当了shiro与应用安全数据间的桥梁或者连接器。当用户执行认证和授权验证时,shiro会从应用配置的realm中查找用户信息以及权限信息

 

14、shiro四种权限控制方式

1)url级别权限控制

2)方法注解权限控制

3)代码级别权限控制

4)页面标签权限控制

 

15、shiro权限粒度

1)粗颗粒权限:针对url连接控制,可以使用过滤器统一拦截url

2)细颗粒权限:针对数据级别控制,在service中控制,在程序级别来控制,个性化编程

 

16、mybatis中#与$的区别

1)#相当于对数据加上双引号,$相当于直接显示数据

2)#方法能够很大程度防止sql注入,$无法防止

3)尽量使用#

 

17、mybatis编程步骤

1)创建 SqlSessionFactory

2)通过 SqlSessionFactory 创建 SqlSession

3)通过 sqlsession 执行数据库操作

4)调用 session.commit()提交事务

5)调用 session.close()关闭会话

 

18、mybatis解决jdbc不足

1)jdbc频繁创建释放资源,浪费资源;mybatis配置数据库连接池,管理与数据库连接

2)将sql语句写在xml文件中,与java代码分离

3)mybatis自动将java对象映射到sql语句

4)mabatis自动将sql执行结果映射到java对象

 

19、使用mybatis的mapper调用接口要求

1)Mapper 接口方法名和 mapper.xml 中定义的每个 sql 的 id 相同

2) Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同

3)Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的 resultType 的类型相同

4) Mapper.xml 文件中的 namespace 即是 mapper 接口的类路径。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值