??斗地主捕鱼电竞提现秒到 广告位招租 - 15元/月全站展示
??支付宝搜索579087183领大额红包 ??伍彩集团官网直营彩票
??好待遇→招代理 ??伍彩集团官网直营彩票
??络茄网 广告位招租 - 15元/月全站展示
SpringBoot 七 整合themeleaf+bootstrap

转载   小杨Java   2018-11-06   浏览量:28


前言

Thymeleaf是用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是将优雅的自然模板带到您的开发工作流程中—HTML能够在浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。Thymeleaf能够处理HTML,XML,JavaScript,CSS甚至纯文本。

Spring-boot-starter-web集成了Tomcat以及Spring MVC,会自动配置相关东西,Thymeleaf是用的比较广泛的模板引擎.

更新pom.xml

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
更新application.properties

#thymeleaf

spring.thymeleaf.cache=false

spring.thymeleaf.prefix=classpath:/templates/

spring.thymeleaf.check-template-location=true

spring.thymeleaf.suffix=.html

spring.thymeleaf.encoding=UTF-8

spring.thymeleaf.mode=HTML5

创建Controller

之所以新建Controller,而不是复用之前的IndexController,是因为IndexController使用的是 @RESTController 注解的方式。

  1. 使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面。若返回json等内容到页面,则需要加@ResponseBody注解

  2. @RestController注解,相当于@[email protected]两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

新建UserController:

package com.demo.controller;

import com.demo.pojo.UserPosition;

import com.demo.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import java.math.BigDecimal;

import java.util.List;

/**

  • Created by toutou on 2018/10/20.

*/

@Controller

public class UserController {

@Autowired

UserService userService;

@RequestMapping(value = "/mynearby")

public String myNearby(Model model, double lon, double lat)

{

double r = 6371;//地球半径千米

double dis = 2; //半径 单位:km

double dlng = 2Math.asin(Math.sin(dis/(2r))/Math.cos(lat*Math.PI/180));

dlng = dlng*180/Math.PI;//角度转为弧度

double dlat = dis/r;

dlat = dlat*180/Math.PI;

double minlat =lat-dlat;

double maxlat = lat+dlat;

double minlng = lon -dlng;

double maxlng = lon + dlng;

List<UserPosition> list = userService.getVicinity(BigDecimal.valueOf(minlng), BigDecimal.valueOf(maxlng), BigDecimal.valueOf(minlat), BigDecimal.valueOf(maxlat));

model.addAttribute("myinfo",list);

return "mynearby";

}

}

创建页面

/src/main/resources/templates/mynearby.html

<!DOCTYPE html>

<html xmlns="//www.w3.org/1999/xhtml" xmlns:th="//www.thymeleaf.org" >

<html lang="en">

<head>

<meta content="text/html;charset=UTF-8"/>

<meta name="viewport" content="width=device-width,initial-scale=1"/>

<link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

<link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet">

<title>附近的小区</title>

</head>

<body>

<br/>

<div class="panel panel-primary">

<div class="panel-heading">

<h3 class="panel-title">我的坐标</h3>

</div>

<div class="panel-body">

<span>116.31064,40.062658</span>

</div>

<br/>

<div th:if="${not #lists.isEmpty(myinfo)}">

<div class="panel panel-primary">

<div class="panel-heading">

<h3 class="panel-title">附近的小区</h3>

</div>

<div class="panel-body">

<ul class="list-group">

<li class="list-group-item" th:each="item : ${myinfo}">

<span th:text="${item.id}"></span>

<span th:text="${item.city}"></span>

<span th:text="${item.position}"></span>

<span th:text="${item.longitude}"></span>

<span th:text="${item.latitude}"></span>

<button class="btn">删除</button>

</li>

</ul>

</div>

</div>

</div>

</div>

<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>;

<script src="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>;

<script th:inline="javascript">

// var single = [[${singlePerson}]];

// console.log(single.name+"/"+single.age);

$(function(){

$(".btn").click(function(){

alert("删除功能完善中...");

});

});

</script>

</body>

</html>

xmlns:th="//www.thymeleaf.org"命名空间,将镜头转化为动态的视图,需要进行动态处理的元素使用“th:”前缀;两个link引入bootstrap框架,通过@{}引入web静态资源(括号里面是资源路径)访问model中的数据通过${}访问.

运行效果:

SpringBoot(七)整合themeleaf+bootstrap目录结构:

SpringBoot(七)整合themeleaf+bootstrap

转载自://blog.51cto.com/13842645/2313651

招聘 不方便扫码就复制添加关注:程序员招聘谷,微信号:jobs1024



大数据spark中ml与mllib 的区别你分清了吗?
大数据学习过程中一个重要的环节就是spark,但是在spark中有很多的知识点,很多人都傻傻分不清楚,其中,最易搞混的就是ml与mllib的区别。
spark自带的logistic_regression例子分析
spark自带的logistic_regression例子分析。
如何制定一份可实施的2018年大数据学习计划?
我们习惯了“间歇性踌躇满志、持续性混吃等死”,那么2018年快过了一半了,又该做点什么呢?其实,要想做出改变并非难事,你缺少的只是一个计划(去做)。学习大数据分析更是如此,因为大数据是一门综合性的学科,复杂且具有一定系统性,所以大数据的学习更加需要有一个明确的目标和计划,然后按部就班的执行。那么如何才能制定出一份可行性强的大数据学习计划呢?我们可以从以下几个方面去制定。如何制定一份可实施的2018
用eclipse执行spark的一个简单wordcount java语言 中的一些问题!
首先wordcount代码,其中uaa是存放hadoop工具类的package!packagecom.lxw.test;importjava.util.Arrays;importjava.util.Iterator;importorg.apache.spark.SparkConf;importorg.apache.spark.api.java.JavaPairRDD;import...
spark1.x升级到spark2.x以及1.x和2.x的版本兼容
1.spark1.x升级到spark2.x对于普通的spark来说,变动不大:举一个最简单的实例:spark1.xpublicstaticJavaRDD&amp;amp;lt;String&amp;amp;gt;workJob(JavaRDD&amp;amp;lt;String&amp;amp;gt;spark1Rdd){JavaPairRDD&amp;amp;lt;String,Integer&amp;amp;gt;t...
大数据Storm相比于Spark、Hadoop有哪些优势 摘录
一、可能很多初学大数据的伙伴不知道strom是什么,先给大家介绍一下strom:分布式实时计算系统,storm对于实时计算的意义类似于hadoop对于批处理的意义。storm的适用场景。流数据处理。Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。分布式rpc。由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。当然,其实我们的搜索引擎本身也是一个分布式rpc系统
centos+scala2.11.4+hadoop2.3+spark1.3.1环境搭建
一、Java安装1、安装包准备:首先到官网下载jdk,http:wwworaclecomtechnetworkjavajavasedownloadsjdk7-downloads-1880260html,我下载jdk-7u79-linux-x64targz,下载到主目录2、解压安装包通过终端
Apache Storm 与 Spark:对实时处理数据,如何选择
实时商务智能这一构想早已算不得什么新生事物(早在2006年维基百科中就出现了关于这一概念的页面)。然而尽管人们多年来一直在对此类方案进行探讨,我却发现很多企业实际上尚未就此规划出明确发展思路、甚至没能
Spark Streaming和Flume-NG对接实验
SparkStreaming是一个新的实时计算的利器,而且还在快速的发展。它将输入流切分成一个个的DStream转换为RDD,从而可以使用Spark来处理。它直接支持多种数据源:Kafka,Flume,Twitter,ZeroMQ,TCPsoc
spark源码阅读(一) 启动代码阅读
spark启动代码阅读:spark使用一系列的shell脚本作为入口:其中bin目录下面是任务提交的脚本;sbin目录是master和worker启停相关的脚本。而所有脚本最后都是通过调用bin/spark-class来实现对java(scala)代码的调用。----------------------spark-class获取java参数分析---------------------------