Spring学习(六)渲染Web视图

一、创建JSP视图

  1. spring提供了两种支持jsp视图的方式:
  • InternalResourceViewResolver
    • InternalResourceViewResolver会将视图名解析为JSP文件
    • 如果JSP页面中使用了JSP标准标签库(JavaServer Pages Standard Tag Library, JSTL) 的话, InternalResourceViewResolver能够将视图名解析为JstlView形式的JSP文件, 从而将JSTL本地化和资源bundle变量暴露给JSTL的格式化(formatting) 和信息(message) 标签。
  • Spring
    • Spring提供了两个JSP标签库, 一个用于表单到模型的绑定, 另一个提供了通用的工具类特性。
  1. 配置适用于JSP的视图解析器
  • java方式
     @Bean
      public ViewResolver viewResolver() {
      InternalResourceViewResolver resolver = new InternalResourceViewResolver();
      resolver.setPrefix("/WEB-INF/views/");
      resolver.setSuffix(".jsp");
      return resolver;
    }
    
  • xml方式
    
      
      
    
    
    • home将会解析为“/WEB-INF/views/home.jsp”
    • productList将会解析为“/WEB-INF/views/productList.jsp”
    • books/detail将会解析为“/WEB-INF/views/books/detail.jsp”
  1. 解析JSTL视图
    使用JSTL标签来处理格式化和信息,需要InternalResourceViewResolver将视图解析为JstlView,这需要设置InternalResourceViewResolver的viewClass属性:
  • java方式
    @Bean
    public ViewResolver viewResolver() {
      InternalResourceViewResolver resolver = new InternalResourceViewResolver();
      resolver.setPrefix("/WEB-INF/views/");
      resolver.setSuffix(".jsp");
      resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);
      return resolver;
    }
    
  • xml方式
    
      
      
      
    
    

4.使用spring的jsp库

  • 将表单绑定到模型上

    Spring的表单绑定jsp标签库包含了14个标签,它们中的大多数都用来渲染HTML中的表单标签。为了使用它们,需要在jsp页面中对其进行声明:
    <%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
    如果在模型中Spitter对象的firstName属性值为Jack, 那么所渲染的标签中, 会存在value="Jack"。

    展现错误

  • spring通用的标签库
    要使用Spring通用的标签库, 我们必须要在页面上对其进行声明:
    <%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>

    展现国际化信息
    借助来渲染文本
    
    将会根据key为spittr.welcome的信息源来渲染文本。
    
    配置信息源:
    spring中实现了MessageSource接口的类可以配置信息源,常用的有ResourceBundleMessageSource
    和ReloadableResourceBundleMessageSource
    java代码:
    @Bean
    public MessageSource messageSource() {
      ReloadableResourceBundleMessageSource messageSource = 
          new ReloadableResourceBundleMessageSource();
    //ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
      messageSource.setBasename("classpath:///messages");
      messageSource.setCacheSeconds(10);
      return messageSource;
    }
    
    创建URL
    的用法见p229页
    
    转义内容
    标签是一个通用的转义标签。它会渲染标签体中内嵌的内容, 并且在必要的时候进行转义:
    
    
    

    Hello

    Hello

二、使用Apache Tiles视图定义布局

  1. 配置
  2. 使用

三、使用Thymeleaf

  1. 配置
  • 在spring中配置三个bean:

    ThymeleafViewResolver:将逻辑视图名称解析为Thymeleaf模板视图;
    SpringTemplateEngine:处理模板并渲染结果;
    TemplateResolver:加载Thymeleaf模板。

  • java配置
    @Bean
    public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
      ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
      viewResolver.setTemplateEngine(templateEngine);
      return viewResolver;
    }
    @Bean
    public SpringTemplateEngine templateEngine(TemplateResolver templateResolver) {
      SpringTemplateEngine templateEngine = new SpringTemplateEngine();
      templateEngine.setTemplateResolver(templateResolver);
      return templateEngine;
    }
    @Bean
    public TemplateResolver templateResolver() {
      TemplateResolver templateResolver = new ServletContextTemplateResolver();
      templateResolver.setPrefix("/WEB-INF/views/");
      templateResolver.setSuffix(".html");
      templateResolver.setTemplateMode("HTML5");
      return templateResolver;
    }
    
  • xml配置
    Spring学习(六)渲染Web视图_第1张图片
    xml配置Thymeleaf
  1. 使用
    略...见p240

你可能感兴趣的:(Spring学习(六)渲染Web视图)