今天就来开始带领大家零基础入门Java开发
写在前面
为什么学习Java
Java用途很广泛,如下图所示,Java可以做很多工作
JAVA语言发展史
2019年3月,JDK12版本发布。
2019年9月,JDK13版本发布。
2020年3月,JDK14版本发布。
2020年9月,JDK15版本发布。
2021年3月,JDK16版本发布
2021年9月14日, JDK17版本发布,此版本也将作为一个LTS版本,即长期使用版本。
在这么多版本里最重要的是5,8,11,17。当然现在市面上主流的使用版本是Java8,我们第3章会将jdk8的安装。
一,IntelliJ IDEA的下载与安装
工欲善其事必先利其器,我们学习Java开发,就要先找一款合适的开发工具,现在市面上主流的Java开发工具就是IntelliJ IDEA,后面简称idea,我们先教大家如何下载并安装idea
1-1,IntelliJ IDEA软件的下载
-
1,去官网下载
官网地址:https://www.jetbrains/idea (由于是国外网址,可能打开的比较慢,如果觉得慢,可以用第2种方法,直接百度下载即可)
进入官网以后点击Download即可
然后根据自己的系统安装即可,window,mac,linux都有
-
2,借助万能的百度了
1-2,软件下载好,我们就来安装了
不同电脑上安装步骤可能有些差异,下面步骤仅供参考(如果不一样,自己可以百度下安装教程,也可以跟着网上的安装教程进行安装)。
- 1,双击安装
- 2,点击next
- 3,选择安装目录
- 4,勾选
如果你是32位的电脑,就勾选32
- 5,安装
- 6,等待安装
- 7,点击finish
1-3, 安装完成,打开软件。
-
1,点击打开软件
如果找不到图标,就可以去常用软件找图标即可。
-
2,选择do not import settings,然后点击ok
-
3,同意协议,点击continue
-
4,点击Dont send
-
5,设置主题,直接跳过即可
二,创建简单的Java项目
2-1,创建第一个Java项目
我们这里以idea2022为例,创建一个新项目如下。
如果你是老一点的版本,创建项目如下
其实不管你是哪个版本,创建规则都是一样的,都要点New Project
然后就进入创建项目的配置流程了
我会在视频教程里具体的教会大家如何快速的配置这里的jdk
2-2,下载idea自带的jdk
在配置jdk的地方,可以直接点Download JDK
然后我们去下载最新的jdk18即可
然后耐心等待下载就行
当然了,如果你这里下载失败,或者下载的特别慢,那你可以先去看第3章的Jdk安装。
2-3,认识Java项目结构
我们这创建的是一个最简单的Java项目, 所以结构比较简单。
这里最重要的就是一个src,其他的都不重要,我视频里也有具体的每个目录的简介。
2-4,创建一个Java类
其实利用idea创建一个Java类很简单,只需要如下图所示。
然后取一个类名Demo,注意类名的首字母要大写。
创建好的一个空白的类如下
2-5,编写入口主方法main
我们Java类里要想运行,需要有一个main方法,如下图
我们所有的方法要想执行,都要写到main方法里调用,才可以执行
2-6,输出一段打印到控制台
我们用System.out来输出打印
可以看到代码里需要输出的结构都已经打印到控制台了。
三,JDK的安装
今天来教大家如何安装Java开发环境jdk,我们这里以jdk8为例。
3-1,jdk安装包的下载
目前有3种方式
-
1,Java官网下载(可能比较慢)
https://www.oracle/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
因为Java官网是国外的,有些地方的同学可能下载有点慢。 -
2,直接百度搜索jdk8安装包,如下图
缺点就是网上东西太多太乱,不一定能找到合适的。 -
3,石头哥在网盘里帮大家准备好了,对应的安装包
对应的mac电脑,window电脑的32位和64位的安装包都有。如果自己实在找不到jdk安装包,可以来找石头哥拿米来换。
3-2,以window64位安装为例
-
1,双击安装包
-
2,点击下一步
-
3,设置安装目录,保持默认即可,然后点击下一步。
这里的安装路径要记牢,后面会用的到。
-
4,然后等待安装
-
5,安装完成,点击确定
-
6,接着点击下一步
-
7,接着等待进度
-
8,安装完成
3-3,配置全局环境变量(选看)
其实我们直接在idea里学习Java了,所以配置全局环境变量就不那么重要了,这一节可以忽略,后面如果你需要用的到配置,再回来学习这一节即可。
- 1,这里点击搜索框,然后输入cmd打开命令提示符
- 2,命令行输入javac如果提示下面,就说明需要配置全局环境变量
- 3,拿到自己的jdk安装目录
- 4,打开控制面板
- 5,然后点击高级系统配置
- 6,点击高级,然后点击环境变量
- 7,新建JAVA_HOME,把我们上面第3步的jdk安装目录设置到下面
- 8,新建CLASSPATH,设置变量值,
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
注意前面的.表示当前目录。然后点击“确定”按钮。
- 9,新建PATH,设置变量值,%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
然后点击确定即可
验证是否配置成功
重新打开cmd命令行,输入javac,如果出现下面一大串提示就代表Java环境变量配置成功了。
四,Java基础语法
4-1,注释
在Java的编写过程中我们需要对一些程序进行注释,除了自己方便阅读,更为别人更好理解自己的程序,所以我们需要进行一些注释,可以是编程思路或者是程序的作用,总而言之就是方便自己他人更好的阅读。可以把注释理解为程序的说明书,如果拿你的代码给别人读,是不是有说明书了,别人才会更容易理解你的代码呢。
注释的作用
通过注释提高Java源程序代码的可读性;使得Java程序条理清晰,易于区分代码行与注释行。另外通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流。通俗的来讲注释主要就是为了方便别人阅读你的代码,或者方便日后自己快速回忆起来自己的代码
注释的分类
对于Java注释我们主要了解三种:
1, // 单行注释,注释一行
2, /* … / 多行注释,注释若干行
3, /**……/ 文档注释
4-2,关键字
关键字的定义
Java语言中有一些特殊的用途的词称为关键字。关键字对Java编译器有着特殊的意义。在程序应用时一定要慎重!!!Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。
可以把关键字理解为古代皇帝的名字,都是Java系统御用的名字,后期子民再起名字的时候就不能再使用这些御用的名字了。
这些关键字没有必要记,后面的学习中,使用的多了,就能知道了。
关键字的特点
- 关键字全部都是小写的
- 在idea编辑器里,关键字有特殊的不一样的颜色
如上图里的public class static void 这几个关键字都是蓝色
4-3,标识符
什么是标识符
Java语言中,对于变量,常量,函数,语句块的名字,我们统统称之为Java标识符。
通俗的来讲识符就是程序员在编写 Java 程序时,自定义的一些名字。就是我们给Java程序里的类,方法,变量等取名字。
如我们的第一个Java程序里的类名,方法名都是标识符。
标识符命名的规则
- 标识符由字母、下划线、美元符或数字组成
- 标识符不能以数字开头
- 不能是关键字
- 标识符严格区分大小
- 标识符长度无限制
- 可以用拼音,但是不建议用汉字
其实可以理解为标识符命名和我们中国人起名字一样,比如你起名叫张三是可以的,但是没有名字叫 张3 的吧,所以Java里标识符的命名也要遵循上面的规则。
常见的命名约定
我们一般给类命名的时候使用大驼峰命名法,给方法和变量命名时使用小驼峰命名法。
就好比我们中国人起名字。带薇的一般都是女孩名,如张薇。
带伟的都是男生名,如张伟。其实就是起名字的时候一些约定成俗的东西。
4-4,数据类型
什么是数据类型
Java程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。
数据类型的作用是指导JVM在运行程序的时候给该数据分配多大的内存空间
通俗的来讲就好比我们人可以分为不同的类别,男人女人。Java里的数据也是有自己不同的分类的。Java中的每一种数据都有自己明确的数据类型,不同的数据类型也分配的不同的内存空间,所以不同数据类型的数据大小也是不一样的。
数据类型的分类
从大的方面来讲,数据类型分为基本数据类型和引用数据类型,而基本数据类型和引用数据类型又可以具体的分为不同的类型。大家不要被这个吓到了,我们后面会具体的给大家讲解不同的类型。
我们先重点学习八种基本数据类型,引用类型在后面的章节里再慢慢学习。
计算机存储单元
我们要学习Java的数据类型之前要先简单的了解计算机的存储单元。
数据必须首先在计算机内被表示,然后才能被计算机处理。计算机表示数据的部件主要是存储设备;而存储数据的具体单位是存储单元。 我们这里只做了解就行。知道什么是位,什么是字节即可。
-
位(Bit):是计算机中最小的信息单位。一“位”只能表示0和1中的一个,即一个二进制位,或存储一个二进制数位的单位。
-
字节(Byte):是由相连8个位组成的信息存储单位,如下图
这样我们知道,在计算机中每八个二进制位组成了一个字节(Byte),计算机存储的最小单位就是字节,字节如下图所示
单位之间的换算如下:
八种基本数据类型
-
byte:
byte 数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是 -128(-2^7);
最大值是 127(2^7-1);
默认值是 0;
byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
例子:byte a = 100,byte b = -50。 -
short:
short 数据类型是 16 位、有符号的以二进制补码表示的整数
最小值是 -32768(-2^15);
最大值是 32767(2^15 - 1);
Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
默认值是 0;
例子:short s = 1000,short r = -20000。 -
int:
int 数据类型是32位、有符号的以二进制补码表示的整数;
最小值是 -2,147,483,648(-2^31);
最大值是 2,147,483,647(2^31 - 1);
一般地整型变量默认为 int 类型;
默认值是 0 ;
例子:int a = 100000, int b = -200000。 -
long:
long 数据类型是 64 位、有符号的以二进制补码表示的整数;
最小值是 -9,223,372,036,854,775,808(-2^63);
最大值是 9,223,372,036,854,775,807(2^63 -1);
这种类型主要使用在需要比较大整数的系统上;
默认值是 0L;
例子: long a = 100000L,long b = -200000L。
Java规定写long类型的数据时,要在值后面加一个L,"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。 -
float:
float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
float 在储存大型浮点数组的时候可节省内存空间;
最小值:1.4E-45
最大值:3.4028235E38
默认值是 0.0f;
浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。
Java规定写float类型的数据时,要在值后面加一个f -
double:
double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
浮点数的默认类型为 double 类型;
double类型同样不能表示精确的值,如货币;
最小值:4.9E-324
最大值:1.7976931348623157E308
默认值是 0.0d;
例子:
double d1 = 7D ;
double d2 = 7.;
double d3 = 8.0;
double d4 = 8.D;
double d5 = 12.9867;
7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。 -
boolean:
boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子:boolean one = true。 -
char:
char 类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(十进制等效值为 0);
最大值是 \uffff(即为 65535);
char 数据类型可以储存任何字符;
例子:char letter = ‘A’;。
可以汇总为下面两个图
这里注意下,我们定义整数时默认时int类型的,定义小数时默认时double类型的,知道这些后,你也就明白为什么long类型的要加L,float类型的要加f了。
数据范围从小到大的顺序,在后面讲数据类型转换的时候会用到这个顺序图。先大致有个了解即可。
4-5,变量
变量是什么
Java变量的定义:在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。
简单的说,我们可以把变量看作是个盒子,可以将钥匙、手机、饮料等物品存放在这个盒子中,也可以在需要的时候换成我们想存放的新物品。本质上来说,变量就是我们内存里的一小块区域。
如果我们把变量比作是酒店的房间,要存储的数据就好比要住宿的客人,我们可以根据客人的要求安排其入住“标准间”或者是“总统套房”,并且可以根据房间名字快速查找到入住客人的信息。同理,在 Java 程序中,我们也可以根据所需要保存的数据的格式,将其保存在指定类型的变量空间中,并且通过变量名快速定位!
通俗的讲就是可以变化的量,就好比我们的房间可以住不同的人,我们的变量可以赋不同的值。和后面要讲的常量真好对应,常量就是不可以变化的量
变量的定义
在 Java 中,我们通过三个元素描述变量:变量类型、变量名以及变量值
变量类型 变量名 = 初始化的值;
如 int a=10
这里的int就是数据类型, a就是变量名 10就是值。
所以我们前面一节讲的数据类型,主要是供变量来使用的。
变量使用的注意事项
- 变量名不能重复
- 变量没有赋值,不能调用
- 变量声明是一条完整的语句,因此要以分号结尾
- 变量赋值时long类型的要加L,float类型的要加f
- 变量名必须是合法的标识符
还记得我们讲标识符命名约定的时候讲的小驼峰命名法吗,就是针对变量名的。
4-6,常量
什么是常量
常量就是在程序中固定不变的值,是不能改变的数据
常量在程序运行时是不能被修改的。
在 Java 中使用 final 关键字来修饰常量,声明方式和变量类似:
final double PI = 3.1415927;
虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量
4-7,类型转换
类型转换的分类
- 自动类型转换
- 强制类型转换
第3节~手把手教你开发自己的第一个java项目(基于springboot2.2.2)
上一节带领大家成功安装的java开发工具IntelliJ IDEA,这一节就来教大家如何创建自己的第一个java项目。
所用技术
- jdk8(java8)
- springboot2.2.2
同样本节课程会配套一个视频讲解。我们每节图文教程后面都会配套一个视频讲解,方便大家更直观的学习。
话不多说,我们就来教大家如何快速创建我们的第一个java项目。
一,打开idea开发者工具
我们工具第一次打开,可能会等待几分钟。
二,点击新建项目
就是点击 我们上图箭头所指的 Create New Project
三,配置信息(跟着下面图片一步一步来就行)
到这里我们项目就创建完成了
四,认识项目结构
我们开发java项目的时候,只需要关心src目录和pom.xml文件即可,别的都可以先不用管。
五,创建自己的第一个java文件
名字这里你可以随便取,但是有两点要求
- 必须是英文或者拼音
- 第一个字母要大写
六,编写java代码
代码如下
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by qcl on 2019-06-05
* desc:
*/
@RestController
public class Hello {
@GetMapping("/hello")
public String hello() {
return "欢迎访问我的网站";
}
}
到这里我们的第一个java项目就成功创建了,接下来我们运行项目看下效果
七,运行项目
这里如果出现 Started DemoApplication in 3.426 seconds (JVM running for 4.769)
就代表项目成功运行起来了。
八,访问项目
我们这里在浏览器里输入下面网址
到这里我们就完整的实现了自己的第一个可以访问的java项目。
如果觉得图文不太好理解,请查看本专栏下一节。老师下一节会用录制视频来讲解本节课程。
本节课是《手把手带你零基础入门java开发》系列课程的一节,如果你想快速入门java开发,想开发一款属于自己的java项目,想学习springboot,想了解小程序,想了解全栈开发,想开发自己的网站,可以跟着石头哥来零基础入门。
第4节~数据库Mysql8的安装
上一节给大家讲了mysql5.7的安装,有好多同学反应,在使用5.7安装包时,最终系统却安装成了mysql8.0。这是因为现在官方也提倡我们用最新版本的,所以今天我们就再来教下大家8.0的安装。在安装8.0之前,建议大家先把之前安装的5.7卸载了。
一,安装包的下载
- 1,官网下载
https://dev.mysql/downloads/mysql/
下载这个187M的即可
点击 No thanks
如果觉得官网下载有点慢,可以去我网盘里下载 - 2,网盘下载,安装包我已经给大家放到网盘
有买我点餐系统或者Java基础入门课程的同学,都可以获取到这个网盘链接。 - 3,当然你也可以去百度下 mysql8安装包,去下载
注意:这里只要是8.0开头的就可以了,不管是8.0.11,8.0.18,8.0.19都可以的。
二,安装
我这里以mysql8.0.11为例,如果你电脑上有安装过mysql,记得卸载干净。
- 1,双击安装
- 2,勾选协议,然后点击next
- 3,保持默认,直接点击next
- 4,点击next,然后点击yes
- 5,点击Execute
等待所有的安装成功
- 6,全部安装通过后,点击next
继续点击next
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XD0m26w9-1655949132461)(https://upload-images.jianshu.io/upload_images/6273713-bcb5c0ddf756fa8a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)] - 7,保持默认,点击next
- 8,保持默认端口号
- 9.保持默认,点击next
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0DeUJRit-1655949132463)(https://upload-images.jianshu.io/upload_images/6273713-b092253324671272.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)] - 10,设置密码,学习用的,尽量简单,设置好以后要牢牢记住,后面还会用到。
- 11,保持默认,点击next
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wm69yAAN-1655949132464)(https://upload-images.jianshu.io/upload_images/6273713-09c172da55ab3b1e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- 12,点击Execute,等待校验
校验通过,点击Finish
- 13,点击next
- 14,点击Finish
点击next
- 15,验证密码,默认的用户名是root
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iQ7Jgnq5-1655949132468)(https://upload-images.jianshu.io/upload_images/6273713-f07137efc8195563.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
验证通过,点击next
- 16,点击Execute
成功后点击Finish
- 17,点击next
- 18,点击Finish
到这里就安装成功了,步骤有点多,可能不同电脑上会有出入,但是大体都是一样的。
三,打开mysql并进入
两种方式,建议用第一种方式即可。如果第一种不行,再用第二种。
- 1,mysql自带客户端。
输入密码,成功进入
- 2,用cmd命令行
但是这里提示mysql不是内部或外部命令,所以我们接下来要配置mysql全局环境变量。
四,配置全局环境变量
- 1,进入高级设置
- 2,设置MYSQL_HOME
把你mysql的安装目录,如我的是下面这个
C:\Program Files\MySQL\MySQL Server 8.0\bin
- 3,设置PATH
在PATH里添加 %MYSQL_HOME%
如果PATH 里已有内容,就把%MYSQL_HOME%追加进去
如果PATH里没有内容,就新建添加,如下图
- 4,打开cmd命令行输入mysql -V
如果能出现版本号,就代表环境变量配置完成。
五,登陆mysql
mysql -uroot -p123456
这里的root是mysql的用户名,123456是密码
第5节~IntelliJ IDEA连接Mysql8数据库,并实现可视化操作
上一节,我们讲了mysql5.7可视化操作,今天再来讲下mysql8的可视化操作,后面我们的课程,都用mysql8来讲,所以这一节很重要,一定要跟着老师一步步配置。
一,新建一个Java项目
- 1,新建项目
如果你是第一次打开的话,应该是这样的
- 2,创建springboot项目
二,idea链接mysql
-
1,如下图所示,点击最右侧的DataBase,然后点击Data Source
然后选择mysql
-
2,配置数据库
如果出现下面错误时区错误,MySQL默认的时区是UTC时区,比北京时间晚8个小时。所以要修改mysql的时区。
解决:
找到mysql安装目录并进入bin文件夹,我的是安装在c盘
然后输入cmd,回车
输入:mysql -uroot -p123456进入mysql命令模式
然后输入
set global time_zone = ‘+8:00’;
再次连接成功
配置完后,点击下test,如果出现绿色对勾,即代表链接成功。然后点击ok
三,可视化操作数据库
- 1,上面第二步链接成功后,我们这里就可以添加数据库,添加数据表了。
我们执行下面sql语句,创建一个test数据库
create database test default character set utf8 collate utf8_general_ci;
- 2,创建一个user表
同样的执行下面sql语句,来创建一个user表
use test;
create table user
(
id int null,
name varchar(20) null
);
创建好以后的user表,如下图。
- 3,添加数据
- 4,查询数据
到这里我们就可以成功的借助idea来可视化的操作mysql8了。后面我会讲解更多Java和小程序的知识,敬请关注。
第6节~springboot+freemarker+bootstrap快速实现管理后台
我们做后台开发时,难免会要开发管理后台。如下面这样的管理后台,我们完全可以不用h5同学,自己快速开发管理web后台的。
所以接下来我会用几节来教大家如何快速实现管理后台。
本节知识点
- springboot2.2.2
- freemarker
- bootstrap4
- maven
老规矩,先看效果图
所以本节就来教大家如何快速实现管理后台表格数据的展示与操作。
这节课是建立在你已经会创建springboot项目的基础上,如果你还不知道怎么创建一个springboot项目请异步到这里:https://edu.csdn/course/detail/23443
好了,下面就来讲解,如何使用springboot+freemarker+bootstrap快速实现管理后台表格数据的展示。
一,首先要在你的pom.xml 加入freemarker仓库
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
二,在项目的templates目录下创建demo目录,然后创建list.ftl文件
我们freemarker使用的是 .ftl结尾的模版文件
list.ftl完整代码如下
<html>
<head>
<meta charset="utf-8">
<title>freemarker+bootstrap学习</title>
<#--本地引入-->
<#--<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">-->
<!-- 新 Bootstrap4 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.staticfile/twitter-bootstrap/4.1.0/css/bootstrap
.min.css">
</head>
<body>
<div class="container-fluid">
<div class="table-responsive">
<table id="dataGrid" class="table table-striped table-bordered">
<thead>
<tr>
<th width="50"><input type="checkbox" class="checkall"></th>
<th>标题</th>
<th>姓名</th>
<th>微信</th>
<th width="50">操作</th>
</tr>
</thead>
<tbody>
<#list demoList as row>
<tr>
<td>
<input type="checkbox" name="id" value="${row.id}">
</td>
<td>${row.title}</td>
<td>${row.name}</td>
<td>${row.wechat}</td>
<td>
<button class="btn btn-xs btn-primary"
onclick="deleteRow(${row.id})">删除
</button>
</td>
</tr>
</#list>
</tbody>
</table>
</div>
</div>
<script type="text/javascript">
function deleteRow(rowId) {
console.log("点击了删除", rowId);
}
</script>
</body>
</html>
这里需要讲下,我们引入bootstrap有两种方式,大家学习阶段推荐用第一种方式。
- 1,直接引入网上资源(推荐)
<link rel="stylesheet" href="https://cdn.staticfile/twitter-bootstrap/4.1.0/css/bootstrap
.min.css">
- 2,把bootstrap下载到本地,然后再引入本地
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
三,我们页面写好了,接下来就是网页面里传数据了。
这里我们定义一个DemoController如下
package com.qcl.demo.controller;
import com.qcl.demo.bean.Demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created by qcl on 2019-04-29
* 微信:2501902696
* desc:freemarker学习
*/
@RestController
public class DemoController {
@GetMapping("/demoList")
public ModelAndView list(Map<String, Object> map) {
List<Demo> demoList = new ArrayList<>(4);
demoList.add(new Demo(1, "标题1", "编程小石头1", "2501902696"));
demoList.add(new Demo(2, "标题2", "编程小石头2", "2501902696"));
demoList.add(new Demo(3, "标题3", "编程小石头3", "2501902696"));
demoList.add(new Demo(4, "标题4", "编程小石头4", "2501902696"));
map.put("demoList", demoList);
return new ModelAndView("demo/list", map);
}
}
这里我们先模拟4条数据,然后把数据传到我们的list.ftl页面,正常数据都应该是从数据库里取的,后面会做讲解。
这就是用freemarker模版的好处。可以直接在页面里使用我们的java数据。
<table id="dataGrid" class="table table-striped table-bordered">
<thead>
<tr>
<th width="50"><input type="checkbox" class="checkall"></th>
<th>标题</th>
<th>姓名</th>
<th>微信</th>
<th width="50">操作</th>
</tr>
</thead>
<tbody>
<#list demoList as row>
<tr>
<td>
<input type="checkbox" name="id" value="${row.id}">
</td>
<td>${row.title}</td>
<td>${row.name}</td>
<td>${row.wechat}</td>
<td>
<button class="btn btn-xs btn-primary"
onclick="deleteRow(${row.id})">删除
</button>
</td>
</tr>
</#list>
</tbody>
</table>
这样我们运行项目,然后进入web后台,就可以看到了,我们这里点击删除时,是可以拿到每行的id的,这样我们就可以根据id删除具体数据,然后再重新刷新下页面就可以了。后面会给大家讲解通过web后台操作数据库的。
到这里我们就实现了管理后台表格数据的展示与操作了,是不是很简单啊。
我会把10小时实战入门java系列课程录制成视频,如果你看文章不能很好的理解,可以去看下视频:https://edu.csdn/course/detail/23443
有任何关于编程的问题都可以加我微信2501902696(备注编程开发)
编程小石头,码农一枚,非著名全栈开发人员。分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑。
第7节~springboot+freemarker+bootstrap快速实现分页功能
本节是建立在上节的基础上,上一节给大家讲了管理后台表格如何展示数据,但是当我们的数据比较多的时候我们就需要做分页处理了。这一节给大家讲解如何实现表格数据的分页显示。
准备工作
- 1,项目要引入freemarker和bootstrap,如果不知道怎么引入的,请查看
《10小时入门java开发03 springboot+freemarker+bootstrap快速实现管理后台》
还是老规矩,看效果图
可以看出我们实现了如下功能
- 1,表格数据的展示
- 2,分页效果的实现
- 3,上一页和下一页的实现
- 4,当前选中页码加重颜色
下面来看实现步骤
一,定义表格和分页组件
简单说说代码
- head里面是引入bootstrap的样式库
- table定义表格来展示数据
- ul里定义分页
代码如下:
<html>
<head>
<meta charset="utf-8">
<title>freemarker+bootstrap学习</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- 新 Bootstrap4 核心 CSS 文件 -->
<link rel="stylesheet"
href="https://cdn.staticfile/twitter-bootstrap/4.1.0/css/bootstrap.min.css">
</head>
<body>
<div class="container-fluid">
<div class="row clearfix">
<div class="col-md-12 column">
<table class="table table-bordered table-condensed table-striped">
<thead>
<tr>
<th>id</th>
<th>姓名</th>
<th>微信</th>
<th colspan="2">操作</th>
</tr>
</thead>
<tbody>
<#list productInfoPage as productInfo>
<tr>
<td>${productInfo.id}</td>
<td>${productInfo.name}</td>
<td>${productInfo.wechat}</td>
<td>
<#if productInfo.id%2 == 0>
<a href="#">下架</a>
<#else>
<a href="">上架</a>
</#if>
</td>
</tr>
</#list>
</tbody>
</table>
</div>
<#--分页-->
<div class="col-md-12 column">
<ul class="pagination ">
<#if currentPage lte 1>
<li class="disabled "><a class="page-link" href="#">上一页</a></li>
<#else>
<li>
<a class="page-link" href="/pageList?page=${currentPage -
1}&size=${size}">上一页</a>
</li>
</#if>
<#list 1..totalPage as index>
<#if currentPage == index>
<li class="page-item active "><a class="page-link" href="#">${index}</a>
</li>
<#else>
<li>
<a class="page-link" href="/pageList?page=${index}&size=${size}">
${index}</a>
</li>
</#if>
</#list>
<#if currentPage gte totalPage>
<li class="disabled "><a class="page-link" href="#">下一页</a></li>
<#else>
<li>
<a class="page-link" href="/pageList?page=${currentPage + 1}&size=${size}">下一页</a>
</li>
</#if>
</ul>
</div>
</div>
</div>
</body>
</html>
二,定义好页面后,我们就来获取数据
同样这里的数据我们先用模拟数据,后面会用数据库里的数据。
看下面代码可以看出来,我们模拟了6条数据,然后每页显示2条数据。
package com.qcl.demo.controller;
import com.qcl.demo.bean.Demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created by qcl on 2019-04-29
* 微信:2501902696
* desc:freemarker学习
*/
@RestController
public class DemoController {
/*
* 分页效果的实现
* */
@GetMapping("/pageList")
public ModelAndView list(@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "size", defaultValue = "2") Integer size,
Map<String, Object> map) {
List<Demo> demoList = new ArrayList<>(4);
demoList.add(new Demo(1, "标题1", "编程小石头1", "2501902696"));
demoList.add(new Demo(2, "标题2", "编程小石头2", "2501902696"));
demoList.add(new Demo(3, "标题3", "编程小石头3", "2501902696"));
demoList.add(new Demo(4, "标题4", "编程小石头4", "2501902696"));
demoList.add(new Demo(5, "标题5", "编程小石头4", "2501902696"));
demoList.add(new Demo(6, "标题6", "编程小石头4", "2501902696"));
demoList.add(new Demo(7, "标题7", "编程小石头7", "2501902696"));
int start = (page - 1) * 2;
int end = start + size;
List<Demo> subList = demoList.subList(start, end);
int totalPage = (int) Math.ceil(demoList.size() / size);
map.put("productInfoPage", subList);
map.put("totalPage", totalPage);
map.put("currentPage", page);
map.put("size", size);
return new ModelAndView("demo/list", map);
}
}
三,启动springboot查看效果。
注意每一页地址栏的url
可以看出,我们第一次访问时,默认显示第一页,url里没有page和size字段。
访问第2页和第3页时,url里就有了page和size。page是显示那一页,size是每页显示多少条数据。
到这里我们就实现的管理后台的分页效果。
我会把10小时实战入门java系列课程录制成视频,如果你看文章不能很好的理解,可以去看下视频:https://edu.csdn/course/detail/23443
有任何关于编程的问题都可以加我微信2501902696(备注编程开发)
编程小石头,码农一枚,非著名全栈开发人员。分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑。
更多推荐
2022年最新最全的Java零基础入门,零基础入门springboot,MySQL的学习
发布评论