【面试题】SpringMVC部分面试题
SpringMVC面试题
什么是SpringMVC ? 简单介绍下你对SpringMVC的理解 ?
SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过Model,View,Controller分离,将Web层进行职责解耦,把复杂的Web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合
SpringMVC的流程
- 用户发送请求至前端控制器DisparcherServler
- DisparcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle
- 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有生成)一并返回给DisparcherServlet
- DispartcherServlet调用HandlerAdapter处理器适配器
- HandlerAdapter经过适配器调用 具体处理器(Handler)
- Handler执行完成返回ModelAndView
- HandlerAdapter将Model执行结果ModelAndView返回给DispartcherServlet
- DispartcherServlet将ModelAndView传给ViewResolver视图解析器进行解析
- ViewAResokver解析后进返回具体的View‘
- DispatcherServlet对View进行渲染视图(即将视图模型填充至视图中)
- DispartcherServlet相应用户
SpringMVC的优点
- 可以支持各种视图技术,而不仅局限于JSP
- 与Spring框架集成(如IOC容器。AOP等)’
- 清晰的角色分配:前端控制器(DispartcherServlet),请求到处理器映射(handlerMapping),处理器适配器(HandlerAdapter),视图解析器(ViewResolver)。
- 支持各种请求资源的映射策略
SpringMVC的主要组件
- 前端控制器 DispartcherSerlver(不需要程序员开发)
作用:接收请求,相应结果,相当于转发器,有了DisparcherServlet就减少了其他组件之间的耦合度。
- 处理器映射器(HandlerMapping)(不需要程序员开发)
作用:根据请求的URL来查找Handler
- 处理器适配器HandlerAdpater这个是Controller类中的方法
注意:在编写Handler的时候,要哦按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以真确的去执行Handler
- 处理器Controller(需要程序员开发)
- 视图解析器 ViewResolver(不需要程序员开发)
- 视图View(需要程序员开发JSP)
View是一个借口,它的实现支持不同的视图类型(JSP,PDF等等)
SpringMVC是怎么设定重定向和转发的?
- 转发:在返回值前面加“forward”,譬如“forward:user.do?name = method4”
- 重定向:在返回值前面加“redirect”,譬如“redirect:http://www.baidu.com
SpringMVC是怎么和AJAX相互调用的?
通过Jackson框架就可以把Java里面的对象直接转化成JS可以识别的Json对象,具体有下面的几个步骤。
- 加入Jackson.jar
- 在配置文件中配置json的映射
- 在接收AJAX方法里面可以直接返回object,list等,但方法之前要加上@ResponseBody注解
Spring MVC的异常处理
可以抛给Spring框架,由Spring框架来处理:我们只需要配置简单的异常处理,在异常处理器中添加页面即可
SpringMVC的控制器是不是单例模式?如果是,有什么问题,怎么解决?
是单例模式。所以在多线程访问的时候,有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段
SpringMVC常用的注解有哪些?
@RequestMapping:用于处理请求Url映射的纾解,可用于类或方法上。用于类上,则表示类中的所有相应请求的方法都是以改地址作为父路径
@RequestBody:注解实现接收Http请求的json数据,将json转换为Java对象
@ResponseBody:注解实现将Conreoller方法返回对象转化为json对象相应给客户。
SpringMVC中的控制器的注解一般用哪个,有没有别的曲解可以替代?
一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponsBody+@Controller,表示是表现层,除此之外,一般不用别的注解代替
如果在拦截请求中,我想拦截get方法提交的方式,怎么配置?
可以在@RequestMapping注解里面加上 method=RequestMethod.GET.
怎么在方法里得到Request,或者Session
直接在方法的形式参数中声明Request,SpringMVC就会自动把request对象传入
如果想在拦截的方法里面得到从前台传入的参数,怎么得到?
直接在形式参数里Ian声明这个参数就可以,但必须名字和传过来的参数一样。
如果前台有很多歌参数传入,并且这些参数都是一个对象的,那么怎样快速得到这个对象?
直接在方法中声明这个对象,SpringMVC就会自动把属性赋值到这个对象里面
SpringMVC中的函数的返回值是什么?
返回值可以有很多类型,有String,ModelAndView,ModelAndView类把视图和数据都合并的一起,但是一般用String比较好
SpringMVC注解原理?
注解的本质是继承了Annotation的特殊接口,具体实现类是Java运行时生成的动态代理类,我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象,通过代理对象调用自定义menmberValues这个Map中索引对应的值,而memberValues的来源是Java常量池。
Spring声明式事务管理:基于注解的方式
- 在spring.xml中噢诶之事务管理器,DataSourceTransactionManager
- 在spring.xml中开启注解事务
- 在对应业务层添加Transactional注解
【面试题】SpringMVC部分面试题的更多相关文章
- myBatis+Spring+SpringMVC框架面试题整理
myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章 ...
- SpringMVC常见面试题总结(超详细回答)
SpringMVC常见面试题总结(超详细回答) 1.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的 ...
- Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流)
Libre 6006 「网络流 24 题」试题库 / Luogu 2763 试题库问题 (网络流,最大流) Description 问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同 ...
- 震惊!几道Python 理论面试题,Python面试题No18
本面试题题库,由公号:非本科程序员 整理发布 第1题: 简述解释型和编译型编程语言? 解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候 ...
- 面试前赶紧看了5道Python Web面试题,Python面试题No17
目录 本面试题题库,由公号:非本科程序员 整理发布 第1题: Flask中的请求上下文和应用上下文是什么? 第2题:django中间件的使用? 第3题: django开发中数据做过什么优化? 第4题: ...
- 千万不要错过这几道Python面试题,Python面试题No16
第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...
- Mybatis,Spring,SpringMVC框架面试题
Mybatis测试 1, Mybatis的核心是( sqlsessionfactory ) 2, 使用Mybatis持久化框架进行数据查询需要返回的一个实体类的集合, 在<sel ...
- SpringMVC常见面试题总结
1.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一个模块,无需中间整合 ...
- 面试题:SpringMVC的工作流程
SpringMVC是当今最主流的Web MVC框架,没有之一,要做一名合格的JavaWeb工程师,学好它势在必行! 与Struts2原理不同,SpringMVC是通过最基础最传统的servlet来实现 ...
随机推荐
- HBase的安装和使用
文章作者:foochane 原文链接:https://foochane.cn/article/2019062801.html 1 Hbase基本介绍 Hbase是一个分布式数据库,可以提供数据的实时 ...
- Salesforce LWC学习(五) LDS & Wire Service 实现和后台数据交互 & meta xml配置
之前的几节都是基于前台变量进行相关的操作和学习,我们在项目中不可避免的需要获取数据以及进行DML操作.之前的内容中也有提到wire注解,今天就详细的介绍一下对数据进行查询以及DML操作以及Wire S ...
- TextCNN 代码详解(附测试数据集以及GitHub 地址)
前言:本篇是TextCNN系列的第三篇,分享TextCNN的优化经验 前两篇可见: 文本分类算法TextCNN原理详解(一) 一.textCNN 整体框架 1. 模型架构 图一:textCNN 模型结 ...
- ASP.NET Core 2.2 : 二十七. JWT与用户授权(细化到Action)
上一章分享了如何在ASP.NET Core中应用JWT进行用户认证以及Token的刷新,本章继续进行下一步,用户授权.涉及到的例子也以上一章的为基础.(ASP.NET Core 系列目录) 一.概述 ...
- [The Preliminary Contest for ICPC Asia Nanjing 2019] A-The beautiful values of the palace(二维偏序+思维)
>传送门< 前言 这题比赛的时候觉得能做,硬是怼了一个半小时,最后还是放弃了.开始想到用二维前缀和,结果$n\leq 10^{6}$时间和空间上都爆了,没有办法.赛后看题解用树状数组,一看 ...
- nginx有哪些作用
Nginx应该是现在最火的web和反向代理服务器,没有之一.她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现. 那除了负载均衡,她还有什么其他的用途呢,下面 ...
- 转载-Springboot整合ehcache缓存
转载:https://www.cnblogs.com/xzmiyx/p/9897623.html EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统 ...
- HTML(三)链接,<head>,css样式
HTML链接 HTML 超链接 一个未访问过的链接显示为蓝色字体并带有下划线 访问过的链接显示为紫色并带有下划线 点击链接时,链接显示为红色并带有下划线 注意:如果为这些超链接设置了 CSS 样式,展 ...
- print.js继承原有样式
npm install --save print-js import Print from 'print-js' 调用print.js插件 Print({ printable: 'printJS-fo ...
- 零基础一年拿下BAT三家offer
背景 1.本人本科一本双非垫底的那种,硕士211.本硕电子通信,完全0基础,转行一年. 2.研一上第一学期上课+外派到老师合作公司写MATLAB.去年4月开始学习Java. 起步 1.实话说,刚决定转 ...