专栏首页怀英的自我修炼《Spring实战》摘录 - 11

《Spring实战》摘录 - 11

101

问题: #5.2.3-1 | 测试SpittleController处理针对“/spittles”的GET请求 回答:

@Test
public void shouldShowRecentSpittles() throws Exception{
     List<Spittle> expectedSpittles = createSpittleList(20);
     SpittleRepository  mockRepository = mock(SpittleRepository.class); // Mock Repository
     when(mockRepository.findSpittles(Long.MAX_VALUE,20)).thenReturn(expectedSpittles);
     SpittleController controller = new SpittleController(mockRepository);
     MockMvc mockMvc = standaloneSetup(controller).setSingleView(new InternalResourceView(“/WEB-INF/views/spittles.jsp”)).build(); //Mock Spring MVC
     mockMvc.perform(get(“/spittles”))  // 对”/spittles”发起GET请求
             .andExpect(view().name(“spittles”))
             .andExpect(model().attributeExists(“spittleList”))
             .andExpect(model().attribute(“spittleList”, hasItems(expectedSpittles.toArray())));  //断言期望的值
}
…
private List<Spittle> createSpittleList(int count){
     List<Spittle> spittles = new ArrayList<Spittles>();
     for(int i=0; i<count; i++){
         spittles.add(new Spittle(“Spittle ” + i, new Date()));
     }
     return spittles;
}

102

问题: #5.3-1 | Spring MVC允许以多种方式将客户端中的数据传送到控制器的处理器方法中,包括 回答:

  • 查询参数(Query Parameter)。
  • 表单参数(Form Parameter)。
  • 路径变量(Path Variable)。

103

问题: # 5.4-1 | 网络编程中,表单的作用 回答: 展现表单以及处理用户通过表单提交的数。

104

问题: #5.4.1-1 | 当InternalResourceViewResolver看到视图格式中的“redirect:”前缀时,InternalResourceViewResolver会知道些什么? 回答: 它就知道要将其解析为重定向的规则,而不是视图的名称。

105

问题: #5.4.1-2 | 除了“redirect:”,InternalResourceViewResolver还能识别“forward:”前缀。当它发现视图格式中以“forward:”作为前缀时,它会怎么做? 回答: 请求将会前往(forward)指定的URL路径,而不再是重定向。

106

问题: #5.4.2-1 | Java校验API所提供的校验注解 回答:

  • @AssertFalse - 所注解的元素必须是Boolean类型,并且值为false
  • @AssertTrue - 所注解的元素必须是Boolean类型,并且值为true
  • @DecimalMax - 所注解的元素必须是数字,并且它的值要小于或等于给定的BigDecimalString值
  • @DecimalMin - 所注解的元素必须是数字,并且它的值要大于或等于给定的BigDecimalString值
  • @Digits - 所注解的元素必须是数字,并且它的值必须有指定的位数
  • @Future - 所注解的元素的值必须是一个将来的日期
  • @Max - 所注解的元素必须是数字,并且它的值要小于或等于给定的值
  • @Min - 所注解的元素必须是数字,并且它的值要大于或等于给定的值
  • @NotNull - 所注解元素的值必须不能为null
  • @Null - 所注解元素的值必须为null
  • @Past - 所注解的元素的值必须是一个已过去的日期
  • @Pattern - 所注解的元素的值必须匹配给定的正则表达式
  • @Size - 所注解的元素的值必须是String、集合或数组,并且它的长度要符合给定的范围

107

问题: #6.1-1 | Spring自带了13个视图解析器,能够将逻辑视图名转换为物理实现 回答:

  • BeanNameViewResolver - 将视图解析为Spring应用上下文中的bean,其中bean的ID与视图的名字相同
  • ContentNegotiatingViewResolver - 通过考虑客户端需要的内容类型来解析视图,委托给另外一个能够产生对应内容类型的视图解析器
  • FreeMarkerViewResolver - 将视图解析为FreeMarker模板
  • InternalResourceViewResolver - 将视图解析为Web应用的内部资源(一般为JSP)
  • JasperReportsViewResolver - 将视图解析为JasperReports定义
  • ResourceBundleViewResolver - 将视图解析为资源bundle(一般为属性文件)
  • TilesViewResolver - 将视图解析为Apache Tile定义,其中tile ID与视图名称相同。注意有两个不同的TilesViewResolver实现,分别对应于Tiles 2.0和Tiles 3.0
  • UrlBasedViewResolver - 直接根据视图的名称解析视图,视图的名称会匹配一个物理视图的定义
  • VelocityLayoutViewResolver - 将视图解析为Velocity布局,从不同的Velocity模板中组合页面
  • VelocityViewResolver - 将视图解析为Velocity模板
  • XmlViewResolver - 将视图解析为特定XML文件中的bean定义。类似于BeanName-ViewResolver
  • XsltViewResolver - 将视图解析为XSLT转换后的结果

108

问题: #6.2-1 | Spring提供了两种支持JSP视图的方式: 回答:

  • InternalResourceViewResolver会将视图名解析为JSP文件。另外,如果在你的JSP页面中使用了JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)的话,InternalResourceViewResolver能够将视图名解析为JstlView形式的JSP文件,从而将JSTL本地化和资源bundle变量暴露给JSTL的格式化(formatting)和信息(message)标签。
  • Spring提供了两个JSP标签库,一个用于表单到模型的绑定,另一个提供了通用的工具类特性。

109

问题: #6.2.1-1 | InternalResourceViewResolver解析视图时,会在视图名上添加前缀和后缀,请画出相应的图

回答:

110

问题: #6.2.1-2 | 使用@Bean注解的时候,我们可以按照如下的方式配置Internal-ResourceView Resolver,使其在解析视图时,可以自动加上前后缀 回答:

@Bean
public ViewResolver viewResolver() {
  InternalResourceViewResolver resolver =
      new InternalResourceViewResolver();
  resolver.setPrefix("/WEB-INF/views/");
  resolver.setSuffix(".jsp");
  return resolver;
}

//作为替代方案,如果你更喜欢使用基于XML的Spring配置,那么可以按照如下的方式配置InternalResourceViewResolver:
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.
                        InternalResourceViewResolver"
      p:prefix="/WEB-INF/views/"
      p:suffix=".jsp" />

本文分享自微信公众号 - 怀英的自我修炼(hydzwxl),作者:怀英Qiu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《Spring实战》摘录 - 16

    回答:视图状态会涉及到流程应用程序的用户,而行为状态则是应用程序自身在执行任务。行为状态一般会触发Spring所管理bean的一些方法并根据方法调用的执行结果转...

    用户1335799
  • 怀英漫谈9 - JS 数组

    所谓的数组,就是一些数据的集合,JS中没有集合的概念,所以集合也是数组的一种。如果你Java用的多,那么这个概念就有点儿难以理解,毕竟从Java的文意来说,集合...

    用户1335799
  • 88 - 修炼 - 高数18讲学习感受09

    最近《18讲》看到了极限模块。上学的时候,是从字面意义去理解极限的概念的 --- 到极致之后,所能达到的值。这次是从数学的角度去看,一开始的时候有些懵,不过在多...

    用户1335799
  • IOS基础知识第二季

    1.分辨率:320*480,640*960 2.icon图标需要两个(57*57) 114*114 用于视网膜屏幕 icon@2x.png,icon.png ...

    苦咖啡
  • ASP.NET MVC5高级编程——(2)MVC模式的视图与Razor引擎

    1 ,视图职责是向用户提供界面,当控制器针对被请求的URL执行完合适的逻辑后,就将要显示的内容委托给视图。

    浩Coding
  • MySQL 视图

    看到这里,或许你已经对MySQL 的基本操作了如指掌,这篇文章讲解MySQL高级功能中 视图的概念及其用法。

    技能锦囊
  • 「mysql优化专题」视图应用竟然还可以这么优化?不得不收藏(8)

    视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。视图并不在数据库中以存储的数据值集形式存在,而是存在于实际引用的数据...

    java进阶架构师
  • MySQL 视图

    ​看到这里,或许你已经对MySQL 的基本操作了如指掌,这篇文章讲解MySQL高级功能中 视图的概念及其用法。

    技能锦囊
  • AI综述专栏 | 孙仕亮:多视图机器学习综述

    在科学研究中,从方法论上来讲,都应先见森林,再见树木。当前,人工智能科技迅猛发展,万木争荣,更应系统梳理脉络。为此,我们特别精选国内外优秀的综述论文,开辟“AI...

    马上科普尚尚
  • iOS的MyLayout布局系列-流式布局MyFlowLayout

         在我的CSDN博客中的几篇文章分别介绍MyLayout布局体系中的视图从一个方向依次排列的线性布局(MyLinearLayout)、视图层叠且停靠于父...

    欧阳大哥2013

扫码关注云+社区

领取腾讯云代金券