springboot-10-前端页面整合, thymeleaf, freemarker, jsp 模板使用
springboot 中不建议使用jsp作为页面展示, 怎么使用可以看: http://412887952-qq-com.iteye.com/blog/2292471
关于什么是thymeleaf, 可以参照:http://www.cnblogs.com/vinphy/p/4674247.html
springboot 默认是使用的thymeleaf模板引擎的,
使用thymeleaf
1, 在pom.xml中加入依赖即可:
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-thymeleaf</artifactId>
- </dependency>
2, 关闭thymeleaf缓存:
- ########################################################
- ###THYMELEAF (ThymeleafAutoConfiguration)
- ########################################################
- #spring.thymeleaf.prefix=classpath:/templates/
- #spring.thymeleaf.suffix=.html
- #spring.thymeleaf.mode=HTML5
- #spring.thymeleaf.encoding=UTF-
- # ;charset=<encoding> is added
- #spring.thymeleaf.content-type=text/html
- # set to false for hot refresh
- spring.thymeleaf.cache=false
3, 编写模板文件, resource下的template为默认文件位置
/resource/templates/helloHtml.html
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
- xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
- <head>
- <title>Hello World!</title>
- </head>
- <body>
- <h1 th:inline="text">Hello.v.</h1>
- <p th:text="${hello}"></p>
- </body>
- </html>
4, 编写controller
- package com.iwhere.test.web;
- import java.util.Map;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- /**
- * thelemeaf访问controller层
- * @author wenbronk
- * @time 2017年3月17日 下午2:06:32 2017
- */
- @Controller
- public class TemplateController {
- @RequestMapping("/helloHtml")
- public String helloHtml(Map<String, Object> map) {
- map.put("hello", "from TemplateController.helloHtml");
- return "/helloHtml";
- }
- }
thymeleaf 上的表达式:
- <html xmlns:th="http://www.thymeleaf.org"></>
通过 xmlns命名空间引入thymeleaf
需要动态处理的元素前 加 th:- <link th:src="@{bootstrap/css/bootstrap.min.css}" rel = "stylesheet"/>
通过 @{} 获取web静态资源- <span th:text="${model.name}"></>
通过 ${} 获取model的属性- <div th:if="${not #lists.isEmpty(people)}">
通过 ${not #lists.isEmpty(list)} 判断people是否为空- <li th:each="person:${people}">
遍历元素 people
<button th:onclick="'getName(\'' + $(persion.name} + '\'});'">
动态给元素绑定值- <script th:inline="javascript">
var single = [[${singlePerson}]];
console.log(single.name + ": " + single.age)
</>
可在js中取值
使用freemarker
1, 加入依赖
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-freemarker</artifactId>
- </dependency>
2, applicaiton.properties
- ########################################################
- ###FREEMARKER (FreeMarkerAutoConfiguration)
- ########################################################
- spring.freemarker.allow-request-override=false
- spring.freemarker.cache=true
- spring.freemarker.check-template-location=true
- spring.freemarker.charset=UTF-
- spring.freemarker.content-type=text/html
- spring.freemarker.expose-request-attributes=false
- spring.freemarker.expose-session-attributes=false
- spring.freemarker.expose-spring-macro-helpers=false
- #spring.freemarker.prefix=
- #spring.freemarker.request-context-attribute=
- #spring.freemarker.settings.*=
- #spring.freemarker.suffix=.ftl
- #spring.freemarker.template-loader-path=classpath:/templates/#comma-separatedlist
- #spring.freemarker.view-names= #whitelistofviewnamesthatcanberesolved
3, controller
- /**
- * 返回html模板.
- */
- @RequestMapping("/helloFtl")
- public String helloFtl(Map<String,Object> map){
- map.put("hello","from TemplateController.helloFtl");
- return"/helloFtl";
- }
4, 模板文件
helloFtl.ftl
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
- xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
- <head>
- <title>Hello World!</title>
- </head>
- <body>
- <h1>Hello.v.</h1>
- <p>${hello}</p>
- </body>
- </html>
freemarker 和 thymeleaf是可以共存的
jsp的支持
jsp在springboot中已经被弱化了,
1, 导入maven依赖
- <!-- servlet 依赖. -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <!--
- JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat .x。在JSP .0中也是作为标准支持的。
- 不然报异常信息:
- javax.servlet.ServletException: Circular view path [/helloJsp]: would dispatch back to the current handler URL [/helloJsp] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
- -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- </dependency>
- <!-- tomcat 的支持.-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-tomcat</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.tomcat.embed</groupId>
- <artifactId>tomcat-embed-jasper</artifactId>
- <scope>provided</scope>
- </dependency>
jdk编译版本
- <build>
- <finalName>spring-boot-jsp</finalName>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
2, application.properties
- # 页面默认前缀目录
- spring.mvc.view.prefix=/WEB-INF/jsp/
- # 响应页面默认后缀
- spring.mvc.view.suffix=.jsp
- # 自定义属性,可以在Controller中读取
- application.hello=Hello Angel From application
3, controller
- package com.kfit.jsp.controller;
- import java.util.Map;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- /**
- * 测试
- * @author Angel(QQ:412887952)
- * @version v.0.1
- */
- @Controller
- public class HelloController {
- // 从 application.properties 中读取配置,如取不到默认值为Hello Shanhy
- @Value("${application.hello:Hello Angel}")
- private String hello;
- @RequestMapping("/helloJsp")
- public String helloJsp(Map<String,Object> map){
- System.out.println("HelloController.helloJsp().hello="+hello);
- map.put("hello", hello);
- return "helloJsp";
- }
- }
4, jsp页面 , 放在 webapps/WEB-INF/ 下
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- helloJsp
- <hr>
- ${hello}
- </body>
- </html>
原文地址: http://412887952-qq-com.iteye.com/blog/2292402
springboot-10-前端页面整合, thymeleaf, freemarker, jsp 模板使用的更多相关文章
- springboot同时使用thymeleaf和jsp模板
语言:javaEE 框架:springboot+thymeleaf.jsp模板引擎 背景:学习springboot过程中想同时使用thymeleaf和jsp访问(官方不建议) 步骤: 1) 在pom ...
- [Java] Spring boot2 整合 Thymeleaf 后 去除模板缓存
Spring boot2 整合 Thymeleaf 后 去除模板缓存 网上好多文章只是简单粗暴的说,在 application.properties 做如下配置即可: #Thymeleaf cach ...
- SpringBoot 获取前端页面参数的集中方式总结
SpringBoot的一个好处就是通过注解可以轻松获取前端页面的参数,之后尅将参数经过一系列处理传送到后台数据库,前端时间正好用到.大致分为一下几种: 1.指定前端URL请求参数名称与方法名称一致,这 ...
- SpringBoot集成前端模版(thymeleaf)
1.在application.properties配置文件中添加 thymeleaf 的配置信息 spring.datasource.driverClassName=com.mysql.jdbc.Dr ...
- 十一、springboot(六)整合Thymeleaf
1.添加jar包依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...
- SpringBoot 同时整合thymeleaf html、vue html和jsp
问题描述 SpringBoot如何同时访问html和jsp SpringBoot访问html页面可以,访问jsp页面报错 SpringBoot如何同时整合thymeleaf html.vue html ...
- SpringBoot页面展示Thymeleaf
https://www.jianshu.com/p/a842e5b5012e 开发传统Java WEB工程时,我们可以使用JSP页面模板语言,但是在SpringBoot中已经不推荐使用了.Spring ...
- SpringBoot第九集:整合JSP和模板引擎Freemarker/Thymeleaf(2020最新最易懂)
SpringBoot第九集:整合JSP和模板引擎(2020最新最易懂) 当客户通过前端页面提交请求后,我们以前是怎么做的?后端接收请求数据,处理请求,把响应结果交给模板引擎JSP,最后将渲染后的JSP ...
- 07.整合jsp、整合freemarker、整合thymeleaf
整合jsp pom.xml部分内容 <packaging>war</packaging> </dependencies> <dependency> &l ...
随机推荐
- 【spfa训练】HDU4725 (层级建图)
HDU4725 题目大意:一些节点分布在不同的层上,已知相邻的层可以往来距离为c,在给你一些已知的边,问你点1-n的最短路 分析:越往后做,越觉得最短路的考点已经不是spfa算法还是dijkscar算 ...
- setTimeout问题
function fn(argu1){ alert(argu1); } setTimeout(fn, 1000, 12); setTimeout从第三个参数开始,之后的参数都是fn的.fn不用加(), ...
- jquery ui导入两次的错误提示
如果jquery ui plugin的js文件出现到两次的话,就会出现报错. 解决办法: 找出引用了jquery ui 的文件,将其中一个去掉就ok了. 在Firefox下面的报错提示: TypeEr ...
- Delphi Language Overview
Delphi is a high-level, compiled, strongly typed language that supports structured and object-orient ...
- 转载:R语言rvest包使用
R中有好几个包都可以抓取网页数据,但是rvest + CSS Selector最方便. 通过查看器立刻知道表格数据都在td:nth-child(1),td:nth-child(3)之类的节点中,直接代 ...
- C#写文本文件,如何换行(添加换行符)
把文本写到文件中,如果是几段文字拼合起来输出到文件中,通常每段非结尾文字后需要添加换行符,不然几段文字都变成一段. 在 C# 中,文本换行有两种方法,一种在需要换行的文本后面添加换行符 \r\n 即可 ...
- numpy 数组相减
a与b的每一列相减
- Ubuntu 16.04LTS安装Nginx
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...
- python里面如何拷贝一个对象?deepcopy 和 copy 有什么区别 ?
深拷贝就是说原内容改变但是拷贝的性内容不会改变,copy.copy和deepcopy对一个不可变类型进行拷贝, name结果相同都是浅拷贝指向引用如果是可变的话, 即使元组在最外层, 那么deepco ...
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Serv ...