SpringMVC相关的面试题
SpringMVC相关的面试题
1.什么是springMVC
springmvc是spirng框架的一个模块,是一个基于MVC框架的web框架
2.springmvc的流程
a.客户端发送请求
b.前端控制器DispatcherServlet 接收请求,并调用处理映射器HandlerMapping(可以根据xml配置、注解进行查)
c.处理映射器到具体的处理器进行处理,生成处理器对象Handler以及处理HandlerInterceptor(如果有则生成)返回到前端控制器
d.DispatcherServlet 调用处理适配器HandlerAdapter
e.处理适配器通过调用具体的处理器,处理器执行后生成ModelAndView,返回给处理适配器ModelAndView对象
f.处理适配器向DispatcherServlet 返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)
g.DispatcherServlet 将ModelAndView 传递给视图解析器 ViewReslover
h.视图解析器解析后返回具体的view(根据逻辑视图名解析成真正的视图(jsp))
i.DispatcherServlet 根据View进行渲染视图(视图渲染将模型数据(在ModelAndView对象中)填充到request域)。
j.前端控制器向用户响应结果
.如何解决POST请求中文乱码问题,GET的又如何处理呢?
1、针对Post方式提交的请求如果出现乱码
可以每次在request解析数据时设置编码格式:request.setCharacterEncoding(utf-8);
也可以使用编码过滤器来解决,最常用的方法是使用Spring提供的编码过滤器:
在Web.xml中增加如下配置(要注意的是它的位置一定要是第一个执行的过滤器):
<filter>
<filter-name>charsetFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
该过滤器要做的其实就是强制为所有请求和响应设置编码格式:
request.setCharacterEncoding(utf-8);
respe.setCharacterEncoding(utf-8);
2、针对Get方式的乱码问题,
由于参数是通过URL传递的,所以上面通过request设置的编码格式是不起作用的,
此时可以在每次发生请求之前对URL进行编码:例如:Location.href=/encodeURI(http://localhost/test/s?name=中文&=女);
当然也有更简便的方法,那就是在服务器端配置URL编码格式:
修改tomcat的配置文件server.xml:
<ConnectorURIEncoding=UTF-8
port=8080 maxHttpHeaderSize=8192
maxThreads=150 minSpareThreads=25 maxSpareThreads=75
connectionTimeout=20000 disableUploadTimeout=true />
只需增加 URIEncoding=UTF-8 这一句,然后重启tomcat即可。
4.SpringMVC与Struts2的主要区别?
详细讲解 1.springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过滤器。 2.springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例), struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。.Struts采用值栈存储请求和响应的数据,通过OGL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象, 最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。 4.性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差不多,比Struts1要高 5.SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决
是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段
6.SpringMVC怎么样设定重定向和转发的
在返回值前面加forward:就可以让结果转发,譬如forward:user.do?name=method4
在返回值前面加redirect:就可以让返回值重定向,譬如redirect:
7.SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代
一般用@Conntroller注解,表示是表现层,不能用用别的注解代替.
8.
springMVC常用注解标签详情
springmvc常用注解标签详解
SpringMvc面试题
转载于:.html
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 9 条评论) |
本站网友 永安论坛 | 19分钟前 发表 |
有什么问题 | |
本站网友 广东省天然气管网 | 2分钟前 发表 |
7.SpingMvc中的控制器的注解一般用那个 | |
本站网友 德法 | 26分钟前 发表 |
比Struts1要高 5.SpringMvc的控制器是不是单例模式 | |
本站网友 rails | 19分钟前 发表 |
就可以让返回值重定向 | |
本站网友 sis文件 | 29分钟前 发表 |
怎么解决 是单例模式 | |
本站网友 水性润滑剂 | 19分钟前 发表 |
所以在多线程访问的时候有线程安全问题 | |
本站网友 肝病药 | 20分钟前 发表 |
就可以让返回值重定向 | |
本站网友 测试死链接 | 5分钟前 发表 |
会影响性能的 |