这些SpringMvc面试题你得知道,阿里,美团这些大厂面试官都
2020-08-04 本文已影响0人
程序员伟杰
一、什么是 SpringMvc?
SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整合。
二、Spring MVC 的优点
1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和 Spring 提供的其他基础结构紧密集成
2)不依赖于 Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)
3)可以任意使用各种视图技术,而不仅仅局限于 JSP
4)支持各种请求资源的映射策略
5)它应是易于扩展的
三、SpringMVC 的工作原理和流程
原理如下图所示:
流程说明:
- 客户端( 浏览器) 发送请求, 直接请求到DispatcherServlet
- DispatcherServlet 根据请求信息调用HandlerMapping, 解析请求对应的Handler
- 解析到对应的Handler ( 也就是我们平常说的Controller 控制器) 后, 开始由HandlerAdapter 适配器处理
- HandlerAdapter 会根据Handler 来调用真正的处理器处理请求, 并处理相应的业务逻辑
- 处理器处理完业务后, 会返回一个ModelAndView对象, Model 是返回的数据对象, View 是个逻辑上的视图
- ViewResolver 会根据逻辑View 查找实际的View视图
- DispaterServlet 把返回的Model 传给View ( 视图渲染)
- 最后把View视图返回给客户端(浏览器)
四、SpringMvc中如何开启注解处理器和适配器?
我们在项目中一般会在 springmvc.xml 中通过开启 < mvc:annotation-driven> 来实现注解处理器和适配器的开启
五、SpringMvc中如何解决 get 和 post 乱码问题?
解决 post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器, 设置为 UTF-8
解决 get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法有两个:
- 修改 tomcat 配置文件添加编码与工程编码一致
- 另 外一 种方法 对参数进行重新编码 String userName = New
String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “utf-8”);
六、SpringMvc和Struts2有什么区别?
- springMVC单例非线程安全,struts2线程安全(对每个请求都产生一个实例)
- springMvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器
- springMVC是基于方法的设计,而sturts是基于类
- 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相关技术文章或行业资讯,欢迎大家关注和转发文章!