`
yiminghe
  • 浏览: 1460101 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

using mustache with spring mvc

    博客分类:
  • java
阅读更多

spring 基本不用介绍了,是目前最好的 IOC 容器了,它的 mvc 架构也十分出色,特别是基于标注的开发方式,免除了大多数框架庞大配置的缺点。而 mustache 则是新兴的模板语言,难能可贵的是在各个主流语言下都有对应的解析器,恰好有机会尝试将 spring mvc 的 view 层替换为 mustache ,感觉很不错~~

 

 

1.写个 controller

 

public class Product{
    private String name;
    // setter . getter
}
 

 

@Controller
public Test(){
 @RequestMapping("/{id}")
	public String personal(@PathVariable int id, Model model) throws Exception {
		Product d = manager.getProduct(id);
		model.addAttribute("product", d);
		return "personal";
	}

}

 

controller 没有改变,通过 resetful 的 url 暴漏查询服务.

 

 

2.下载 mustache 解析器以及 viewresolver

 

java 解析器 就列在 mustache 主页上,不多说..

 

而 viewresolver 也已经有人封装好了,但是对于中文用户就欠考虑了,我修改了下放在 这里

 

 

3.配置 mustache viewresolver

 

在 xx-servlet.xml 中配置:

 

 

<bean id="viewResolver" class="org.springframework.web.servlet.view.mustache.MustacheViewResolver">
        <property name="cache" value="false"/>
        <property name="nullValue" value=""/>
        <property name="prefix" value="/WEB-INF/mustache/"/>
        <property name="suffix" value=".htm"/>
        <property name="templateLoader">
            <bean class="org.springframework.web.servlet.view.mustache.MustacheTemplateLoader">
                <property name="encoding" value="utf-8"/>
            </bean>
        </property>
        <property name="contentType">
            <value>text/html; charset=utf-8</value>
        </property>
    </bean>
 

其中特别注意的是

 

当取值为 null时,默认解析器会抛出异常,而经常想要的效果是直接渲染为空字符串,那么需要配置:

 

 <property name="nullValue" value=""/>

 

中文需要告诉解析器模板文件的编码(否则就系统默认了),一般是 utf-8

 

 <property name="encoding" value="utf-8"/>

 

也要告诉 viewresolver 最后要修改 content-type 头,否则默认为 iso8859-1 ,浏览器会显示乱码

 

<value>text/html; charset=utf-8</value>
 

view name 与模板文件对应和其他类型的 viewresolver 一样。模板文件放在 WEB-INF/mustache 下,根据控制器返回的 view name 来找对应的模板文件并结合 model 渲染出来.

 

 

4.模板文件编写

 

第一步已经在 controller 中将 Product 的实例放在 model 的 product 属性上. 那么就可以直接在模板中读到 Product 的实例值

 

 

<h1>{{product.name}}</h1>
 

如果 Product 实例有多个字段的话,可以采用直接把当前实例作为其属性的 context:

 

<ul>
{{#product}}
<li> {{name}} </li>
<li> {{price}} </li>
{{/product}}
</ul>

  优点:

最大的优点即是可以前后端共用模板,初始屏可以由后端渲染,接下来的无跳转局部刷新可以由 js 取得服务器端模板和数据在客户端直接渲染.

 

 

分享到:
评论

相关推荐

    Spring5Boot2Mustache:Spring5 Boot2小胡子

    Spring5 Boot2与Mustache的整合是现代Java开发中的一个重要话题。Spring Boot是Spring框架的简化版,旨在简化创建独立的、生产级别的基于Spring的应用程序。而Mustache是一种逻辑less的模板引擎,常用于视图层的渲染...

    sping web mvc

    除了传统的JSP外,Spring MVC还可以与各种模板引擎(如Thymeleaf、Freemarker、Mustache等)无缝集成,提供更简洁的视图层开发体验。 12. **测试支持** Spring MVC提供了MockMvc工具,可以在不依赖Web服务器的...

    spring-isomorphic-view-example:Spring MVC 同构视图示例项目

    弹簧同构视图示例 Spring MVC 同构视图示例项目。 在后端和前端之间共享视图模板。 提供 3 个基于 Mustache(Hogan.js, Trimou), ... 也可以通过handlebar 分支与Spring MVC 中的Handlerbars 和Mustache 进行比较。

    使用Mustache.js实现的asp.net mvc客户端模版的例子

    在这个例子中,我们将探讨如何使用JavaScript库Mustache.js在ASP.NET MVC项目中实现客户端模板。 Mustache.js是一个无逻辑的模板语言,遵循“逻辑less”的原则,意味着它不包含任何内建的控制流或条件语句。它的...

    Mustache: PHP实现的Mustache模板语言类库

    Mustache是一种逻辑less的模板语言,它遵循一种称为“逻辑标签”的原则,使得视图和逻辑分离,从而更好地实现MVC架构中的视图层。PHP实现的Mustache模板语言类库为开发者提供了一种简洁、可复用的方式来构建动态HTML...

    dart-forcemvc-example:dart force mvc的一个例子,熟悉spring mvc的你更容易上手dart io

    Dart Force MVC 是一个基于 Dart 语言的轻量级 Web 框架,它借鉴了 Spring MVC 的设计理念,为开发者提供了一种结构化开发 Web 应用的方案。在这个"dart-forcemvc-example"项目中,你可以看到如何使用 Dart Force ...

    mustache-maven-plugin-1.1.zip

    《resource4j与Spring框架集成实战指南》 在IT领域,开源项目是推动技术发展的重要力量,它们提供了丰富的工具和库,使得开发者可以更高效地构建应用。在本篇文章中,我们将聚焦于一个名为"resource4j"的开源项目,...

    Spring 学习笔记《Spring Boot》源码

    每个起步依赖都包含了一组常用的库,比如 `spring-boot-starter-web` 会包含Spring MVC和Tomcat等。 3. **Spring Boot CLI**:命令行接口允许用户快速运行Groovy脚本来创建Spring应用程序,极大地提高了开发效率。 ...

    springboot学习思维笔记.xmind

    spring-boot-starter-mustache spring-boot-starter-redis spring-boot-starter-security spring-boot-starter-social-facebook spring-boot-starter-social-linkedin spring-boot-...

    spring-boot-web-mustache

    在"spring-boot-web-mustache"项目中,Mustache作为视图解析器被集成到Spring MVC中。Mustache遵循分离关注的原则,将数据和表现逻辑分开。它的语法简单,允许开发者创建可重用的模板片段,并且避免了在模板中出现...

    scratch-spring-mustache:一个使用 Mustache 作为模板语言的简单 Spring Boot Web 应用程序

    刮弹簧胡子 一个简单的 Spring Boot web 应用程序,它使用作为模板语言。 用法 在运行此 webapp 之前,您必须确保其中一个scratch-*-rest webapps 正在... java -jar target/scratch-spring-mustache-1.0-SNAPSHOT.war

    spring-mvc-example

    Spring MVC示例 Java 1.8.0 Gradle6.0.1 Spring Boot 2.2.2 SpringMVC 自由标记 胡子 模组 mvc-rest-api: @RestController示例 mvc-web-freemarker: @...mvc-web-mustache: @Controller + Mustache示例

    Mustache一个Mustache模板语言的PHP实现

    **Mustache模板语言** Mustache是一种逻辑less的模板语言,它的设计哲学是“逻辑应当留在代码里,数据应当放在模板中”。这意味着Mustache不会在模板中处理条件判断、循环等逻辑,而是通过传递数据到模板来决定最终...

    前端模板引擎Mustache教程.zip

    Mustache,以其独特的“逻辑less”特性,成为了一款备受推崇的前端模板引擎,因此被称为“大胡子”。本教程将深入探讨Mustache的核心概念、工作原理以及实际应用。 首先,Mustache是一种无逻辑模板语言,这意味着它...

    Phly Mustache:一个PHP实现的Mustache模板语言类库.zip

    Mustache模板语言是一种逻辑less的模板语言,它的核心理念是“逻辑不可见”,这意味着在模板中你不会看到任何与控制流程相关的代码,如条件语句或循环。所有逻辑都在模板之外的视图模型中处理。 Phly Mustache的...

    Mustache: PHP实现的Mustache模板语言类库.zip

    通常,会有一个主类(如`Mustache`或`Mustache_Engine`),你可以实例化它并传入模板和数据,然后调用其方法来渲染模板。例如: ```php require_once 'mustache.php-master/Mustache.php'; $data = array( 'name'...

    Go-mustache-Mustache模板语言的一个Go实现

    5. **辅助方法**:Mustache不内置任何方法,但Go-mustache允许用户自定义辅助方法,通过`mustache.New("name").Funcs(map[string]interface{}{"myFunc": myFunc})`注册,然后在模板中使用`{{myFunc someVar}}`调用。...

    Spring boot基础demo

    Spring Boot默认配置了模板引擎,如Thymeleaf、Freemarker或Mustache,用于生成动态HTML页面。 7. **数据访问**: Spring Boot支持多种数据访问技术,包括JDBC、JPA(Hibernate)、MyBatis等,提供了易于使用的...

    Spring Boot 学习笔记完整教程.pdf

    - **模板引擎**:Spring Boot 支持多种模板引擎,如 Thymeleaf、Freemarker、Mustache 等。 - **集成 JSP**:尽管 Spring Boot 推荐使用模板引擎,但也可以通过配置集成 JSP。 - **集成 Servlet、Filter 和 Listener...

    mustache.js javascript模板引擎

    **Mustache.js:JavaScript模板引擎详解** Mustache.js,又称为mustache,是一款轻量级且功能强大的模板引擎,专为JavaScript设计。它遵循“逻辑less”的理念,将视图和数据分离,使得代码更易于理解和维护。...

Global site tag (gtag.js) - Google Analytics