Spring MVC执行流程及简单问题

流程 

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

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

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

4、 DispatcherServlet通过HandlerAdapter处理器适配器调用处理器。

5、 执行处理器(Controller,也叫后端控制器)。

6、 Controller执行完成返回ModelAndView。

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

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

9、 ViewReslover解析后返回具体View。

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

11、DispatcherServlet响应用户。

杂记 

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

在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8。


              CharacterEncodingFilter
              org.springframework.web.filter.CharacterEncodingFilter
             
                      encoding
                      utf-8
             

       

       
       CharacterEncodingFilter
       /*
       

get请求一般对参数进行重新编码:

String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

Spring MVC的异常处理 ?

可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。

全局异常处理器:HandlerExceptionResolver,通过实现该接口处理异常现象。

注解:@ ExceptionHandler

SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能有状态可保证控制器是线程安全的。 

SpringMVC常用的注解有哪些?

@Controller:控制器

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

SpringMVC拦截器实现?

通过实现接口HandlerInterceptor实现

你可能感兴趣的:(SpringMVC,流程,常见问题)