目录
三 谈一下 SpringMVC 的执行流程以及各个组件的作用(必会)
四 说一下 SpringMVC 支持的转发和重定向的写法(必会)
六 谈一下 SpringMVC 统一异常处理的思想和实现方式(必会)
七 在 SpringMVC 中, 如果想通过转发将数据传递到前台,有几种写法?(必会)
八 在 SpringMVC 中拦截器的使用步骤是什么样的?(必会)
九 在 SpringMVC 中文件上传的使用步骤是什么样的? 前台三要素是什么?(必会)
十 SpringMVC 中如何解决 GET|POST 请求中文乱码问题?(了解)
三 简述SpringMvc里面拦截器是如何定义,如何配置,拦截器中三个重要的方法
八 简述REST中HiddenHttpMethodFilter过滤器的作用
十 Springmvc中的控制器的注解用哪个,可以是否用别的注解代替
十二 简述Springmvc中InternalResourceViewResolver解析器的工作机制
十五 说出SpringMVC常用的5个注解?如何使用 SpringMVC完成JSON操作?
- <mvc:interceptors>
- <mvc:interceptor>
- <mvc:mapping path="拦截路径规则"/>
- <mvc:exclude-mapping path="不拦截路径规则"/>
- <bean class="自定义拦截器的类全限定名"/>
- mvc:interceptor>
- mvc:interceptors>
- <filter>
- <filter-name>CharacterEncodingFilterfilter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter
- ter-class>
- <init-param>
- <param-name>encodingparam-name>
- <param-value>utf-8param-value>
- init-param>
- filter>
- <filter-mapping>
- <filter-name>CharacterEncodingFilterfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
(2) get 请求中文参数出现乱码解决方法有两个:
①修改 tomcat 配置文件添加编码与工程编码一致,如下:
-
-
- rotocol="HTTP/1.1" redirectPort="8443"/>
②另外一种方法对参数进行重新编码:
- 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中加入:
- <filter>
- <filter-name>CharacterEncodingFilterfilter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
- <init-param>
- <param-name>encodingparam-name>
- <param-value>utf-8param-value>
- init-param>
- filter>
- <filter-mapping>
- <filter-name>CharacterEncodingFilterfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
三 简述SpringMvc里面拦截器是如何定义,如何配置,拦截器中三个重要的方法
定义:有两种方式
- 实现HandlerInterceptor接口
- 继承HandlerInterceptorAdapter
配置:
- <mvc:interceptors>
-
- <bean id="myFirstInterceptor" class="com.atguigu.interceptor.MyFirstInterceptor">
- bean>
-
- <mvc:interceptor>
- <mvc:mapping path=" " />
- <mvc:exclude-mapping path=””/>
- <bean class=" com.atguigu.interceptor.MySecondInterceptor " /> mvc:interceptor>
- mvc:interceptors>
拦截器中三个重要的方法:
- 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