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的 ...
随机推荐
- [Web 前端] React-router4简约教程
cp from : http://react-china.org/t/react-router4/15843/1 React-router和React-router-dom的选择 很多刚使用react ...
- scriptcs简介
一.scriptcs简介 scriptcs易于编写和执行C #用一个简单的文本编辑器. 在Visual Studio中,和其他的思想,是功能强大的工具,他们有时会阻碍生产力比他们更促进它. 您并不总是 ...
- JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,
1.对整数进行格式化:%[index$][标识][最小宽度]转换方式 我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解, ...
- linux中断
[一].中断底半部 1. 软中断 --->>> 执行在中断上下文 --->>> 会被中断打断,不会被软中断或进程打断 --->>> ...
- scrapy框架系列 (5) Spider类
Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作及 ...
- Valid Sudoku leetcode java
题目: Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...
- 滴滴大数据算法大赛Di-Tech2016参赛总结
https://www.jianshu.com/p/4140be00d4e3 题目描述 建模方法 特征工程 我的几次提升方法 从其他队伍那里学习到的提升方法 总结和感想 神经网络方法的一点思考 大数据 ...
- 理解MySQL数据库覆盖索引 (转)
http://www.cnblogs.com/zl0372/articles/mysql_32.html 话说有这么一个表: CREATE TABLE `user_group` ( `id` int( ...
- JAVA-开发IDE版本
Eclipse发布的完整列表包括: Neon, June 22, 2016 Mars, June 24, 2015 Luna, June 25, 2014 Kepler, June 26, 2013 ...
- Spring(二十二):Spring 事务
事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性. 事务就是一系列的动作,它们被当做一个单独的工作单元.这些动作要么全部完成,要么全部不起作用. 事务的是四个关键 ...