银角见了幌金绳,自然知道是九尾狐狸来了,喜道:“干娘!多谢干娘来救孩儿!”

“给我压制住。”刘皓疯狂咆哮道,身上迸发出一股让天地都色变的恐怖威势:“墨丘利,去死吧。”

斗地主怎么出牌才能赢

“本宫满清太后(满清公主)参见主人。”两人仪态万千的微微蹲下身子说道,奇怪的是她们的语气并没有丝毫谦卑之色,注意看的话还会发现她们的眸子当中还有这一抹矜持和高贵。
“我们加快一点速度吧,省的父亲等急了。”唐三向唐玉点了点头,抬手向他肩头抓去。

直到这时候,萧胜男才惊奇的道:“小民,这个大猩猩能听懂你的话?”

【Spring】渲染Web视图


前言

前面学习了编写Web请求的控制器,创建简单的视图,本篇博文讲解控制器完成请求到结果渲染到用户的浏览器的过程。

渲染Web视图

理解视图解析

前面所编写的控制器方法都没有直接产生浏览器中渲染所需要的HTML,只是将数据填充到模型中,然后将模型传递给视图,方法返回值是String类型的值,其是视图的逻辑名称,不会直接引用具体的视图实现。将控制器中请求处理的逻辑和视图中的渲染解耦是Spring MVC的重要特征,控制器只通过逻辑视图名了解视图,而视图解析器用于确定使用哪个视图实现来渲染模型。前面在WebConfig中,使用了InternalResourceViewResolver,其配置了prefix/WEB-INF/views/suffix.jsp用于确定渲染模型的jsp文件的物理位置。Spring自带了12个视图解析器用于将逻辑视图名转化为物理实现。

对于不同的视图解析器,一般对应某种特定的视图技术,如InternalResourceViewResolver一般用于JSP视图、TilesViewResolver用于Apache Tiles视图、FreeMarkerViewResolver用于FreeMarker视图、VelocityViewResolver用于Velocity视图。

创建JSP视图

Spring提供了两种支持JSP视图的方式。

  • InternalResourceViewResolver会将视图名解析为JSP文件。
  • Spring提供了两个JSP标签库,一个用于表单到模型的绑定,一个用于提供了通用的工具类特性。

配置适用于JSP的视图解析器

InternalResourceViewResolver会在视图名上添加前缀和后缀,进而确定Web应用中的视图资源的物理路径,如下代码使用@Bean注解,并设置了前缀和后缀的解析器。


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

也可使用XML的配置如下。


<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:prefix="/WEB-INF/views/"
    p:suffix=".jsp" />

配置视图解析器后,home会被解析为/WEB-INF/views/home.jsp/books/detail会被解析为/WEB-INF/views/books/detail.jsp

InternalResourceViewResolver最终会将逻辑视图名解析为InternalResourceView实例,该实例会引用JSP文件,如果JSP文件中使用JSTL标签处理信息和格式化时,需要将其解析为JSTLView,此时需要设置解析器的viewClassJstlView.class即可。

使用Spring的JSP库

Spring提供了两个用来帮助定义Spring MVC Web视图的JSP标签库,其中一个标签库会用来渲染HTML表单标签,另一个标签库包含工具类标签。

Spring的表单绑定JSP标签库包含了14个标签,其中大多数用来渲染HTML的表单标签,其能够根据模型中对象的属性填充值,还包含展现用户错误的的标签,其会将错误信息渲染到最终的HTML中,可通过如下方式指定。


<%@ taglib uri="http://www.springframework.org/tags/form" prefix="cf" %>

在声明后,即可使用如下14个标签库。

针对不同地区展示不同信息已是国际化的重要组成部分,其关键在于使用<s:message>标签,如在home.jsp中添加<s:message code="spittr.welcome" />标签,然后在WebConfig中添加如下代码。


    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
        resourceBundleMessageSource.setBasename("messages");
        return resourceBundleMessageSource;
    }

最后在resources/下添加messages.properties文件,并配置内容如下spitter.welcome=welcome!,启动,显示welcome!,还可配置message_zh.properties文件,内容配置如下spitter.welcome=china welcome!,启动,会显示china wecome!,即会根据本地时区选择合适的messages文件显示。

使用Apache Tiles视图定义布局

前面我们并未关注Web页面的布局问题,每个jsp完全负责定义自身的布局,假定需要为所有页面定义一个通用的头部和底部,这时可使用布局引擎如Apache Tiles,定义适用于所有页面的通用页面布局。

配置Tiles视图解析器

首先需要配置TilesConfigurerbean,它负责定位和加载Tile定义并协调生成Tiles,再者需要TilesViewResolverbean将逻辑视图名称解析为Tile定义。


    @Bean
    public TilesConfigurer tilesConfigurer() {
        TilesConfigurer tilesConfigurer = new TilesConfigurer();
        tilesConfigurer.setDefinitions("/WEB-INF/layout/tiles.xml");
        tilesConfigurer.setCheckRefresh(true);

        return tilesConfigurer;
    }

然后再定义tils.xml文件和对应的文件即可。

使用Thymeleaf

配置Thymeleaf视图解析器

需要配置如下三个bean

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

添加beanWebConfig中如下。


    @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;
    }

总结

Spring的视图渲染十分灵活,有传统的jsp方案(InternalResourceViewResolver),还有Tiles(TilesViewResolver)Thymeleaf(ThymeleafViewResolver)的布局引擎,开发者可根据自身需求选择合适的视图解析器。

当前文章:http://hnhdqp.com/news2018111929103/

发布时间:2019-01-18 00:17:04

来一局麻将作弊器 金贝棋牌充值问题 买单返是一种新骗局吗? 买马资料图2019今晚 亲朋扯旋怎么转分 街机扑克牌机 捕鱼的游戏有没有方法 灯塔麻将app软件

编辑:建邓邓华

相关新闻

亲历·陕西十年:小康建设 全面启动

2019-01-18 00:38:17

武汉乓鄙美容美发化妆学校

HTC One Android 4.2.2更新功能曝光

2019-01-18 00:27:22

台湾氐柑电子商务有限公司

热门推荐

  • 全键无冲/酷炫灯效,爱国者W-666青轴机械键盘139元(50元券)
  • 元宵节吃汤圆,黄国粮业旗舰店水磨糯米粉大促10.9元起
  • 中国人口最少行政乡“走出”大山迎客来
  • 台灯护眼就看这些参数,白炽灯、节能灯、LED灯谁最好
  • 在日外国留学生近27万人 中国大陆留学生占4成
  • 补充21种维生素及矿物质,善存旗舰店佳维片150+60片139元(50元券)
  • 联合国大会:美改变耶路撒冷地位无效
  • 研究表明赴美留学生12年来首次减少
  • 美国得州确认“哈维”飓风造成1800亿美元损失
  • 日媒:安倍外交最近很不顺 访美回国不见笑容
  • 河北新闻网版权所有 本站点信息未经允许不得复制或镜像 法律顾问:星光牌香烟 三个人斗地主搞笑视频
  • 能赚钱的棋牌软件 copyright ? 2000 - 2016
  • 新闻热线:0311-67563366 广告热线:0311-67562966 新闻投诉:0311-67562994
  • 冀ICP备 09047539号-1 | 互联网新闻信息服务许可证编号:1312006002
  • 广播电视节目制作经营许可证(冀)字第101号|信息网络传播视听节目许可证0311618号
  • 刑一诺 宜宾麻将微信群2角一分 友趣通是骗局来的吗? 2019最新棋牌游戏官网