(Portal 开发读书笔记)DispatcherPortlet

简介:

 DispatcherPortlet 是Spring MVC Portlet的前端控制器:

 

(1)发送Portlet请求到恰当的处理器(Controller)

 
 
  1. protected HandlerExecutionChain getHandler(PortletRequest request) 
  2.    throws Exception 
  3.  { 
  4.    for (HandlerMapping hm : this.handlerMappings) { 
  5.      if (this.logger.isDebugEnabled()) { 
  6.        this.logger.debug( 
  7.          "Testing handler map [" + hm + "] in DispatcherPortlet with name '" + getPortletName() + "'"); 
  8.      } 
  9.      HandlerExecutionChain handler = hm.getHandler(request); 
  10.      if (handler != null) { 
  11.        return handler; 
  12.      } 
  13.    } 
  14.    return null
  15.  } 

(2) 用ViewResolver来根据视图名解析对应的要映射到的视图

 
 
  1. protected View resolveViewName(String viewName, Map model, PortletRequest request) 
  2.     throws Exception 
  3.   { 
  4.     for (ViewResolver viewResolver : this.viewResolvers) { 
  5.       View view = viewResolver.resolveViewName(viewName, request.getLocale()); 
  6.       if (view != null) { 
  7.         return view; 
  8.       } 
  9.     } 
  10.     return null; 
  11.   } 

(3) 分发请求(包含最终被解析的视图名+Model中的数据)到ViewRenderRequest来渲染视图

 

 
 
  1. protected void doRender(View view, Map model, PortletRequest request, MimeResponse response) 
  2.    throws Exception 
  3.  { 
  4.    request.setAttribute(ViewRendererServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE, getPortletApplicationContext()); 
  5.  
  6.    request.setAttribute(ViewRendererServlet.VIEW_ATTRIBUTE, view); 
  7.    request.setAttribute(ViewRendererServlet.MODEL_ATTRIBUTE, model); 
  8.  
  9.    getPortletContext().getRequestDispatcher(this.viewRendererUrl).include(request, response); 
  10.  } 




本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/845042,如需转载请自行联系原作者

目录
相关文章
|
JavaScript 数据可视化 前端开发
《面向三维GIS的Cesium开发与应用》读书笔记
《面向三维GIS的Cesium开发与应用》读书笔记
|
安全 测试技术 数据安全/隐私保护
软件安全开发生命周期读书笔记
分阶段: 0. 教育和意识       1.微软成功的原因在于管理层支持和教育与培训.       2.工程师必须对基本的安全弱点、常见的安全漏洞类型、基本的安全设计有所了解。
1508 0
|
存储 安全 编译器
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
219 0
|
存储 关系型数据库 编译器
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
256 1
|
存储 算法 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
249 1
|
存储 算法 Java
[笔记]读书笔记 C++设计新思维《二》技术(Techniques)(二)
[笔记]读书笔记 C++设计新思维《二》技术(Techniques)(二)
150 0
|
安全 Java C++
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(上)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计
184 0