SpringMVC学习笔记一:基本概念,执行流程与开发步骤
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6831328.html
一:基本概念
DispatcherServlet:前端控制器,负责把请求分发处理。
HandlerAdapter:DispatcherServlet是由handler类处理请求。HandlerAdapter是基于适配器模式创建的适配器,其实也是一个handler。DispatcherServlet不直接使用handler,而是选择一个HandlerAdapter来调用handler类中的方法。
HandlerInterceptor:拦截器接口,实现该接口来定义controller调用前、后的拦截处理。
HandlerMapping:由请求,映射得到处理该请求的handler。由HandlerMapping创建出HandlerAdapter/handler,从而dispacherservlet就可以使用handler/handleradapter来处理请求了。
HandlerExecutionChain:handler的执行链,显示了请求handler的执行过程:拦截器中的preHandle --> controller method --> 拦截器的postHandle --> 拦截器的afterCompletion。其实现原理是:Java反射调用。
ModelAndView:作为一个数据容器以及视图容器,存储请求中的参数、请求处理过程中的结果数据(model),并且可以通过设置view来控制请求处理完后的视图响应。
ViewResolver:视图解析器,由ModelAndView中的视图名,解析得到视图文件完整的路径,从而得到用于响应的视图对象。
HandlerExceptionResolver:异常解析器,捕捉handler中的异常生成错误信息返回DispatcherServlet。
View:负责呈现给用户的视图。
二:执行流程

1:请求到达服务器,经过一系列filter后,到达DispatcherServlet。
2:DispatcherServlet获取请求后,由HandlerMapping得到处理该请求的handler、拦截器信息,并由这些信息形成一条HandlerExecutionChain,创建出一个handler,返回给DispatcherServlet使用。
3:DispatcherServlet选择一个handlerAdapter来执行handler,得到处理结果ModelAndView以及错误信息等,返回给DispatcherServlet。
4:DispatcherServlet把ModelAndView以及错误信息传递给视图解析器,由视图解析器解析、渲染得到要呈现的视图对象View,并返回给DispatcherServlet。
5:DispatcherServlet通过response把视图对象view返回客户端呈现。
三:开发步骤
1:在web.xml中配置前端控制器DispatcherServlet:主要有:配置DispatcherServlet、通过参数配置springMVC的配置文件的路径、配置拦截请求类型。

2:实现controller接口或通过@Controller注解定义处理请求的handler类,在其中实现处理请求的方法,并通过注解的方式来配置请求方法、进行数据绑定、验证等等。
3:修改springMVC的配置文件,此文件用于生成DispatcherServlet上下文,主要用于控制整个框架的基础设置。
XXX-servlet.xml:文件名是由上面web.xml中<servlet-name>XXX</servlet-name>),再加上“-servlet”后缀而形成的。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">http://www.springframework.org/schema/context/spring-context-3.0.xsd</a>"> <!-- 启用spring mvc 注解 -->
<context:annotation-config /> <!-- 设置使用注解实现的handler类所在的jar包,springMVC会自动扫描这个包下的handler类以及handle方法 -->
<context:component-scan base-package="controller"></context:component-scan>
<!-- 视图解析器配置:prefix:前缀, suffix:后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" /> ......还有其他按需装配的组件
</beans>
<!-- 对静态资源文件的访问-->//对静态资源请求的url,到哪个相对路径下去寻找同名静态文件
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/favicon.ico" location="favicon.ico" /> -->
4:编写视图文件。
SpringMVC学习笔记一:基本概念,执行流程与开发步骤的更多相关文章
- Android(java)学习笔记262:JNI之工具快速开发步骤
下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...
- Android(java)学习笔记206:JNI之工具快速开发步骤
下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...
- springmvc学习笔记(19)-RESTful支持
springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...
- springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- springMVC 学习笔记(一):springMVC 入门
springMVC 学习笔记(一):spring 入门 什么是 springMVC springMVC 是 spring 框架的一个模块,springMVC 和 spring 无需通过中间整合层进行整 ...
- 史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
- springmvc学习笔记(常用注解)
springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...
- JavaScript:学习笔记(2)——基本概念与数据类型
JavaScript:学习笔记(2)——基本概念与数据类型 语法 1.区分大小写.Test 和 test 是完全不同的两个变量. 2.语句最好以分号结束,也就是说不以分号结束也可以. 变量 1.JS的 ...
随机推荐
- Process 'command '/Users/lidaqiang/Library/Android/sdk/build-tools/27.0.3/aapt'' finished with non-zero exit value 1
Process 'command '/Users/lidaqiang/Library/Android/sdk/build-tools/27.0.3/aapt'' finished with non-z ...
- 部署maven的一些要点、遇到的问题和心得体会
maven的部署.遇到的问题和心得体会 2013-10-24 | 阅: 转: | 分享 部署maven的一些要点.遇到的问题和心得体会 (图片看不了,可以下载doc文件) 一. ...
- Java多线程之Callable接口与Runnable的实现以及选择
通过实现Runnable接口的实现 package Thread; import java.util.concurrent.ExecutorService;import java.util.concu ...
- [转]PHP 汉字转拼音
转自: https://git.oschina.net/wapznw/php-pinyin <?php /** * @package default * @copyright php-pinyi ...
- uva 10344 23 out of 5 凑运算结果 全排列+dfs
五个数三个运算符号,排列之后凑成结果为23,不考虑优先级. 很水,数据量也不大,先生成五个数的全排列,用dfs找出结果能否为23即可. 代码: #include <cstdio> #inc ...
- go语言之进阶篇方法的继承
1.方法的继承 示例: package main import "fmt" type Person struct { name string //名字 sex byte //性别, ...
- DevExpress ChartControl 柱状图的使用【转】
//中心业务平台的“热门岗位信息监测”柱状图 public partial class HotJobInfo : UserControl { private object _o ...
- 前端基于jquery的UI框架
正在做的一个项目选择jquery作为前端js核心库.然后就想选一个基于jquery的ui库,然后悲催的事情发生了. 至于为什么使用jquery,一是因为不想为授权费用,而又不想引起可能法律纠纷:另一方 ...
- JavaScript递归方法 生成 json tree 树形结构数据
//递归方法 生成 json tree 数据 var getJsonTree = function(data, parentId) { var itemArr = []; for (var i = 0 ...
- svg image标签降级技术
1.svg image标签降级技术: svg不能很好的在anroid2.3中得到支持,需要额外的补充,IE8-以及Android 2.3默认浏览器是不支持SVG的. svg image标签降级技术,这 ...