当前位置: 首页 > news >正文

上海高端网站建设服承德网站建设制作

上海高端网站建设服,承德网站建设制作,影视网站策划书,自建网站流程RequestToViewNameTranslator 组件RequestToViewNameTranslator 组件#xff0c;视图名称转换器#xff0c;用于解析出请求的默认视图名。就是说当 ModelAndView 对象不为 null#xff0c;但是它的 View 对象为 null#xff0c;则需要通过 RequestToViewNameTranslator 组件…RequestToViewNameTranslator 组件RequestToViewNameTranslator 组件视图名称转换器用于解析出请求的默认视图名。就是说当 ModelAndView 对象不为 null但是它的 View 对象为 null则需要通过 RequestToViewNameTranslator 组件根据请求解析出一个默认的视图名称。回顾先来回顾一下在 DispatcherServlet 中处理请求的过程中哪里使用到 RequestToViewNameTranslator 组件可以回到《一个请求的旅行过程》中的 DispatcherServlet 的 doDispatch 方法中看看如下protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {HttpServletRequest processedRequest request;try {ModelAndView mv null;try {// ... 省略相关代码// 6 真正的调用 handler 方法也就是执行对应的方法并返回视图mv ha.handle(processedRequest, response, mappedHandler.getHandler());// ... 省略相关代码// 8 无视图的情况下设置默认视图名称applyDefaultViewName(processedRequest, mv);// ... 省略相关代码}catch (Exception ex) {dispatchException ex; // 10 记录异常}// 11 处理正常和异常的请求调用结果processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);}catch (Exception ex) { // 12 已完成处理 拦截器 }finally { } }private void applyDefaultViewName(HttpServletRequest request, Nullable ModelAndView mv) throws Exception {if (mv ! null !mv.hasView()) {String defaultViewName getDefaultViewName(request);if (defaultViewName ! null) {mv.setViewName(defaultViewName);}} }Nullable protected String getDefaultViewName(HttpServletRequest request) throws Exception {return (this.viewNameTranslator ! null ? this.viewNameTranslator.getViewName(request) : null); } 在上面方法的8处会调用 applyDefaultViewName(HttpServletRequest request, Nullable ModelAndView mv) 方法如果返回的 ModelAndView 对象不为 null但是他的 View 对象为 null则需要通过 viewNameTranslator 的 getViewName(HttpServletRequest request) 方法从请求中获取默认的视图名如果获取到了则设置到 ModelAndView 对象中applyDefaultViewName(HttpServletRequest request, Nullable ModelAndView mv) 这个方法还会在处理异常的时候调用因为处理异常也返回 ModelAndView 对象所以需要做“类似”的处理RequestToViewNameTranslator 接口org.springframework.web.servlet.RequestToViewNameTranslator视图名称转换器用于解析出请求的默认视图名代码如下public interface RequestToViewNameTranslator {/*** 根据请求获得其视图名*/NullableString getViewName(HttpServletRequest request) throws Exception; }Spring MVC 就提供一个实现类org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator我看了一下Spring Boot 没有提供其他的实现类初始化过程在 DispatcherServlet 的 initRequestToViewNameTranslator(ApplicationContext context) 方法初始化 RequestToViewNameTranslator 组件方法如下private void initRequestToViewNameTranslator(ApplicationContext context) {try {this.viewNameTranslator context.getBean(REQUEST_TO_VIEW_NAME_TRANSLATOR_BEAN_NAME, RequestToViewNameTranslator.class);if (logger.isTraceEnabled()) {logger.trace(Detected this.viewNameTranslator.getClass().getSimpleName());}else if (logger.isDebugEnabled()) {logger.debug(Detected this.viewNameTranslator);}}catch (NoSuchBeanDefinitionException ex) {// We need to use the default./*** 如果未找到则获取默认的 RequestToViewNameTranslator 对象* {link org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator}*/this.viewNameTranslator getDefaultStrategy(context, RequestToViewNameTranslator.class);if (logger.isTraceEnabled()) {logger.trace(No RequestToViewNameTranslator REQUEST_TO_VIEW_NAME_TRANSLATOR_BEAN_NAME : using default [ this.viewNameTranslator.getClass().getSimpleName() ]);}} } 获得 Bean 名称为 viewNameTranslator类型为 RequestToViewNameTranslator 的 Bean 将其设置为 viewNameTranslator如果未获得到则获得默认配置的 RequestToViewNameTranslator 实现类调用 getDefaultStrategies(ApplicationContext context, ClassT strategyInterface) 方法就是从 DispatcherServlet.properties 文件中读取 RequestToViewNameTranslator 的默认实现类如下org.springframework.web.servlet.RequestToViewNameTranslatororg.springframework.web.servlet.view.DefaultRequestToViewNameTranslatorDefaultRequestToViewNameTranslatororg.springframework.web.servlet.view.DefaultRequestToViewNameTranslator 实现 RequestToViewNameTranslator 接口默认且是唯一的 RequestToViewNameTranslator 实现类构造方法public class DefaultRequestToViewNameTranslator implements RequestToViewNameTranslator {private static final String SLASH /;/*** 前缀*/private String prefix ;/*** 后缀*/private String suffix ;/*** 分隔符*/private String separator SLASH;/*** 是否移除开头 {link #SLASH}*/private boolean stripLeadingSlash true;/*** 是否移除末尾 {link #SLASH}*/private boolean stripTrailingSlash true;/*** 是否移除拓展名*/private boolean stripExtension true;/*** URL 路径工具类*/private UrlPathHelper urlPathHelper new UrlPathHelper(); }getViewName实现 getViewName(HttpServletRequest request) 方法代码如下Override public String getViewName(HttpServletRequest request) {// 获得请求路径String lookupPath this.urlPathHelper.getLookupPathForRequest(request);// 获得视图名return (this.prefix transformPath(lookupPath) this.suffix); }Nullable protected String transformPath(String lookupPath) {String path lookupPath;// 移除开头 SLASHif (this.stripLeadingSlash path.startsWith(SLASH)) {path path.substring(1);}// 移除末尾 SLASHif (this.stripTrailingSlash path.endsWith(SLASH)) {path path.substring(0, path.length() - 1);}// 移除拓展名if (this.stripExtension) {path StringUtils.stripFilenameExtension(path);}// 替换分隔符if (!SLASH.equals(this.separator)) {path StringUtils.replace(path, SLASH, this.separator);}return path; }通过 urlPathHelper 获取该请求的请求路径调用 transformPath(String lookupPath) 方法获得视图名并添加前后缀默认都是空的。实际上就是你的请求 URI总结本文对 Spring MVC 的RequestToViewNameTranslator 组件进行了分析视图名称转换器用于解析出请求的默认视图名。当 ModelAndView 对象不为 null但是它的 View 对象为 null则需要通过 RequestToViewNameTranslator 组件根据请求解析出一个默认的视图名称。默认的 DefaultRequestToViewNameTranslator 实现类返回的就是请求的 URI。我们目前最常用的 ResponseBody 注解对应的 RequestResponseBodyMethodProcessor 返回值处理器所得到的 ModelAndView 对象为 null所以不会用到该组件也不会进行视图渲染前后端分离嘛~
http://www.dnsts.com.cn/news/12110.html

相关文章:

  • 网站定制联通卡如何提升顾客的体验和服务
  • 免费游戏链接入口九江网站建设优化公司
  • wordpress自动生成缩略图seo优化工程师
  • 咸宁有做网站的吗湘潭网站开发
  • 青岛高端网站建设网站的内容包括什么
  • 杭州网站建设洛洛科技公司网络营销推广方案
  • 网站分为深圳网站开发公司宝网
  • wordpress建站主机找别人网站开发没给我源代码
  • 网站建设时怎么购买空间怎样创立一个网站
  • 租房网站的财务分析表怎么做绍兴企业网站开发
  • 建设网站公司哪个好宁夏住房和城乡建设局网站
  • 网站开发验收单招商加盟类网站模板
  • 盗版电影网站建设成本手机网站程序下载
  • 网站建设找工作公司网站怎么做包括什么
  • 门户网站百度百科查询系统网站模板
  • 雍鑫建设集团官方网站网站备案要到哪里下载
  • 怎么做一个免费的网站泰安网页设计招聘
  • 2017网站设计在线网站建设活动
  • 临汾做网站的公司展览展厅设计案例
  • 玉石网站建设的定位企业网站建设费怎么入账
  • rest api 做网站wordpress 子目录 .htaccess
  • 北京建设主管部门官方网站中国建设银行人才招聘网站
  • 安阳网站推广公司网站运维平台建设原则
  • 网站建设微信商城运营网站开发托管协议
  • 霞浦建设局网站西安网站制作首页
  • 大气个人网站源码如何做公司的网页
  • 保险做的好的网站有哪些网站设计规划信息技术教案
  • 电子商务创建网站怎么在网站视频做字幕
  • 商城网站建设流程图wordpress菜单如何做
  • 酷炫个人特别网站中国建筑公司官网