springMVC深入理解

1.javaEE项目体系结构

   从上到下分别是应用层、web层、业务层、持久层。

   应用层:就是我们的js、html,浏览器。

   web层:SpringMVC框架。

   业务层:Spring框架。

   持久层:MyBatis框架。

2.核心类与接口

    DispatcherServlet  ----前端控制器

    HandlerMapping接口 ----处理请求的映射

    HandlerAdapter接口 ----处理请求的映射

    Controller接口 ----控制器

    HandlerInterceptor接口 ----拦截器

    ViewResolver接口

    HandlerExceptionResolver接口  ----异常处理

    ModelAndView类 

3.SpringMVC的执行流程

 这里借用一篇博客的图:执行流程图

具体流程:1.前端发送一个HTTP请求,找到前端控制器DispatcherServlet;

                  2.前端控制器根据这个请求找到处理器映射器HandlerMapping;

                  3.处理器映射器会返回一个执行链;

                  4.前端控制器根据这个执行链,找到处理器适配器;

                  5.处理器适配器就找到处理器处理请求;

                  6.处理器处理完成之后,会返回一个ModelAndView;

                  7.处理器就把这个ModelAndView就返回给前端控制器DispatcherServlet;

                  8.前端控制器找到合适的视图解析器,将ModelAndView传给它;

                  9.视图解析器解析完成之后,会返回一个View视图给前端控制器;

                 10.前端控制器就找到View视图对这个View进行渲染,渲染完成后会返回给前端控制器;

                  11.前端控制器就把这个渲染好的视图响应给浏览器。

4.HandlerMapping处理器映射器

   处理器映射器共有三种,可以共存,相互不影响。分别是BeanNameUrlHandlerMapping、SimpleUrlHandlerMapping和ControllerClassNameHandlerMapping;

5.HandlerAdapter处理器适配器

   处理器有两种,可以共存,分别是SimpleControllerHandlerAdapter和HttpRequestHandlerAdapter。

6.中文乱码解决

  tomcat8以下的版本,可以采用以下两种方法:

   1.更改tomcat的配置文件server.xml(get请求乱码)

   对参数进行重新编码

String userName = new String(request.getParamter("userName").getBytes("ISO-8859-1"),"UTF-8");

2.Post请求乱码

在web.xml文件中加入

<filter>
    <filter-name>characterEncoding</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>characterEncoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

最后,感谢大神的博客指导,在此附上原文链接:原文链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值