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的 ...
随机推荐
- ios之CABasicAnimation
博主:最近iOS开发中用到CoreAnimation的framework来做动画效果,虽然以前也用过,但一直没有系统学习过,今天看到一篇非常详细的博文(虽然是日语,但真的写的很好),在此翻译出来供大家 ...
- Mysql中的条件语句if、case
Mysql中的条件语句在我们对数据进行转换的时候比较有用,这样就不需要创建中转表. IF 函数 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> ...
- git如何删除远端不存在的本地分支?
问题:远端分支删除后,如何删除之前拉取的本地分支? 答案: git fetch -p git remote show origin 可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息 ...
- hdu 2544 单源最短路问题 dijkstra+堆优化模板
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- ArcGIS Server 10 for java 注册SOE出现的问题
一个SOE 需要register,但是报错 Manage Extensions Refresh Unable to register extension. com.esri.arcgis.intero ...
- 用SLF4j/Logback打印日志-3
在 用SLF4j/Logback打印日志-1 和 用SLF4j/Logback打印日志-2 中分别介绍了Logback记录日志的基本原理并重点介绍了输出源配置.本篇介绍一些性能和技巧性的东西. 性能 ...
- Maven中的库(repository)详解
Maven中的库(repository)是构件(artifact)的集合.构件以一定的布局存储在库中. 本地仓库 vs. 远程仓库 运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获 ...
- Java学习笔记——File类文件管理及IO读写、复制操作
File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图片 文件和文件夹 相关函数 (boolean) mkdir( ...
- 一幅画<十六芒星盾>---程序员or艺术家
画上是一面含有16个尖角的铜盾,这是我用程序算法生成的图像中最震撼的一幅.图像生成出来后,我看了好久,一边看一边想我的人生转向问题:我是不是该离开苦逼又屌丝的程序界,混入高端大气上档次的艺术圈? 说要 ...
- jQuery easyui layout布局自适应浏览器大小(转)
首先解释一下标题的含义,当我们用jQuery easyui layout 进行布局的时候,可能会遇到这样一个问题,那就是当手工调整浏览器大小,或者最大化.还原窗口的时候,layout的某个区域不能填充 ...