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>
最后,感谢大神的博客指导,在此附上原文链接:原文链接