SpringMVC的流程?
(1)用户发送请求至DispatcherServlet(前端控制器);
(2)DispatcherServlet(前端控制器)收到请求后,调用HandlerMapping(处理器映射器),请求获取Handler;
(3)HandlerMapping(处理器映射器)根据请求url找到具体的Handler(处理器),生成处理器对象及处理器拦截器,一并返回给DispatcherServlet(前端控制器);
(4)DispatcherServlet (前端控制器)调用 HandlerAdapter(处理器适配器),请求执行Handler;
(5)HandlerAdapter (处理器适配器)调用具体controller(处理器)处理业务;
(6)controller(处理器)返回给 HandlerAdapter(处理器适配器)一个ModelAndView对象;
(7)HandlerAdapter(处理器适配器)将ModelAndView对象,返回给DispatcherServlet(前端控制器);
(8)DispatcherServlet(前端控制器)将ModelAndView对象传给ViewResolver(视图解析器)进行解析;
(9)ViewResolver(视图解析器)解析后返回View;
(10)DispatcherServlet(前端控制器)对View进行视图渲染。
(11)DispatcherServlet(前端控制器)通过httpresponse返回view给浏览器。
SpringMVC怎么样设定重定向和转发的?
(1)转发:forward,譬如"forward:user.do?name=method4"
(2)重定向:redirect,譬如"redirect:http://www.baidu.com"
SpringMVC常用的注解有哪些?
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。
@RequestBody:将json转换为java对象。
@ResponseBody:将对象转化为json对象响应给客户端。
如何解决POST和GET请求中文乱码问题?
(1)解决post请求乱码问题:在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8;
<filter> <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>
(2)get请求中文参数出现乱码解决方法有两个:
①修改tomcat配置文件添加编码与工程编码一致,如下
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
②另外一种方法对参数进行重新编码:
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
SpringMvc的控制器是不是单例模式?如果是,有什么问题?怎么解决?
是单例模式,在多线程访问的时候有线程安全问题,
解决方案是使用 ThreadLocal 写可变状态量。
怎样在方法里面得到Request,或者Session?
直接在方法的形参中声明request,SpringMvc就自动把request对象传入。