springmvc处理流程初步分析

对于springmvc来说主要分为 DispatcheServlet  HandlerMapping HandlerAdapter ViewResolvr  

DispatcheServlet

拦截请求

HandlerMapping

 

HandlerMapping实际上是一个接口他的方法只有一个那就是gethandler通过他的参数httpRequest可以看出该接口的实现类中会根据发送过来的请求来返回一个方法链也就是HandlerExecutionChain(包含一个handler 和一个List<HandlerInteceptor>y也就是一个或多个的拦截器)

 

 

SimpleUrlHandlerMapping是通过请求路径

HandlerAdapter

 

从HandlerAdapter接口来看主要试用来之后通过hander()函数执行handlerMapping的实现类最后返回ModelandView对象

    首先在程序初始化的时候通过调用AbstractHandlerMethodMapping的register()进行key-val对应并将结果保存的AbstractHandlerMethodMapping的内部类MappingRegistry中去

    在接收请求时dispatacheservlet会拦截请求交给AbstractHandlerMapping实现了HandlerMapping接口重写的getHandler()进行处理 。之后在该方法中通过继承的关系调用到父类AbstractHandlerMethodMapping的getHandlerIntenal()方法获取所需要执行方法的函数是路径(如"com.action.controller.MainController.Login()")。再通过该路径获得对应的Controller也叫handerr

    接着在执行HandlerAdapter的时候通过调用support来匹配可以执行的Adapter对象并执行相应的handlr方法返回ModelAndView对象

    最后ViewResolvr  解析ModelAndView对象返回view对象

    

    注意:在getHandlerIntenal()函数中引入了UrlPathHelper类在在该类中完善了HttpRequest中获取路径的函数在UrlPathHelper中会对多余的字符进行过滤如

xxxx/index?username=xxx&password=xxx中会将?username=xxx&password=xxx过滤而HttpRequest不会

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值