springmvc怎么解析post_秋招跳槽,面试是拦路虎?【spring、springMVC】- 常见面试题汇总...
作为一名高级Java工程师,不仅要具备扎实的理论功底,还要有较多的项目经验,要对市面上的主流技术有一个大致的了解。框架能够提升程序开发效率,也是高薪Java工程师面试必问的技术,今天千我就给大家分享一下常见的Spring框架面试题。
spring
spring框架有哪些主要模块?
spring框架至今已经集成了20多个模块,这些模块主要被分为以下:核心容器,数据访问/集成,WEB、AOP(面向切面编程)、工具、消息、和测试模块。
Spring 框架中用到了哪些设计模式?请举例说明
Spring 框架中使用到了大量的设计模式,下面列举了比较有代表性的:
- 代理模式 — 在 AOP 和 remoting 中被用的比较多 。
- 单例模式 — 在 spring 配置文件中定义的 bean 默认为单例模式 。
- 模板方法 — 用来解决代码重复的问题 。 比如 RestTemplate, JmsTemplate, JpaTemplate。
- 前端控制器 —Spring 提供了 DispatcherServlet 来对请求进行分发 。
- 视图帮助 (View Helper )—Spring 提供了一系列的 JSP 标签,高效宏来辅助将分散的代码整合在视图里 。
- 依赖注入 — 贯穿于 BeanFactory / ApplicationContext 接口的核心理念 。
- 工厂模式 —BeanFactory 用来创建对象的实例 。
spring框架带来哪些好处?
- DI(依赖注入)IOC(控制反转)将对象统一管理,依赖关系一目了然,降低组件之间的耦合,让我们更注重于业务逻辑。
- AOP的很好支持,方便面向切面编程。
- 对主流框架有很好的集成,springboot,jpa,mybatis,springmvc。
- 采用分层架构,使项目层次分明,可以分层使用。
开发中主要使用 Spring 的什么技术 ?
①. IOC 容器管理各层的组件②. 使用 AOP 配置声明式事务③. 整合其他框
什么是控制反转IOC,什么是依赖注入DI?
- 控制反转是本来new 对象是,对象本身自己new 出来的,但是spring将new 对象的功能交给spring 容器,这就实现了控制反转。工厂模式。
- 依赖注入是控制反转的基础,而new 出来绑定依赖关系的过程就叫依赖注入。java中实现依赖注入有三种方式:
- 构造器注入
- setter方法注入
- 接口注入
请解释Spring Bean的生命周期?
- 通过构造器或工厂方法创建 Bean 实例
- 为 Bean 的属性设置值和对其他 Bean 的引用
- 将 Bean 实 例 传 递 给 Bean 后 置 处 理 器 的postProcessBeforeInitialization 方法
- 调用 Bean 的初始化方法(init-method)
- 将 Bean 实 例 传 递 给 Bean 后 置 处 理 器 的postProcessAfterInitialization 方法
- Bean 可以使用了
- 当容器关闭时, 调用 Bean 的销毁方法(destroy-method)
applicationContext与beanFactory的区别?
- BeanFactory:
是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能; - ApplicationContext:
应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;
- 国际化(MessageSource)
- 访问资源,如URL和文件(ResourceLoader)
- 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层
- 消息发送、响应机制(ApplicationEventPublisher)
- AOP(拦截器)
Spring有几种配置方式?
- 基于XML的配置
- 基于注解的配置
- 基于Java的配置
spring 中的核心类有那些,各有什么作用?
- BeanFactory:产生一个新的实例,可以实现单例模式。
- BeanWrapper:提供统一的 get 及 set 方法。
- ApplicationContext:提供框架的实现,包括 BeanFactory 的所有功能。
怎样用注解的方式配置Spring?
- 开启组件扫描特定的组件
- 特定的组件CommponentResposttoryServiceController
- 开启包扫表
spring如何配置bean?
- 通过反射全类名
- 通过工厂方法(静态工厂方法/实例工厂方法)
- 通过FactoryBean
Spring 如何整合 Struts2 ?
整合 Struts2, 即由 IOC 容器管理 Struts2 的 Action:
- 安装 Spring 插件: 把 struts2-spring-plugin-2.2.1.jar 复制到当前 WEB 应用的 WEB-INF/lib 目录下
- 在 Spring 的配置文件中配置 Struts2 的 Action 实例
- 在 Struts 配置文件中配置 action, 但其 class 属性不再指向该
- Action 的实现类, 而是指向 Spring 容器中 Action 实例的 ID
Spring 如何整合 Hibernate
整合 Hibernate, 即由 IOC 容器生成 SessionFactory 对象, 并使用
Spring 的声明式事务
- 利用 LocalSessionFactoryBean 工厂 Bean, 声明一个使用 XML 映射文件的 SessionFactory 实例.
- 利用 HibernateTransactionManager 配置 Hibernate 的事务管理器
springMVC
什么是springmvc?谈谈你对springmvc的理解?
springmvc是一个基于mvc架构的用来简化web应用程序的开发框架,他是spring的一个模块,无需中间整合层来整合,是一个表现层框架,在web模型中,mvc是一种很流行的框架,通过把Model View Controller 分离,把较为复杂的web应用分成逻辑清晰的及部分,简化开发,减少出错,方便组内开发人员配合。
为什么要用springMVC?
基本上,框架的作用就是用来简化编程的,相对于servlet来说,获取表单参数,响应请求等变得更简单了。
Spring MVC的主要组键?
- 前端控制器 DispatcherServlet(不需要程序员开发)
作用:接收请求、响应结果 相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。 - 处理器映射器HandlerMapping(不需要程序员开发)
作用:根据请求的URL来查找Handler - 处理器适配器HandlerAdapter
注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。 - 处理器Handler(需要程序员开发)
- 视图解析器 ViewResolver(不需要程序员开发)
作用:进行视图的解析 根据视图逻辑名解析成真正的视图(view) - 视图View(需要程序员开发jsp)
View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)
springmvc的主要流程。
- 首先当浏览器发送一个请求,例上,总调度器 不管三七二十一,先拦截下来,来 接下来,加载自定义配置文件,找到 springmvc-config.xml中的配置映射处理器。
- springmvc-config.xml中配置映射处理器,解析当前url。分为/controller和/emp
- 在所有的中找该映射(此处实质不是找bean,而是bean转化为注解,在注 解中找,步骤为:
1.开启注解约束
2.开启包扫描
3.开启springmvc的注册驱动,识别controller中的相关注解) - 通过识别好的映射找到controller中的empList方法,开始执行该方法。该方法new一个ModerAndView,进行参数携带和添加将要转发的url返回给 配置处理适配器 。
- 配置处理适配器将所携带的数据进行封装传送给总调度器,此时封装好的 ModerAndView并不是一个浏览器所能识别并展示给用户的视图,只是一个逻辑视图。
- 总调度器将封装好的ModerAndView传送给配置视图解析器,解析完成,给总调度器。
- 总调度器将解析好的视图,传送给jsp页面,完成整个过程。
如何解决post请求乱码问题?
在web.xml中添加spring自带的 CharacterEncodingFilter字符编码过滤器,在init-param标签中设置为utf-8。
Spring MVC的异常处理 ?
可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。
SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段
@RequestMapping注解用在类上面有什么作用?
是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
怎么样把某个请求映射到特定的方法上面?
直接在方法上面加上注解@RequestMapping,并且在这个注解里面写上要拦截的路径。
如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?
可以在@RequestMapping注解里面加上method=RequestMethod.GET。
怎么样在方法里面得到Request,或者Session?
直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样。
SpringMvc中有个类把视图和数据都合并的一起的,叫什么?
ModelAndView。
SpringMvc里面拦截器是怎么写的
有两种写法,一种是实现接口,另外一种是继承适配器类,然后在SpringMvc的配置文件中配置拦截器即可:
<!-- 只针对部分请求拦截 -->
<mvc:interceptor><mvc:mapping path="/modelMap.do" /><bean class="com.et.action.MyHandlerInterceptorAdapter" />
</mvc:interceptor>
SpringMvc用什么对象从后台向前台传递数据的
通过ModelMap对象,可以在这个对象里面用put方法,把对象加到里面,前台就可以通过el表达式拿到
------完结------
感谢你的阅读,点赞、关注一下再走吧!!!
springmvc怎么解析post_秋招跳槽,面试是拦路虎?【spring、springMVC】- 常见面试题汇总...相关推荐
- 把数据转换为在内存中Tree(树形结构)。_备战秋招:一文搞定数据库常见面试题...
点击上方"蓝字",关注了解更多 1.数据库范式 第一范式:列不可分,eg:[联系人](姓名,性别,电话),一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF: 第 ...
- 测试面试常见面试题汇总一
软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与 ...
- 已帮助上千人成功入职2022软件测试面试自我介绍,软件测试常见面试题
目录 一.自我介绍 二.项目介绍 三.技术问题一般会问理论流程还有基础知识包括团队能力怎么样 四.HR常问面试题 五.最后一个问题 六.总结 随着企业对于软件质量的重视,软件测试工程师倍受 ...
- Python常见面试题汇总(根据面试总结)
Redis: Redis缓存击穿.缓存雪崩.缓存重建 回答参考: 缓存击穿: 当一个连接访问缓存数据库中不存在的数据时,会直接通过缓存数据库到后端数据库中查找数据,但如果有大量连接在查询一个不存在的数 ...
- 面试准备:操作系统常见面试题汇总
文章目录 1.为什么要有用户态和内核态?内核态和用户态的运作方式? 2.进程间通信方式介绍 3.Linux查看进程状态.cpu状态.占用端口的进程号的命令?linux top命令VIRT,RES,SH ...
- 《吊打面试官》系列-Redis常见面试题
前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难. 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞 ...
- java基本类型的面试,15、基本类型常见面试题
1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错? 答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表 ...
- 【运维面试】DevOps CI/CD常见面试题
文章目录 1. 什么是DevOps 2. 什么是持续集成 3. 什么是持续交付 4. 什么是持续部署 5. 什么是持续测试及其好处 6. 什么是版本控制及其用途? 7. 什么是 Git? 8. 解释 ...
- Spring常见面试题及答案汇总1000道(春招+秋招+社招)
Spring面试题以及答案整理[最新版]Spring高级面试题大全(2021版),发现网上很多Spring面试题都没有答案,所以花了很长时间搜集,本套Spring面试题大全,汇总了大量经典的Sprin ...
最新文章
- 2022-2028年中国手术室设备行业市场研究及前瞻分析报告
- ubuntu1804系统设置在哪里_新风净化系统的风口到底该放在哪里?
- 对《程序员的自我修养》(龙书)读后思考
- 3D游戏的照明设计理论,第3部分:三点照明法的异端与误区
- MySQL 分组查询
- thymeleaf 判断checkbox是否选中_一日看尽长安花——复选框(CheckBox)数据清洗和统计的SAS实现...
- 95-270-020-源码-指标监测-概述
- 什么是BIOS?BIOS是什么
- java模拟多个用户操作,JAVA 模拟多用户提交动作
- 全国各省份简称、省会、经纬度
- 共享网络隐藏计算机,把电脑变成无线路由器,wifi共享大师隐藏ssid-
- Visual C++ 图像与文字的合成
- android sepolicy 最新小结
- 基于Python的电影数据可视化分析系统 设计报告+答辩PPT+项目源码
- 6-3 写字母(*) (10分)
- 搜狗输入法在idea打不了汉字_IDEA下搜狗输入法输入中文时卡着不动的参考解决方法...
- 中科院最年轻院士入职浙大!他一篇论文未发博士毕业!
- 音频文件格式转化,librosa库支持的语音文件类型
- 《仙剑奇侠传3》仙术合集
- 电商数据监测全过程——采集、清洗、分析