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的 ...
随机推荐
- Universal-Image-Loader解析(一)——ImageLoaderConfiguration的详细配置
Universal-Image-Loader这个开源框架又来给我们造福了,它是一个图片加载框架,主要强大在于可以用于网络等图片源的加载,并且有多重缓存机制.先给出其项目地址:https://githu ...
- information_schema系列十
information_schema系列十 1:INNODB_FT_CONFIG 这张表存的是全文索引的信息,查询前可以先通过以下语句查询一下开启全文索引的表: show variables li ...
- 浅谈Java Future接口
Java项目编程中,为了充分利用计算机CPU资源,一般开启多个线程来执行异步任务.但不管是继承Thread类还是实现Runnable接口,都无法获取任务执行的结果.JDK 5中引入了Callable和 ...
- Java工程师成神之路~(2018修订版)
针对本文,博主最近在写<成神之路系列文章> ,分章分节介绍所有知识点.欢迎关注. 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新 ...
- [转]XCache 3.0.0 发布,PHP 性能提升方案
From : http://www.oschina.net/news/34304/xcache-3-0-0 XCache 3.0.0 发布,该版本除了 bug 修复,对 XCache 管理页面做了很多 ...
- 使用ASP.NET读取word2003文档
直接使用.NET 读取doc文档. http://www.codeproject.com/Articles/22738/Read-Document-Text-Directly-from-Microso ...
- SQL Server 2005 分区表实践——分区切换
本文演示了 SQL Server 2005 分区表分区切换的三种形式: 1. 切换分区表的一个分区到普通数据表中:Partition to Table: 2. 切换普通表数据到分区表的一个分区中:Ta ...
- VNC XEN 双鼠标问题 以及 使用 virt-manager 工具创建的 Xen 虚拟机配置文件不在 /etc/xen/ 目录中了
0.本人用的是Ubuntu 12.04,在其中安装xen 4.1,用的是virt-manager安装虚拟机 1.VNC XEN 双鼠标问题,在配置文件中加入: 找到:(usb 1),在之后加入: (u ...
- maven-assembly-plugin 入门指南
当你使用 Maven 对项目打包时,你需要了解以下 3 个打包 plugin,它们分别是 plugin function maven-jar-plugin maven 默认打包插件,用来创建 proj ...
- 什么是Platform Services Controller
Platform Services Controller (PSC) is a component of the VMware Cloud Infrastructure Suite. PSC deal ...