整理SpringMVC

Spring Web MVC核心架构图:

核心架构图流程如下:

1.首先用户发送请求------->DispatcherServlet(前端控制器),前端控制器收到请求后自己不进行处理,而是委托给其他解析器处理,定位好似全称的流程控制

2.DispatcherServlet(前端控制器)-------->HandlerMapping(映射处理器),HandlerMapping会把请求映射为HandlerExecutionChain对象,并返回给DispatcherServlet

3.DispatcherServlet----->HandlerAdapter(处理适配器),HandlerAdapter(处理适配器)将会把处理器包装为适配器,从而适配多种类型的处理器

4.HandlerAdapter------->Controller,HandlerAdapter会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象

5.ModelAndView的逻辑视图名——> ViewResolver ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;

6、  View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;

7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。

具体实现:

1.首先在Web.xml中配置DispatcherServlet即前端控制器

   

配置完成后,我们已经将请求交给了Dispatcher处理,Dispatcher会默认加载/WEB-INF/[配置的Dispatcher名字]-servlet.xml配置文件

2.dispatcher-servlet.xml中配置映射处理器(HandlerMapping)、映射适配器(HandlerAdapter)

   

如图中注释所示:

处理映射器

BeanNameUrlHandlerMapping表示将请求的UrlBean的名字(id)进行映射,如Url为xxx/hello.do,则Spring中必须有一个名字(id)为"/hello.do"的Bean(具体配置在下面)

处理适配器

所有实现了org.springframework.web.servlet.mvc.Controller接口的类都可以作为SpringWEBMVC的处理器,它会把处理映射器(HanderMapping)包装的适配器与处理器进行匹配,方式就是上面述的请求的URLBeanID

3.dispatcher-servlet.xml中配置ViewResolver(视图解析器)

如图中注释所示:

视图解析器会将设置的视图名与前缀和后缀进行拼接,如:视图名为hello,则该jsp视图页面的存放应该为/WEB-INF/hello.jsp

3.编写处理器部分的代码并在dispatcher-servlet.xml中配置Controller

处理器必须实现org.springframework.web.servlet.mvc.Controller接口

public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) :功能处理方法,实现相应的功能处理,比如收集参数、验证参数、绑定参数到命令对象、将命令对象传入业务对象进行业务处理、最后返回ModelAndView对象;

ModelAndView:包含了视图要实现的模型数据和逻辑视图名;"mv.addObject("messager", "HelloWorld");

"表示添加模型数据,此处可以是任意POJO对象;"mv.setViewName("success");"表示设置逻辑视图名为"success",视图解析器会将其解析为具体的视图,如前边的视图解析器InternalResourceViewResolver会将其解析为"WEB-INF/success.jsp"

dispatcher-servlet.xml中配置Controller

如上图注释和处理映射器部分解释所示

BeanNameUrlHandlerMapping表示将请求的UrlBean的名字(id)进行映射,此时本人在Index.jsp的表单中请求的地址是LoginServlet.do,所以bean的名字(id)必须为/LoginServlet.do

4.index.jsp/success.jsp页面

   

整个运行流畅

   

   

   

   

   

   

   

注:本人根据http://jinnianshilongnian.iteye.com/blog/1594806整理而出

posted @ 2017-06-12 14:55  LuBoom  阅读(155)  评论(0编辑  收藏  举报