SpringMVC源码(六)Controller控制器4-View视图解析器
来源:互联网 发布:查看产品淘宝客佣金 编辑:程序博客网 时间:2024/05/22 16:28
ParameterizableViewController 控制器解析:
可参数化视图控制器(ParameterizableViewController),可参数化视图控制器只是简单的返回配置的视图名,不进行功能处理。这个controller可以选择直接将一个request请求到JSP页面。这样做的好处就是不用向客户端暴露具体的视图技术而只是给出了具体的controller URL,而具体的视图则由视图解析器来决定。
具体代码:
可参数化视图控制器(ParameterizableViewController),可参数化视图控制器只是简单的返回配置的视图名,不进行功能处理。这个controller可以选择直接将一个request请求到JSP页面。这样做的好处就是不用向客户端暴露具体的视图技术而只是给出了具体的controller URL,而具体的视图则由视图解析器来决定。
具体代码:
private String viewName;protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)throws Exception {return new ModelAndView(getViewName(), RequestContextUtils.getInputFlashMap(request));}springmvc.xml配置:
<bean name="/mvc" class="org.springframework.web.servlet.mvc.ParameterizableViewController"> <property name="viewName" value="springmvc"/> </bean>
该控制器接收到请求后直接选择参数化的视图,这样的好处是在配置文件中配置,从而避免程序的硬编码,比如像帮助页面等不需要进行功能处理,因此直接使用该控制器映射到视图。
--------------------------------------------------------------------------------------------------------------------------------------------------
UrlFilenameViewController 控制器解析:
UrlFilenameViewController也是一个视图解析控制器,不过它是通过将URL翻译成为视图名,不需要功能处理,并且返回。UrlFilenameViewController继承AbstractUrlViewController,UrlFilenameViewController的handleRequestInternal方法在AbstractUrlViewController实现:
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) {String lookupPath = getUrlPathHelper().getLookupPathForRequest(request);String viewName = getViewNameForRequest(request);if (logger.isDebugEnabled()) {logger.debug("Returning view name '" + viewName + "' for lookup path [" + lookupPath + "]");}return new ModelAndView(viewName, RequestContextUtils.getInputFlashMap(request));}//获取视图名称由UrlFilenameViewController来实现。protected abstract String getViewNameForRequest(HttpServletRequest request);
UrlFilenameViewController具体实现:
//请求对象获取视图名字protected String getViewNameForRequest(HttpServletRequest request) {String uri = extractOperableUrl(request);return getViewNameForUrlPath(uri);}
//根据uri地址获取到视图名字protected String getViewNameForUrlPath(String uri) {String viewName = this.viewNameCache.get(uri);if (viewName == null) {viewName = extractViewNameFromUrlPath(uri);viewName = postProcessViewName(viewName);this.viewNameCache.put(uri, viewName);}return viewName;}
参考文章:
http://www.bubuko.com/infodetail-1176622.html
阅读全文
0 0
- SpringMVC源码(六)Controller控制器4-View视图解析器
- springMVC源码--Controller控制器
- SpringMVC源码(三)Controller控制器
- SpringMVC源码(五)Controller控制器3-Servlet相关控制器
- 六.控制器调用VIEW视图
- SpringMVC-控制器、映射器、视图解析器
- 模型-视图-控制器(Model-View-Controller,MVC)
- Custom Container View Controller(自定义容器视图控制器)
- SpringMVC--Controller接口控制器详解 (4)
- Springmvc视图解析器(一)resolver解析器和view视图 【Springmvc】
- 视图(view)、视图控制器(view controller)之间的数量关系
- SpringMVC源码(四)Controller控制器2-AbstractController
- SpringMVC源码(七)Controller控制器5-MultiActionController
- SpringMVC 之Resolver视图解析器笔记(六)
- springMVC controller返回值void 视图解析器如何解析
- springMVC源码分析--视图View(一)
- springMVC源码解析--ViewResolverComposite视图解析器集合(二)
- springMVC源码解析--ViewResolver视图解析器执行(三)
- hdu 1231 最大连续子序列
- 线程安全与可重入函数
- FreeRTOS学习3--二值信号量
- 解决onActivityResult方法不执行的办法
- 浏览器页面之间推送消息 A窗口给B窗口推送消息 用于cef多个browser之间通信
- SpringMVC源码(六)Controller控制器4-View视图解析器
- angular中的作用域的那些事儿
- <HeadFirst设计模式>笔记——单例模式
- Glide的简单封装GlideUtils
- js与jq基础笔记(持续添加)
- eclipse签名打包时提示Certificate is expired
- android项目架构 -----Android 知识体系与常用第三方框架
- oracle数据库定时任务dbms_job的用法详解
- 并行计算