1.传统xml配置方式

web.xml里面配置:org.springframework.web.servlet.DispatcherServlet,处理项目的spring配置文件:classpath*:wly-servlet.xml

2.DispatcherServlet

## doService
暴露DispatcherServlet中从request获取的属性,并且委派给doDispatch处理 ## doDispatch
## step1:
// Determine handler for the current request.
mappedHandler = getHandler(processedRequest);

3.wly-servlet.xml

在这个配置文件里面配置了很多由spring负责创建的bean实例:包括controller和servlet类
## <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
```
处理bean.name和url映射关系,将url交给
//handlerName:"/wang"
//resolvedHandler:com.wang.controller.WangController@4e2c46ed
resolvedHandler = getApplicationContext().getBean(handlerName);
...
this.handlerMap.put(urlPath, resolvedHandler);//其实就是把url和bean的映射关系放到了一个map里面
```
##<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
```
handler包装为适配器
//根据当前handler获取handlerexecuteChain //根据handler的类型获取handler的适配器
protected HandlerAdapter getHandlerAdapter(Object handler) throws ServletException {
for (HandlerAdapter ha : this.handlerAdapters) {
if (logger.isTraceEnabled()) {
logger.trace("Testing handler adapter [" + ha + "]");
}
//根据handler instanceof Controller判断使用什么适配器类代替当前handler
if (ha.supports(handler)) {
return ha;
}
}
throw new ServletException("No adapter for handler [" + handler +
"]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler");
} 。。。
//ha.supports(handler)方法
@Override
public boolean supports(Object handler) {
return (handler instanceof Controller);
} // 实际调用对应handler的方法
mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); //执行完具体的handler方法后,通过拦截器处理视图信息:
applyDefaultViewName(processedRequest, mv);//设置modelview对象
//通过
mappedHandler.applyPostHandle(processedRequest, response, mv);
[org.springframework.web.servlet.handler.AbstractUrlHandlerMapping$PathExposingHandlerInterceptor@46dafc9f,
org.springframework.web.servlet.resource.ResourceUrlProviderExposingInterceptor@1faa1cba]
``` ## <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
视图处理器,将逻辑视图转转成物理视图

最新文章

  1. PCM音频设备的操作(转)
  2. Java——FIle:
  3. 采用SHELL,通过SQL LOAD导入一定格式的txt文件至数据库中
  4. SharePoint 2010 Pop-Up Dialogs
  5. SCNU省选校赛第二场B题题解
  6. hdu_1011(Starship Troopers) 树形dp
  7. Bootstrap3 代码-程序输出
  8. Java对Excel数据处理(利用POI解析Excel)
  9. CentOS7使用firewalld防火墙配置端口
  10. Vue导出json数据到Excel表格
  11. 洛谷 p1019 单词接龙
  12. 眼底血管分割训练函数(SVM,Adaboost)
  13. windows系统显示隐藏文件以及显示文件扩展名
  14. Sqoop拒绝连接错误
  15. 【Nginx】 Nginx实现端口转发
  16. Eclipse下生成.dll动态库及.a静态库使用 for Windows [z]
  17. selenium和appium启动的感悟
  18. js对字符串进行加密和解密
  19. ZOJ Problem Set - 2297 Survival 【状压dp】
  20. python安装方法- 3.6.3版本

热门文章

  1. 505C Mr. Kitayuta, the Treasure Hunter
  2. Sequoiadb该如何选择合适的SQL引擎
  3. Java泛型读书笔记 (二)
  4. 遍历一个二维数组的简便方法(减少foreach次数)
  5. 使用metasploit进行栈溢出攻击-4
  6. Android为 ContentProvider 提供了那些服务内容?
  7. webpack4 入门(二)
  8. IMP-00003: 遇到 ORACLE 错误 959 ORA-00959: 表空间 &#39;&#39; 不存在
  9. hdu1798(圆的位置关系)
  10. AngularJs 指令 directive中link,controller 的区别