A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 梦想飞翔的猪 于 2017-10-30 16:57 编辑

【石家庄校区】SpringMvc常见面试题总结一


最近在学习SpringMvc,刚开始看到这个东西的时候并没有想太多,因为自己觉得用的机会很少,所以也没在意。但是慢慢的发现springMvc比struts2用着舒服多了,而且听说现在也是比较主流的web框架,感觉这东西得好好学习一下了,还有就是感觉面试的时候会问到的一些问题,现在呢提前总结一下,在这里记录一下。

springMvc的执行流程?

         这个东西估计是面试过程中关于springMvc问的最多的虽然真正使用的时候很少考虑到,下面我们就结合图文来记录一下springMvc的执行流程

{:8_502:}图片来啦~~

这是一个简单的图片,接下来我们来说一下具体的执行流程。

{:8_502:}喏,流程

         1、用户发送请求至前端控制器DispatcherServlet

         2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

         3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

         4、DispatcherServlet调用HandlerAdapter处理器适配器

         5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

         6、Controller执行完成返回ModelAndView

         7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

         8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器

         9、ViewReslover解析后返回具体View

        10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

        11、DispatcherServlet响应用户

SpringMVC与Struts2的主要区别?


     {:8_502:}区别一:springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。

           {:8_502:}区别二:springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能                       设计为多例。

            {:8_502:}区别三:Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据                    和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。

如何解决POST请求中文乱码问题,GET的又如何处理呢?

      在web.xml中加入:

                        

[XML] 纯文本查看 复制代码
<filter>[/p]    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
                      以上可以解决post请求乱码问题。对于get请求中文参数出现乱码解决方法有两个:
                              1. 修改tomcat配置文件添加编码与工程编码一致,如下:
[AppleScript] 纯文本查看 复制代码
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
                              2.另外一种方法对参数进行重新编码:
[Java] 纯文本查看 复制代码
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

799093-20160724233025107-1243112232.jpg (117.57 KB, 下载次数: 13)

799093-20160724233025107-1243112232.jpg

1 个回复

倒序浏览
哇。。。。图片为什么跑到了下面。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马