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 取得服务器端模板和数据在客户端直接渲染.
分享到:
相关推荐
Spring5 Boot2与Mustache的整合是现代Java开发中的一个重要话题。Spring Boot是Spring框架的简化版,旨在简化创建独立的、生产级别的基于Spring的应用程序。而Mustache是一种逻辑less的模板引擎,常用于视图层的渲染...
除了传统的JSP外,Spring MVC还可以与各种模板引擎(如Thymeleaf、Freemarker、Mustache等)无缝集成,提供更简洁的视图层开发体验。 12. **测试支持** Spring MVC提供了MockMvc工具,可以在不依赖Web服务器的...
弹簧同构视图示例 Spring MVC 同构视图示例项目。 在后端和前端之间共享视图模板。 提供 3 个基于 Mustache(Hogan.js, Trimou), ... 也可以通过handlebar 分支与Spring MVC 中的Handlerbars 和Mustache 进行比较。
在这个例子中,我们将探讨如何使用JavaScript库Mustache.js在ASP.NET MVC项目中实现客户端模板。 Mustache.js是一个无逻辑的模板语言,遵循“逻辑less”的原则,意味着它不包含任何内建的控制流或条件语句。它的...
Mustache是一种逻辑less的模板语言,它遵循一种称为“逻辑标签”的原则,使得视图和逻辑分离,从而更好地实现MVC架构中的视图层。PHP实现的Mustache模板语言类库为开发者提供了一种简洁、可复用的方式来构建动态HTML...
Dart Force MVC 是一个基于 Dart 语言的轻量级 Web 框架,它借鉴了 Spring MVC 的设计理念,为开发者提供了一种结构化开发 Web 应用的方案。在这个"dart-forcemvc-example"项目中,你可以看到如何使用 Dart Force ...
《resource4j与Spring框架集成实战指南》 在IT领域,开源项目是推动技术发展的重要力量,它们提供了丰富的工具和库,使得开发者可以更高效地构建应用。在本篇文章中,我们将聚焦于一个名为"resource4j"的开源项目,...
每个起步依赖都包含了一组常用的库,比如 `spring-boot-starter-web` 会包含Spring MVC和Tomcat等。 3. **Spring Boot CLI**:命令行接口允许用户快速运行Groovy脚本来创建Spring应用程序,极大地提高了开发效率。 ...
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"项目中,Mustache作为视图解析器被集成到Spring MVC中。Mustache遵循分离关注的原则,将数据和表现逻辑分开。它的语法简单,允许开发者创建可重用的模板片段,并且避免了在模板中出现...
刮弹簧胡子 一个简单的 Spring Boot web 应用程序,它使用作为模板语言。 用法 在运行此 webapp 之前,您必须确保其中一个scratch-*-rest webapps 正在... java -jar target/scratch-spring-mustache-1.0-SNAPSHOT.war
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是一种逻辑less的模板语言,它的设计哲学是“逻辑应当留在代码里,数据应当放在模板中”。这意味着Mustache不会在模板中处理条件判断、循环等逻辑,而是通过传递数据到模板来决定最终...
Mustache,以其独特的“逻辑less”特性,成为了一款备受推崇的前端模板引擎,因此被称为“大胡子”。本教程将深入探讨Mustache的核心概念、工作原理以及实际应用。 首先,Mustache是一种无逻辑模板语言,这意味着它...
Mustache模板语言是一种逻辑less的模板语言,它的核心理念是“逻辑不可见”,这意味着在模板中你不会看到任何与控制流程相关的代码,如条件语句或循环。所有逻辑都在模板之外的视图模型中处理。 Phly Mustache的...
通常,会有一个主类(如`Mustache`或`Mustache_Engine`),你可以实例化它并传入模板和数据,然后调用其方法来渲染模板。例如: ```php require_once 'mustache.php-master/Mustache.php'; $data = array( 'name'...
5. **辅助方法**:Mustache不内置任何方法,但Go-mustache允许用户自定义辅助方法,通过`mustache.New("name").Funcs(map[string]interface{}{"myFunc": myFunc})`注册,然后在模板中使用`{{myFunc someVar}}`调用。...
Spring Boot默认配置了模板引擎,如Thymeleaf、Freemarker或Mustache,用于生成动态HTML页面。 7. **数据访问**: Spring Boot支持多种数据访问技术,包括JDBC、JPA(Hibernate)、MyBatis等,提供了易于使用的...
- **模板引擎**:Spring Boot 支持多种模板引擎,如 Thymeleaf、Freemarker、Mustache 等。 - **集成 JSP**:尽管 Spring Boot 推荐使用模板引擎,但也可以通过配置集成 JSP。 - **集成 Servlet、Filter 和 Listener...
**Mustache.js:JavaScript模板引擎详解** Mustache.js,又称为mustache,是一款轻量级且功能强大的模板引擎,专为JavaScript设计。它遵循“逻辑less”的理念,将视图和数据分离,使得代码更易于理解和维护。...