springMVC框架学习

整体框架图

springMVC框架学习_第1张图片

1)整个过程始于客户端发出的一个HTTP请求,Web应用服务器接收到这个请求,如果匹配DispatcherServlet的请求映射路径(web.xml指定),Web容器将该请求转交给DispatcherServlet处理

2)DispatcherServlet接收到这个请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器Handler。可将HandlerMapping看成路由控制器,将Handler看成目标主机。值得注意的是SpringMVC并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。

3)当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器借口调用Handler。HandlerAdapter是SpringMVC的架构级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用。

4)处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。

5)ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作。

6)当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。

7)最终客户端得到的响应信息,可能是一个普通的HTML页面,也可能是一个XML活JSON串,甚至是一张图片或一个PDF文档等不同的媒体形式。


方法映射

 使用@ReeuestMapping映射请求

@RequestMapping不但支持标准的URL还支持 Ant风格(?、*和**的字符 )和带{xxx}占位符的URL。如:


     /user/*/createUser:匹配/user/adfaf/createUser、/user/12/createUser等URL


     /user/**/createUser:匹配/user/createUser、/user/affa/createUser等URL


     /user/createUser??:匹配/user/createUseraa、/user/createUserbb等URL


     /user/{userId}:匹配/user/12241241、/user/211221等URL


     /user/**/{userId}:匹配/user/afaf/afds/1241、/user/af/32等URL

其中带占位符的URL是Spring3.0新增的功能。通过@PathVariable可以将URL中的占位符参数版顶到控制器处理的方法入参当中。

@RequestMapping的value、method、params及headers分别表示请求URL、请求方法、请求参数及报文头的映射条件。它们之间是与的关系,联合使用可以让请求映射更加精确化。


请求处理方法签名详解


【未完待续】

你可能感兴趣的:(spring)