用Springboot集成Thymeleaf,开发一个前后端不分离的Web项目,记录下每个步骤:(IDEA版

一、项目初始化;

1、打开idea,以次点击 File -- New -- Project...,打开创建项目的弹窗,具体如下图:

2、如下图,步骤1:选择 Springboot创建项目,步骤2选择JDK版本,步骤三,进行下一步配置:

3、填写项目的包名即GAV,以及jdk的版本号,填写的具体内容如下图:然后Next;

4、选择boot的版本,及一些初始化的pom依赖,如下图:我这里选择的是2.5.6;

5、填写项目的名称,及项目在本地的路径,点击Finish,开始创建项目;

6、新建的项目,本地并没有,提示不存在,是否新建,点击OK,完成项目的创建。

:如果通过idea创建的很慢,可以访问 https://start.spring.io/,(页面内容类似1.3),在这里将项目创建好并导出,然后导入到项目目录即可,效果是一样的;

7、新建的项目,内容是很干净的,其目录结构如下图:

8、 pom中引入web依赖,这个是核心依赖;如下图:这里没有指定版本,因为默认是和boot的版本一致的,都是2.5.6;

9、测试项目能不能正常的启动访问,不然后面做再多工作也是浪费,项目都跑步起来有什么用!

新建一个包:controller,包中新建一个类:TestController,这个类仅仅是测试用的;

目录结构如下图:

TestController的测试内容如下:

@RestController
@RequestMapping("/test")
public class TestController { @RequestMapping("/sayHello")
public String sayHello(){
return "Hello World !";
}
}

10、启动项目:启动信息如下:

11、打开浏览器,访问:localhost:8080/test/sayHello,结果如下图,即表示项目能正常的启动、访问。

12、项目的基本结构完善:具体如下图:专业的人做专业的事,特定的包放特定的类;

基本的结构已经完成,后续可以进行其他功能的增加、完善了。

二、集成Thymeleaf

1、pom中引入Thymeleaf依赖;

2、resources目录下新建文件夹:templates用来存放页面文件,并新建一个test.html测试页面,结构如下图:

3、我们要使用thymeleaf,需要在html文件中导入命名空间的约束,具体如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"> // Thymeleaf约束
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>

4、测试从后端读取信息并展示:

4.1、TestController中新建方式:sayHi(),具体代码如下:

@RequestMapping("/sayHi")
public String sayHi(Model model){ // Model是用来传值的
model.addAttribute("test","Hello Thymeleaf !"); // 展示的信息:Hello Thymeleaf !
return "test";    // 这里返回的是一个页面,类上的@RestController需要改为@Controller;
}

4.2、test.html中增加如下内容:注意获取后端返回值的方式

<p>下面这句话是从后端返回的:</p>
<div th:text="${test}">Hello World !</div>

4.3、启动项目,访问指定的方法:结果如下图:

出现以上结果,表明Springboot已成功集成了Thymeleaf。

三、整体项目的结构完善

前面完善了关于后端的一些目录结构,由于是前后端不分离的,所以关于前端的一些文件也需要结构化,以下是具体的目录结构划分。

1、前端页面的目录结构完善:具体如下图:注意层级结构

i18n:国际化文件目录;

mapper:mapper.xml文件目录;

static:

 app: 项目中自己写的相关静态文件

     css:存放自已写的css代码;

   js:存放自己写的js代码;

   image:存放自已用到的图片;

 vendor:存放引入的第三方插件依赖;

xxxTemplate:存放一些自己的模板,如word、excel等(如果有的话);

templates: 具体的页面代码

2、导入一些会用到的第三方依赖:

直接将一些会用到的插件依赖直接导入项目(vendor目录下),如jQuery、bootstrap等,其他不常用的,用到的时候再加;

至此,整个项目的前后结构已搭建完毕,后续进行功能的开发。

四、登录

1、前端页面:

  • 在blog目录下新建html页面:login.html,从其他项目或者网站搜一个登录的页面copy过来,做下修改,注意不要忘了加thymeleaf约束;
  • 登录时的ajax请求,注意url是否需要加 /,如果加了报404,那就不加再试试;
  • 引入静态文件(js|css|image)时,目录路径不用加static这一层。
  • 登录验证成功与否的判断条件,是根据后端返回的字段及值来确定的,从而确定后续要访问的页面路径;

2、后端接口:

  • 定义登录页面的访问路径及返回的页面;
  • 定义登录方法及返回验证结果;

五、首页-Dashboard

六、

下班了,明天继续。。。

SpringBoot_Thymeleaf项目开发的更多相关文章

  1. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  2. HTML+CSS项目开发总结

    好几天没更新博客了,刚实战完一个HTML+CSS的简单项目.经过几天的摸索,发现收益良多.之前只是单纯得写demo,看知识点,没有亲自实战项目.但实战过后才会了解,如何才能更好地提升自己的技术.针对这 ...

  3. 简历生成平台项目开发-STEP2问卷调查结果统计分析

    根据之前设计的调查问卷,截止目前为止,一共收到64份问卷结果.一共16题,分别从基本信息.是否对简历制作有需要.对产品期望的特点和建议采纳四个方面设计问题.下面逐题分析问卷结果: 1.您的性别 可以看 ...

  4. 如何使用Worktile进行敏捷项目开发管理

    Worktile在任务管理上采用了看板视图,非常适合进行敏捷项目开发管理.事实上,在开发Worktile的过程中,我们也是自产自销,使用Worktile管理Worktile本身的开发过程,在本文中跟大 ...

  5. Java进击C#——项目开发环境

    本章简言 上一章我们了解一下开发环境,知道了什么去新建一个项目工程.却并没有去项目工程进行介绍.可是之后我们会常常跟项目工程打交道.所以这章笔者就对项程工程的常用的一些功能进行讲解.当然说全面那是不可 ...

  6. 关于举办 2015年 Autodesk 助力云应用项目开发活动通知

    各位尊敬的Autodesk 合作伙伴,大家好! 相信您在过去的一年里应该对Autodesk最新的云服务技术有所了解,您是不是曾经闪现过一些很好的想法,却由于不确定是否真实可行,或担心没有技术支持来帮助 ...

  7. .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

    Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...

  8. [转]基于Starling移动项目开发准备工作

    最近自己趁业余时间做的flash小游戏已经开发得差不多了,准备再完善下ui及数值后,投放到国外flash游戏站.期间也萌生想法,想把游戏拓展到手机平台.这两天尝试了下,除去要接入ane接口的工作,小游 ...

  9. 用户识别APP项目开发计划书

    用户识别APP项目开发计划书        项目介绍: 用户识别APP,通过在有限时间内引导用户A交互,提取用户的行为特征,然后将APP交给用户X(可能是A也可能是陌生人),在1分钟内引导X交互,判断 ...

  10. 企业项目开发--分布式缓存Redis

    第九章 企业项目开发--分布式缓存Redis(1) 注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis ...

随机推荐

  1. JZOJ 5432. 【NOIP2017提高A组集训10.28】三元组

    题目 有 \(X+Y+Z\) 个三元组 \((x[i],y[i],z[i])\),请你从每个三元组中挑数,并满足以下条件: 1.每个三元组中可以且仅可以选择一个数(即 \(x[i],y[i],z[i] ...

  2. 打印出来的数据{ob: observer}、vue 中 [__ob__: Observer]问题

    问题效果: 理想效果: 解决方案:JSON.parse(JSON.stringify( ob )) 首先我们要把这个数据获取原始数据 JSON.stringify([data])   变成字符串 然后 ...

  3. PostGIS之空间投影

    1. 概述 PostGIS 是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在 SQL 中运行空间查询 PostGIS官网:About PostGIS | PostGIS ...

  4. Python爬虫:原来微博上的视频下载链接在这啊

    最近看了一下网页版的微博,觉得那上面的视频不错,想获取它上面的下载链接,于是就写了这篇博文. 1. 几个视频播放平台的下载链接的实现 1. 西瓜视频 西瓜视频这个平台上面的视频下载链接一开始就存在于视 ...

  5. vue子传父 .indexOf('1')!=-1

    子传父 1.先在父级页面的子组件上加上自定义事件  <SearchSelector @attrinfo="propsinfo" /> 2.在子组件里面写方法传 //点击 ...

  6. Python安装第三库超时的解决方法

    Python安装第三库超时的解决方法 1. 在很多时候使用python的时候需要使用到某些第三方库,比较常规的方法是使用cmd命令使用在线安装的方法(前提是在安装好了python相应版本时候配置好了相 ...

  7. 右键无法新建word文件怎么办?

      电脑用久了,总会出现奇奇怪怪的问题.   我最近遇到一个问题:鼠标右键无法新建word文件.如何解决此问题呢?   刚开始,我忍了.解决方法为:把word图标固定到任务栏,就好了呗,需要用的时候, ...

  8. 2022-05-11内部群每日三题-清辉PMP

    1.一个低概率/高影响的技术风险发生了. 项目经理该怎么做? A. 提交变更请求来调整成本和进度基准 B. 进行风险审查,评估其对项目可交付成果的影响 C. 实施风险登记册中概述的减轻计划 D. 查询 ...

  9. vue父子组件传值的方式

    给子组件传值: this.$refs.child.xx(query); 调用父组件的方法:this.$parent.xx();

  10. Mac 如何用python下载Mac OS

    ​ Python脚本下载 开源地址:macadmin-scripts 打开终端 : git clone https://github.com/munki/macadmin-scripts 下载inst ...