SpringMVC源码(六)Controller控制器4-View视图解析器
2017-06-09 16:42
706 查看
ParameterizableViewController 控制器解析:
可参数化视图控制器(ParameterizableViewController),可参数化视图控制器只是简单的返回配置的视图名,不进行功能处理。这个controller可以选择直接将一个request请求到JSP页面。这样做的好处就是不用向客户端暴露具体的视图技术而只是给出了具体的controller URL,而具体的视图则由视图解析器来决定。
具体代码:
该控制器接收到请求后直接选择参数化的视图,这样的好处是在配置文件中配置,从而避免程序的硬编码,比如像帮助页面等不需要进行功能处理,因此直接使用该控制器映射到视图。
--------------------------------------------------------------------------------------------------------------------------------------------------
UrlFilenameViewController 控制器解析:
UrlFilenameViewController也是一个视图解析控制器,不过它是通过将URL翻译成为视图名,不需要功能处理,并且返回。UrlFilenameViewController继承AbstractUrlViewController,UrlFilenameViewController的handleRequestInternal方法在AbstractUrlViewController实现:
UrlFilenameViewController具体实现:
参考文章:
http://www.bubuko.com/infodetail-1176622.html
可参数化视图控制器(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
相关文章推荐
- springMVC源码解析--ViewResolver视图解析器执行(三)
- springMVC源码解析--ViewResolver视图解析器执行(三)
- springMVC源码解析--ViewResolverComposite视图解析器集合(二)
- springMVC源码解析--ViewResolver视图解析器执行(三)
- springMVC源码解析--ViewResolverComposite视图解析器集合(二)
- springMVC源码解析--ViewResolverComposite视图解析器集合(二)
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- ASP.NET MVC中从后台控制器(Controller)传递数据到前台页面视图(View)方式
- 表格视图UITableView及控制器UITableViewController
- iOS7新特性 ViewController转场切换(三) 自定义视图控制器容器的切换---非交互式
- iOS7应用开发5、视图控制器View Controller及其生命周期
- UI_UIViewController视图控制器_推出新视图presentViewController(模态推出)
- 七、MVC之 控制器controller与视图view
- Model View Controller 模型视图控制器的理解
- Spring mvc 视图解析器 ContentNegotiatingViewResolver 源码分析
- 视图篇——表格视图UITableView及控制器UITableViewController
- ASP.NET MVC中从后台控制器(Controller)传递数据到前台页面视图(View)方式
- MVC(Model View Controller)模型-视图-控制器
- IOS Note - View Controller(视图控制器)
- 视图篇——表格视图UITableView及控制器UITableViewController