程序员

这些SpringMvc面试题你得知道,阿里,美团这些大厂面试官都

2020-08-04  本文已影响0人  程序员伟杰

一、什么是 SpringMvc?

SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合。

二、Spring MVC 的优点

1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和 Spring 提供的其他基础结构紧密集成

2)不依赖于 Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)

3)可以任意使用各种视图技术,而不仅仅局限于 JSP

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

5)它应是易于扩展的

三、SpringMVC 的工作原理和流程

原理如下图所示:


流程说明:

  1. 客户端( 浏览器) 发送请求, 直接请求到DispatcherServlet
  2. DispatcherServlet 根据请求信息调用HandlerMapping, 解析请求对应的Handler
  3. 解析到对应的Handler ( 也就是我们平常说的Controller 控制器) 后, 开始由HandlerAdapter 适配器处理
  4. HandlerAdapter 会根据Handler 来调用真正的处理器处理请求, 并处理相应的业务逻辑
  5. 处理器处理完业务后, 会返回一个ModelAndView对象, Model 是返回的数据对象, View 是个逻辑上的视图
  6. ViewResolver 会根据逻辑View 查找实际的View视图
  7. DispaterServlet 把返回的Model 传给View ( 视图渲染)
  8. 最后把View视图返回给客户端(浏览器)

四、SpringMvc中如何开启注解处理器和适配器?

我们在项目中一般会在 springmvc.xml 中通过开启 < mvc:annotation-driven> 来实现注解处理器和适配器的开启

五、SpringMvc中如何解决 get 和 post 乱码问题?

  解决 post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器, 设置为 UTF-8
  解决 get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法有两个:
  1. 修改 tomcat 配置文件添加编码与工程编码一致
  2. 另 外一 种方法 对参数进行重新编码 String userName = New
    String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “utf-8”);

六、SpringMvc和Struts2有什么区别?

  1. springMVC单例非线程安全,struts2线程安全(对每个请求都产生一个实例)
  2. springMvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器
  3. springMVC是基于方法的设计,而sturts是基于类
  4. springMVC是用方法来接受参数;struts2 是通过类的属性传递参数

七、SpringMvc 里面拦截器是怎么写的?

  有两种写法,一种是实现接口,另外一种是继承适配器类,然后在 SpringMvc 的配置文件中配置拦截器即可;

< !-- 配置 SpringMvc 的拦截器 -->:

<mvc:interceptors>
    <!-- 配置一个拦截器的 Bean 就可以了 默认是对所有请求都拦截 -->
    <bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"></bean>
    <!-- 只针对部分请求拦截 -->
        <mvc:interceptor>
            <mvc:mapping path="/modelMap.do" />
            <bean class="com.et.action.MyHandlerInterceptorAdapter" />
        </mvc:interceptor>
</mvc:interceptors>

最后

感谢你看到这里,看完有什么的不懂的可以在评论区问我,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!

上一篇下一篇

猜你喜欢

热点阅读