Spring MVC常见面试题解析

1、请简单说一下Spring MVC的请求处理过程(工作原理)

只要问及Spring MVC框架,这一题基本80%的概率会被问及,大致如下:
从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发,大致处理流程如下:

Spring MVC请求流程.jpg

A.用户向服务器发送请求,请求被 springMVC前端控制器(DispatchServlet)捕获

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

C.前端控制器根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理

D. Handler 对数据处理完成以后将返回一个 ModelAndView()对象给前端控制器

E. Handler 返回的 ModelAndView()只是一个逻辑视图并不是一个正式的视图,前端控制器通过ViewResolver 试图解析器将逻辑视图转化为真正的视图 View;

F. DispatcherServle 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端;

2、SpringMVC 常用注解都有哪些?

@requestMapping:用于请求 url 映射。
@RequestBody: 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。
@ResponseBody :注解实现将 controller 方法返回对象转化为 json 响应给客户。
@Conntroller:控制器的注解,表示是表现层,不能用用别的注解代替

3、如何开启注解处理器和适配器?

在配置文件中(一般命名为springmvc.xml )通过开启 <mvc:annotation-driven>来实现注解处理器和适配器的开启。

4、如何解决 get 和 post 乱码问题?

解决 post 请求乱码:在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器并设置编码为 utf-8即可。

解决 get 请求乱码:

  1. 修改 tomcat 配置文件添加编码与工程编码一致。
  2. 对参数进行重新编码
String  userName  =  New String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “utf-8”);
--ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码。

5、SpringMVC怎么样设置重定向和转发?

在返回值前面加"forward:"就可以让结果转发
如"forward:user.do?name=method4"

在返回值前面加"redirect:"就可以让返回值重定向
如"redirect:http://www.baidu.com"

6、springMVC和struts2的区别有哪些?

A.springmvc的入口是一个servlet即前端控制器(DispatchServlet)
struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。

B.springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例)
struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

C.springmvc通过参数解析器将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面,Jsp视图解析器默认使用jstl
Struts采用值栈存储请求和响应的数据,通过OGNL存取数据。

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

推荐阅读更多精彩内容

  • SpringMVC介绍 Spring web mvc 和Struts2都属于表现层的框架,它是Spring框架的一...
    day_Sunny阅读 4,162评论 0 0
  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 4,227评论 0 0
  • 1.Spring web mvc介绍 Spring web mvc和Struts2都属于表现层的框架,它是Spri...
    七弦桐语阅读 13,954评论 2 38
  • SpringMVC介绍 Spring web mvc 和Struts2都属于表现层的框架,它是Spring框架的一...
    So_ProbuING阅读 3,942评论 0 0
  • 1.Spring背景 1.1.Spring四大原则: 使用POJO进行轻量级和最侵入式开发; 通过依赖注入和基于借...
    嗷大彬彬阅读 4,189评论 0 2