vlambda博客
学习文章列表

2019年SpringMVC常见面试题

一)Springmvc执行流程

1、 发起请求到前端控制器(disptcherServlet)

2、 前端控制器请求handlerMapper寻找handker

3、 处理器映射器(handlerMapper)向前端控制器返回handler

4、 前端控制器调用处理器适配器去执行handler

5、 处理器适配器执行handler

6、 Handler执行完成向适配器返回ModelAndView

7、 处理器适配器向前端控制器返回ModelAndview

8、 前端控制器请求视图解析器进行视图解析

9、 视图解析器向前端控制器返回view

10、前端控制器进行视图渲染

11、前端控制器向用户响应结果

二)SpringMVC常用注解

1、@component 创建类对象 相当于配置<bean>

2、@service 写在serviceimpl类上 作用和@component一样

3、@Repository 写在数据访问层上 作用和@component一样

4、@controller 写在控制器上 作用和@component一样

6、@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

7、@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

三)SpringMVC怎么样设定重定向和转发的?

(1)转发:在返回值前面加"forward:",比如"forward:user.go?name=1"

(2)重定向:在返回值前面加"redirect:",比如"redirect:user.go"

四)SpringMvc怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下

(1)加入Jackson.jar

(2)在配置文件中配置json的映射

(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。

五)Springmvc的优点:

(1)可以支持各种视图技术,而不仅仅局限于JSP;

(2)与Spring框架集成(如IoC容器、AOP等);

(3)清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。

(4) 支持各种请求资源的映射策略。

六)Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)

作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

(2)处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的URL来查找Handler

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler(需要程序员开发)

(5)视图解析器 ViewResolver(不需要程序员开发)

作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)

(6)视图View(需要程序员开发jsp)

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

七)、SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?

一般用@Conntroller注解,表示是表现层,不能用别的注解代替。

八)、如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?

可以在@RequestMapping注解里面加上method=RequestMethod.GET。

九)、怎样在方法里面得到Request,或者Session?

直接在方法的形参中声明request,SpringMvc就自动把request对象传入。

十)、如果想在拦截的方法里面得到从前台传入的参数,怎么得到?

直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样。

十一)、如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。

十二)、SpringMvc中函数的返回值是什么?

返回值可以有很多类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一起的,但一般用String比较好。

十三)、SpringMvc用什么对象从后台向前台传递数据的?

通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到。