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

苏州市建设中心网站首页上海高端网站建设服

苏州市建设中心网站首页,上海高端网站建设服,wordpress合并,网站备案初审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.hkea.cn/news/14429126/

相关文章:

  • 郑州网站建设出名吗推广计划和推广单元有什么区别
  • 空间站 参考消息手机app软件开发需要多少钱
  • 排版的网站wordpress 字体本地化
  • 免费 建站桂林漓江阳朔
  • 做购物网站需要多少钱自己做的网站怎么取sql数据
  • 简述企业网站建设的主要步骤做家乡的网站
  • 网站建设延期报告深圳建站网络公司
  • 天津武清做淘宝网站Wordpress无法显示
  • 网站备案 网站网站开发文档网站
  • 龙岩网站建设全包百胜网站建设
  • 51zwd一起做网站wordpress 修改目录id
  • 建网站怎么挣钱的保定网站建设解决方案
  • 国外比较好的建筑设计网站直播网站开发
  • 公司网站做么做百度排名ppt免费模板官网
  • 做网站线稿软件有哪些网站开发税目编码
  • 网站开发费会计处理网站的营销方法有哪些
  • 网站代码验证wordpress 文章id更改
  • 婚纱摄影网站html学做网站去哪学
  • 响应式网站设计规范中国菲律宾仁爱礁
  • 网站结构的类型英文网站建设580
  • 做军事网站的项目背景图片可以收黄台的浏览器
  • 深圳建一个网站要多少钱电子商务网站建设主管的策划书
  • 榆林做网站需要注意的几点怎样做一个网络营销
  • 网站底部图片官网+wordpress
  • 局网站建设自查怎样做模具钢网站
  • 椒江区建设局网站人人秀h5制作软件
  • 关于微网站策划ppt怎么做济南电商培训基地
  • 莆田哪里有网站开发芜湖网站优化公司
  • python做爬虫和做网站html自动播放视频
  • 微信做兼职什么网站好wordpress整站搬家