SpringMVC面试题总结

1.SpringMVC的流程

首先用户的请求会到达前端控制器DispacherServlet,然后前端控制器将请求交给【处理器映射器】HandlerMapping,找到处理请求的处理器Handler,找到之后再将Handler交给【适配器】HandlerAdaptor进行适配,然后再进行数据校验,数据转换,数据封装等工作,之后就会执行Handler处理器,返回一个ModelAndView对象,最后前端控制器将ModelAndView对象交给视图解析器处理,返回物理视图,再将model中的数据渲染到页面中响应给请求方。

2.SpringMVC和struts2的区别有哪些?

1.springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。
2.springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

3.SpringMVC怎么样设定重定向和转发的

转发:在返回值前面加"forward:",譬如"forward:main"
重定向:在返回值前面加"redirect:",譬如"redirect:

转发和重定向的区别?(几次请求)
重定向:多次请求 - 地址栏变化 - 不能共享request中的数据 - 不能访问WEB-INF的资源 - 可以访问外部资源
转发:一次请求 - 地址栏没有变化 - 能共享request中的数据 - 可以访问WEB-INF的资源 - 不可以访问外部资源
SpringMvc默认用的是转发:转发是内部转发,效率要高一些
SpringMvc中如果非要重定向:return "redirect:/xxx.jsp"; - 不会经过是视图解析器

4.SpringMvc的控制器是单例模式吗

SpringMvc控制器是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的
解决方案是在控制器里面不能写字段。

5.SpringMvc怎么和AJAX相互调用

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :
1)加入Jackson.jar
2)在配置文件中配置json的映射
3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。

6.如何解决中文乱码问题

1)解决post请求乱码问题:
在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8;
2)get请求中文参数出现乱码解决方法有两个:
修改tomcat配置文件添加编码与工程编码一致
另外一种方法对参数进行重新编码

7.Spring MVC的主要组件

前端控制器、处理器映射器、处理器适配器、处理器、视图解析器

8.SpringMVC常用注解

@RequestMapping:用于处理请求 url 映射的注解
@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
@Controller
@PathVariable

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容