目录
黑马
一 谈一下你对 SpringMVC 框架的理解(了解)
二 SpringMVC 主要组件(必会)
三 谈一下 SpringMVC 的执行流程以及各个组件的作用(必会)
四 说一下 SpringMVC 支持的转发和重定向的写法(必会)
五 SpringMVC 的常用注解(必会)
六 谈一下 SpringMVC 统一异常处理的思想和实现方式(必会)
七 在 SpringMVC 中, 如果想通过转发将数据传递到前台,有几种写法?(必会)
八 在 SpringMVC 中拦截器的使用步骤是什么样的?(必会)
九 在 SpringMVC 中文件上传的使用步骤是什么样的? 前台三要素是什么?(必会)
十 SpringMVC 中如何解决 GET|POST 请求中文乱码问题?(了解)
十一 SpringMVC 执行流程(工作原理)?
十二 SpringMVC 的常用注解有哪些?
十二 SpringMVC 如何处理统一异常?
硅谷
一 . 简单的谈一下SpringMVC的工作流程?
二 SpringMVC中如何解决POST请求中文乱码问题
三 简述SpringMvc里面拦截器是如何定义,如何配置,拦截器中三个重要的方法
四 简述Springmvc中处理模型数据的两种方式
五 简述REST中的四种请求方式及对应的操作
六 简述视图和视图解析的关系及作用
七 说出三个 常用的视图类
八 简述REST中HiddenHttpMethodFilter过滤器的作用
九 简述Springmvc中如何返回JSON数据
十 Springmvc中的控制器的注解用哪个,可以是否用别的注解代替
十一 如何在Springmvc中获取客户端提交的请求参数
十二 简述Springmvc中InternalResourceViewResolver解析器的工作机制
十三 Springmvc中如何完成重定向
十四 SpringMVC的工作原理
十五 说出SpringMVC常用的5个注解?如何使用 SpringMVC完成JSON操作?
黑马
一 谈一下你对 SpringMVC 框架的理解(了解)
SpringMVC 是一个基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web
框架,通过把 Model,View,Controller 分离,将 web 层进行职责解耦,把复杂的 web
应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
在我看来,SpringMVC 就是将我们原来开发在 servlet 中的代码拆分了,一部分由SpringMVC 完成,一部分由我们自己完成
二 SpringMVC 主要组件(必会)
前 端控制器 DispatcherServlet:接收请求、响应结果,相当于转发器,有了
DispatcherServlet 就减少了其它组件之间的耦合度。
处理器映射器 HandlerMapping:根据请求的 URL 来查找 Handler
处理器适配器 HandlerAdapter:负责执行 Handler
处理器 Handler:处理业务逻辑的 Java 类
视图解析器 ViewResolver:进行视图的解析,根据视图逻辑名将 ModelAndView 解
析成真正的视图(view)
视图 View:View 是一个接口, 它的实现类支持不同的视图类型,如 jsp,
freemarker,pdf 等等
三 谈一下 SpringMVC 的执行流程以及各个组件的作用(必会)
1. 用户发送请求到前端控制器(DispatcherServlet)
2. 前 端 控 制 器 ( DispatcherServlet ) 收 到 请 求 调 用 处 理 器 映 射 器
(HandlerMapping),去查找处理器(Handler)
3. 处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解进行
查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
4. 前端控制器(DispatcherServlet)调用处理器映射器(HandlerMapping)
5. 处理器适配器(HandlerAdapter)去调用自定义的处理器类(Controller,也叫
后端控制器)。
6.自定义的处理器类(Controller,也叫后端控制器)将得到的参数进行处理并返回结
果给处理器映射器(HandlerMapping)
7. 处 理 器 适 配 器 ( HandlerAdapter ) 将 得 到 的 结 果 返 回 给 前 端 控 制 器
(DispatcherServlet)
8. DispatcherServlet( 前 端 控 制 器 ) 将 ModelAndView 传 给 视 图 解 析 器
(ViewReslover)
9. 视图解析器(ViewReslover)将得到的参数从逻辑视图转换为物理视图并返回给
前端控制器(DispatcherServlet)
10. 前端控制器(DispatcherServlet)调用物理视图进行渲染并返回
11. 前端控制器(DispatcherServlet)将渲染后的结果返回
四 说一下 SpringMVC 支持的转发和重定向的写法(必会)
1)转发:
forward 方式:在返回值前面加"forward:",比如"”"forward:user.do?name=method4"
2) 重定向:
redirect 方式:在返回值前面加 redirect:, 比如"redirect:http://www.baidu.com"
五 SpringMVC 的常用注解(必会)
1.@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类
上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
2.@RequestBody:注解实现接收 http 请求的 json 数据,将 json 转换为 java 对象。
3.@ResponseBody:注解实现将 conreoller 方法返回对象转化为 json 对象响应给客
户。
4.@PathVariable 用户从 url 路径上获取指定参数,标注在参数前 @PathVariabel("
要获取的参数名")。
5.@RequestParam: 标注在方法参数之前,用于对传入的参数做一些限制,支持三个
属性:
- value:默认属性,用于指定前端传入的参数名称
- required:用于指定此参数是否必传
- defaultValue:当参数为非必传参数且前端没有传入参数时,指定一个默认值
6. @ControllerAdvice 标注在一个类上,表示该类是一个全局异常处理的类。
7. @ExceptionHandler(Exception.class) 标注在异常处理类中的方法上,表示该方法
可以处理的异常类型。
六 谈一下 SpringMVC 统一异常处理的思想和实现方式(必会)
使用 SpringMVC 之后,代码的调用者是 SpringMVC 框架,也就是说最终的异常会抛到
框架中,然后由框架指定异常处理类进行统一处理
方式一: 创建一个自定义异常处理器(实现 HandlerExceptionResolver 接口),并实
现里面的异常处理方法,然后将这个类交给 Spring 容器管理
方式二: 在类上加注解(@ControllerAdvice)表明这是一个全局异常处理类
在 方 法 上 加 注 解 (@ExceptionHandler), 在 ExceptionHandler 中 有 一 个
value 属性,可以指定可以处理的异常类型
七 在 SpringMVC 中, 如果想通过转发将数据传递到前台,有几种写法?(必会)
方式一:直接使用 request 域进行数据的传递
request.setAttirbuate("name", value);
方式二:使用 Model 进行传值,底层会将数据放入 request 域进行数据的传递
model.addAttribuate("name", value);
方式三:使用 ModelMap 进行传值,底层会将数据放入 request 域进行数据的传递
modelmap.put("name",value);
方式四:借用 ModelAndView 在其中设置数据和视图
mv.addObject("name",value);
mv.setView("success");
return mv;
八 在 SpringMVC 中拦截器的使用步骤是什么样的?(必会)
1 定义拦截器类:
SpringMVC 为 我 们 提 供 了 拦 截 器 规 范 的 接 口 , 创 建 一 个 类 实 现
HandlerInterceptor,重写接口中的抽象方法;
preHandle 方法:在调用处理器之前调用该方法,如果该方法返回 true 则请
求继续向下进行,否则请求不会继续向下进行,处理器也不会调用
postHandle 方法:在调用完处理器后调用该方法
afterCompletion 方法:在前端控制器渲染页面完成之后调用此方法
2 注册拦截器:
在 SpringMVC 核心配置文件中注册自定义的拦截器
九 在 SpringMVC 中文件上传的使用步骤是什么样的? 前台三要素是什么?(必会)
文件上传步骤:
1.加入文件上传需要的 commons-fileupload 包
2.配置文件上传解析器,springmvc 的配置文件的文件上传解析器的 id 属性必须为
multipartResolver
3.后端对应的接收文件的方法参数类型必须为 MultipartFile,参数名称必须与前端
的 name 属性保持一致
文件上传前端三要素:
1.form 表单的提交方式必须为 post
2.enctype 属性需要修改为:multipart/form-data
3.必须有一个 type 属性为 file 的 input 标签,其中需要有一个 name 属性;如果需要
上传多个文件需要添加 multiple 属性
十 SpringMVC 中如何解决 GET|POST 请求中文乱码问题?(了解)
(1) 解决 post 请求乱码问题:在 web.xml 中配置一个 CharacterEncodingFilter 过
滤器,设置成 utf-8;
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
(2) get 请求中文参数出现乱码解决方法有两个:
①修改 tomcat 配置文件添加编码与工程编码一致,如下:
②另外一种方法对参数进行重新编码:
String userName= new String(request.getParamter("userName").getBytes("ISO885
9-1"),"utf-8")
ISO8859-1 是 tomcat 默认编码,需要将 tomcat 编码后的内容按 utf-8 编码。
十一 SpringMVC 执行流程(工作原理)?
MVC 是 Model — View — Controler 的简称,它是一种架构模式,它分离了表现与
交互。它被分为三个核心部件:模型、视图、控制器。
• Model (模型):是程序的主体部分,主要包含业务数据和业务逻辑。在模型层,
还会涉及到用户发布的服务,在服务中会根据不同的业务需求,更新业务模型
中的数据。
• View (视图):是程序呈现给用户的部分,是用户和程序交互的接口,用户会
根据具体的业务需求,在 View 视图层输入自己特定的业务数据,并通过界面
的事件交互,将对应的输入参数提交给后台控制器进行处理。
• Controller (控制器): Controller 是用来处理用户输入数据,以及更新业务模型
的部分。控制器中接收了用户与界面交互时传递过来的数据,并根据数据业务
逻辑来执行服务的调用和更新业务模型的数据和状态。
工作原理:
• 1. 客户端(浏览器)发送请求,直接请求到 DispatcherServlet 。
• 2.DispatcherServlet 根据请求信息调用 HandlerMapping ,解析请求对应的
Handler 。
• 3. 解析到对应的 Handler (也就是我们平常说的 Controller 控制器)。
• 4.HandlerAdapter 会根据 Handler 来调用真正的处理器来处理请求和执行相对应
的业务逻 辑。
• 5. 处理器处理完业务后,会返回一个 ModelAndView 对象, Model 是返回的数据
对象, View 是逻辑上的 View 。
• 6.ViewResolver 会根据逻辑 View 去查找实际的 View 。
• 7.DispatcherServlet 把返回的 Model 传给 View (视图渲染)。
• 8. 把 View 返回给请求者(浏览器)。
十二 SpringMVC 的常用注解有哪些?
• @RequestMapping :用于处理请求 url 映射的注解,可用于类或方法上。用于
类上,则表示类中的所有响应请求的方法都是以该地址作为父路径;
• @RequestBody :注解实现接收 HTTP 请求的 json 数据,将 json 转换为 Java
对象;
• @ResponseBody :注解实现将 Controller 方法返回对象转化为 json 对象响应
给客户
十二 SpringMVC 如何处理统一异常?
• 方式一 : 创建一个自定义异常处理器 ( 实现 HandlerExceptionResolver 接口 ), 并
实现里面 的异常处理方法 , 然后将这个类交给 Spring 容器管理
• 方式二 : 在类上加注解 (@ControllerAdvice) 表明这是一个全局异常处理类在方法
上加注解 (@ExceptionHandler), 在 ExceptionHandler 中 有 一 个 value 属性 ,
可以指定可以处理的异常类型
硅谷
一 . 简单的谈一下SpringMVC的工作流程?
- 用户发送请求至前端控制器DispatcherServlet
- DispatcherServlet收到请求调用HandlerMapping处理器映射器。
- 处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdapter处理器适配器
- HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
- Controller执行完成返回ModelAndView
- HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
- DispatcherServlet将ModelAndView传给ViewReslover视图解析器
- ViewReslover解析后返回具体View
- DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
- DispatcherServlet响应用户
二 SpringMVC中如何解决POST请求中文乱码问题
Springmvc中通过CharacterEncodingFilter解决中文乱码问题.
在web.xml中加入:
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
三 简述SpringMvc里面拦截器是如何定义,如何配置,拦截器中三个重要的方法
定义:有两种方式
- 实现HandlerInterceptor接口
- 继承HandlerInterceptorAdapter
配置:
拦截器中三个重要的方法:
- preHandle
- postHandle
- afterCompletion
四 简述Springmvc中处理模型数据的两种方式
- 使用ModelAndView 作为方法的返回值,将模型数据和视图信息封装到ModelAndView中
- 使用Map或者是Model 作为方法的形参,将模型数据添加到Map或者是Model中
五 简述REST中的四种请求方式及对应的操作
GET 查询操作
POST 添加操作
DELETE 删除操作
PUT 修改操作
六 简述视图和视图解析的关系及作用
- 视图是由视图解析器解析得到的。
- 视图解析器的作用是根据ModelAndView中的信息解析得到具体的视图对象
- 视图的作用是完成模型数据的渲染工作,最终完成转发或者是重定向的操作
七 说出三个 常用的视图类
InternalResourceView
JstlView
RedirectView
八 简述REST中HiddenHttpMethodFilter过滤器的作用
该过滤器主要负责转换客户端请求的方式,当浏览器的请求方式为POST,并且在请求中能通过 _method获取到请求参数值。该过滤器就会进行请求方式的转换。
一般在REST中,都是将POST请求转换为对应的DELETE 或者是PUT
九 简述Springmvc中如何返回JSON数据
Step1:在项目中加入json转换的依赖,例如jackson,fastjson,gson等
Step2:在请求处理方法中将返回值改为具体返回的数据的类型, 例如数据的集合类List等
Step3:在请求处理方法上使用@ResponseBody注解
十 Springmvc中的控制器的注解用哪个,可以是否用别的注解代替
使用@Controller注解来标注控制器,不能使用别的注解代替。
十一 如何在Springmvc中获取客户端提交的请求参数
直接在请求处理方法中声明对应的形参,也可以是用@RequestParam注解来具体指定将那些请求参数映射到方法中对应的形参。
十二 简述Springmvc中InternalResourceViewResolver解析器的工作机制
使用prefix + 方法的返回值 + suffix 生成一个物理视图路径。
十三 Springmvc中如何完成重定向
在请求处理方法的返回值前面加 redirect: 前缀, 最终会解析得到RedirectView,RedirectView会完成重定向的操作。
十四 SpringMVC的工作原理
(1)用户向服务器发送请求,请求被springMVC 前端控制器 DispatchServlet 捕获;
(2)DispatcherServle 对请求 URL 进行解析,得到请求资源标识符(URL),然后根据该 URL 调用 HandlerMapping将请求映射到处理器 HandlerExcutionChain;
(3)DispatchServlet 根据获得 Handler 选择一个合适的HandlerAdapter 适配器处理;
(4)Handler 对数据处理完成以后将返回一个 ModelAndView()对象给 DisPatchServlet;
(5)Handler 返回的 ModelAndView() 只是一个逻辑视图并不是一个正式的视图, DispatcherSevlet 通过ViewResolver 试图解析器将逻辑视图转化为真正的视图View;
(6)DispatcherServle 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端;
十五 说出SpringMVC常用的5个注解?如何使用 SpringMVC完成JSON操作?
@Controller
@RequestMapping
@Resource和@Autowired
@PathVariable
@Repository
使用下面的注解完成json操作
@RequestBody
@ResponseBody