Java面试题(11)

59.说一说springMVC的运行流程

1. 用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet 捕获;

2. DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调 用 HandlerMapping 获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对 象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回;

3. DispatcherServlet 根据获得的 Handler,选择一个合适的 HandlerAdapter;(附注:如果成功 获 得 HandlerAdapter 后,此时将开始执行拦截器的 preHandler(…)方法)

4. 提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler(Controller)。 在填充 Handler 的入参过程中,根据你的配置,Spring 将帮你做一些额外的工作: HttpMessageConveter: 将请求消息(如 Json、xml 等数据)转换成一个对象,将对象转换为 指定的响应信息 数据转换:对请求消息进行数据转换。如 String 转换成 Integer、Double 等 数据 根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等 数据验证: 验证数据的有效性(长度、格式等),验证结果存储到 BindingResult 或 Error 中

5. Handler 执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象;

6. 根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已经注册到 Spring 容器中 的 ViewResolver)返回给 DispatcherServlet ;

7. ViewResolver 结合 Model 和 View,来渲染视图;

8. 将渲染结果返回给客户端。

60.springmvc有哪些组件

1. DispatcherServlet:前端控制器,把请求转发给具体的控制类

2. Controller:具体处理请求的控制器

3. HandlerMapping:处理器映射器,负责映射前端控制器转发给controller时的映射策略

4. ModelAndView:服务返回的数据和视图层的封装类

5. ViewResolver:视图解析器,解析具体的视图

6. Interceptors:拦截器,负责拦截我们定义的请求然后做处理工作

61.说一下如何解决get和post乱码

post:在web.xml中配置CharacterEncodingFilter过滤器,将encoding设置为UTF-8

get:

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

2. 对参数进行重新编码

62.springmvc的拦截器与过滤器有什么区别

拦截器不依赖于servlet容器,过滤器依赖于servlet容器 拦截器只能对action请求起作用,而过滤器集合可以对所有的请求起作用 拦截器可以访问容器中的bean,而过滤器不能访问

(1)多个拦截器的执行顺序 与xml文件中,拦截器定义的顺序有关。

假设定义了两个拦截器,那么对于拦截的controller执行顺序是这样的 preHandle1执行---->preHandle2执行---->postHandler2执行---->postHandler1执行---- >afterCompletion2执行---->afterCompletion1执行 另外,postHandler在拦截器链内所有拦截器返回成功才会调用 afterCompletion只有在preHandle返回true才调用

63.说一下@RequestMaping的作用

用于处理请求地址映射的注解,可以用在类和方法上。用在类上,表示类中的所有响应请求的方法都是 以该地址作为父路径。

它包括了六个属性: value、method:分别指请求的实际地址以及请求的类型(get、put、post、delete)

consumes、produces:分别用来指定处理请求提交的内容类型(application/json等)以及指 定返回的内容类型

params、headers:分别用来指定request中必须包含某些参数值才可以让该方法处理,以及指 定request中必须包含某些指定的header值才能让方法处理请求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/438592.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

敲黑板啦!CSGO游戏搬砖项目操作注意事项

CSGO游戏搬砖项目怎么赚钱的,利润在哪? 1.两个平台之间币种不一样,就存在一个汇率差,两平台装备价格也不一样,汇率差-价格差利润。 CSGO游戏搬砖项目具体有哪些操作步骤? 1、准备一台电脑,配置…

数字图像处理(实践篇)二十八 使用OpenCV Python中的K-means对图像进行颜色量化处理

目录 1 颜色量化 2 实践 在某些时候,不可避免的某些设备只能生成有限数量的颜色。因此需要执行颜色量化。选择使用cv2.kmeans()函数对颜色量化应用k-means聚类。 1 颜色量化 使用K-means聚类在图像中实现颜色量化的步骤如下: ① 导入依赖库

FTP文件传输协议

一、存储类型 存储类型分为三种 直连式存储:Direct-Attached Storage,简称DAS 存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理) 网络附加存储:Networ…

【leetcode】232. 用栈实现队列

用栈实现队列 题目链接 typedef int valuetype; typedef struct {valuetype* arr;int top;int capacity; } Stack;void Init(Stack* stack);void Push(Stack* stack, valuetype value); void Pop(Stack* stack);valuetype Top(Stack* stack); int Size(Stack* stack); bool…

C/C++ - 函数进阶(C++)

目录 默认参数 函数重载 内联函数 函数模板 递归函数 回调函数 默认参数 定义 默认参数是在函数声明或定义中指定的具有默认值的函数参数。默认参数允许在调用函数时可以省略对应的参数,使用默认值进行替代。 使用 默认参数可以用于全局函数和成员函数。默认参…

Docker安装RcoketMQ

1、Docker安装RcoketMQ-4.9.4 在同级文件夹创建目录config,并在里面创建文件broker.conf,文件内容如下: brokerClusterNameDefaultCluster brokerNamebroker-a brokerId0 deleteWhen04 fileReservedTime48 brokerRoleASYNC_MASTER flushDis…

子类构造器的特点

子类的全部构造器,都会先调用父类的构造器,再执行自己 class F{public F(){System.out.println("父类的无参数构造器");} }class Z extends F{public Z(){System.out.println("子类的无参数构造器");} }public class Test {public s…

Python第三方扩展库Matplotlib

Python第三方扩展库Matplotlib Matplotlib 是第三方库,不是Python安装程序自带的库,需要额外安装,它是Python的一个综合性的绘图库,提供了大量的绘图函数用于创建静态、动态、交互式的图形和数据可视化,可以帮助用户创…

【深度学习:目标检测】深度学习中目标检测模型、用例和示例

【深度学习:目标检测】深度学习中目标检测模型、用例和示例 什么是物体检测?物体检测与图像分类物体检测与图像分割 计算机视觉中的目标检测物体检测的优点物体检测的缺点深度学习和目标检测人员检测 物体检测如何工作?一阶段与两阶段深度学习…

算法每日一题: 边权重均等查询 | 公共子祖先

大家好,我是星恒,今天给大家带来的是一道图里面有关公共子祖先的题目,理解起来简单,大家 题目:leetcode 2846 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n …

༺༽༾ཊ—Unity之-05-抽象工厂模式—ཏ༿༼༻

首先创建一个项目, 在这个初始界面我们需要做一些准备工作, 建基础通用文件夹, 创建一个Plane 重置后 缩放100倍 加一个颜色, 任务:使用 抽象工厂模式 创建 人物与宠物 模型, 首先资源商店下载 人物与宠物…

258. Add Digits(各位相加)

问题描述 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 问题分析 我们至少要将num的每一位相加一次得到一个新的数字,然后判断是否新的数字需要每一位再次相加,如此重复下去,这…