前言

1.什么是JavaWeb?

Web:全球广域网,也成为万维网(www),能通过浏览器访问的网站。

JavaWeb:用Java开发网站的技术栈。

2.本教程的基础框架

网页端:展现数据

HTML:制作页面

CSS:美化页面

JavaScript:产生丰富的动态效果

Ajax+Vue+ElementUI:前端框架技术

数据库:存储和管理数据

MySQL:关系型数据库

JDBC:Java语言操作数据库的api

Maven:项目管理框架

MyBatis:简化操作JDBC的框架

JavaWeb程序:逻辑处理

Tomcat+HTTP+Servlet:

Request+Response:

JSP:

Cookies+Session:

Filter+Listener:

一.数据库

1.1数据库相关概念

数据库:

存储数据的仓库,数据是有组织地进行存储。

DataBase,简称为DB,下一级是数据表,表中存的是数据。

数据库管理系统:

管理数据库的大型软件。

DataBase Management System,DBMS。

SQL结构化查询语言:

操作关系型数据库的编程语言。

定义操作所有关系型数据库的统一标准。

1.2安装MySQL

建议安装mysql5.5等稳定版,不要安装8.0。并且配置环境变量等,这些有专门的教程,在此就不再赘述。

1.3启动与关闭MySQL服务

打开cmd,键入net start mysql启动数据库,mysql -u用户名 -p密码 -h要访问的ip地址 -P端口,例如:mysql -uroot -p1234 -h127.0.0.1 -P3306

键入net stop mysql即停止mysql服务,exit或quit退出mysql

1.4mysql数据模型

关系型数据库

关系型数据库的建立在关系模型基础上的数据库,简单来说,关系型数据库是由多张能互相连接的二维表组成的数据库。

优点:1.都是表结构,格式一致,易于维护;2.使用通用的SQL语言操作,使用方便,可用于复杂查询;3.数据存储在磁盘中,安全。

语句分类:DDL(操作数据库、表等);DML(对表中数据进行增删改);DQL(对表中数据进行查询);DCL(对数据库进行权限控制)

1.4常用数据库语句

1.4.1DDL-操作数据库

Show DataBases;-- 查看数据库
create database if not exists db1;-- 若不存在db1数据库就创建它
drop database if exists db1;-- 若db1数据库存在就删除它
use db1;-- 启用数据库db1
SELECT DataBase()-- 查看当前在用的数据库

1.4.2DDL-查询表&创建表

use mysql;-- 启用数据库mysql
show tables;-- 查询当前数据库中的所有表
desc func;-- 查询表func
create table tb_user(id int,username varchar(20),password varchar(32));-- 创建表tb_user,包含字段id,username,password,其中id是int类型,username是字符串类型,且其长度不能超过20位

数据类型:

数值型

字符串型

其中的char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和

字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char是以空间换时间,其性能会更高些。

日期时间型

案例:设计一张学生表,字段如下,请注重数据类型、长度的合理性等

  1. 编号

  1. 姓名,姓名最长不要超过10个汉字

  1. 性别,因为取值只有两种可能,因此最多一个汉字

  1. 生日,取值为年月日

  1. 入学成绩,小数点后保留两位

  1. 邮件地址,最大长度不超过64

  1. 家庭联系电话,不一定是手机号码,可能出现-等字符

  1. 学生状态(用数字表示,正常,休学,毕业等)

create table student(id int,name varchar(10),gender char(1),birthday date,score double(5,2),email varchar(64),tel varchar(15),states tinyint
);

1.4.3DDL-操作表

修改表

ALTER TABLE 表名 RENAME TO 新的表名;-- 修改表名
ALTER TABLE 表名 ADD 列名 数据类型;-- 添加一列
ALTER TABLE 表名 MODIFY 列名 新数据类型;-- 修改数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;-- 修改列名和数据类型
ALTER TABLE 表名 DROP 列名;-- 删除列字段

请将student表名改为stu,然后添加一列address varchar(50),然后修改address的数据类型,然后修改数据类型,继续修改列名和数据类型,最后删除列。

alter table student rename to stu;-- 修改表名
alter table stu add address varchar(50);-- 添加字段address varchr类型,限制50
alter table stu modify address char(50);-- 修改address数据类型为char(50)
alter table stu change address addr varchar(50);-- 修改列名为address,修改数据类型为varchar(50)
alter table drop addr;-- 删除字段addr

1.4.4DML-增删改表内数据

添加数据

INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);-- 给指定的列添加数据
INSERT INTO 表名 VALUES(值1,值2,...);-- 给全部列添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);-- 给指定列批量添加数据
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);-- 批量添加数据

修改数据

UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];-- 修改表数据,若不加where,会对指定列的所有数据进行修改
-- 例如将张三的id改为3,性别改为女
UPDATE stu SET id = 3,gender = '女' WHERE name = '张三';

删除数据

DELETE FROM 表名 [WHERE 条件];-- 删除WHERE指定的数据
DELETE FROM 表名;-- 会直接删完表中所有数据,但是会保留表

1.4.5DQL-数据查询

基础查询

SELECT 字段列表 -- 尽量不要用*,因为*不好分辨是哪些字段
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段
HAVING 分组后条件
ORDER BY 排序字段
LIMIT 分页限定;

去除重复记录

SELECT DISTINCT address from stu;-- 查询字段address,但是要去重

起别名

SELECT address AS '地址' from stu;-- 从stu表中查取address并起别名叫'地址'

条件查询

SELECT 列名 FROM 表名 WHERE 条件字句;

条件字句有如下几种:

模糊查询

/*
LIKE关键字可以匹配通配符:_匹配单个字符,%匹配多个字符
*/
-- 查询姓'马'的学员信息
SELECT * FROM stu WHERE `name` LIKE '马%';
-- 查询第二个字是'花'的学员信息
SELECT * FROM stu WHERE `name` LIKE '_花%';
-- 查询名字中包含'德'的学员信息
SELECT * FROM stu WHERE `name` LIKE '%德%';

排序查询

排序方式:ASC(默认)升序排列,DESC降序排列

-- 如果有多个排序条件,当前面的条件值一样时,才会根据第二条件进行排序
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段2 [排序方式2],...;-- 查询学生信息,按年龄升序排列
SELECT * FROM stu ORDER BY age;
-- 查询学生信息,按数学成绩降序排列
SELECT * FROM stu ORDER BY math DESC;
-- 查询学生信息,按数学成绩降序排列,如果数学成绩一样,再按英语成绩升序排列
SELECT * FROM stu ORDER BY math DESC,english;

聚合函数:将一列数据作为整体,进行纵向计算

常见聚合函数:

聚合函数写法:

SELECT 聚合函数(列名) FROM 表;-- 注意null值不参与聚合计算
-- 1.统计班级一共有多少学生
SELECT COUNT(1) FROM stu;
-- 2.查询数学最高分
SELECT MAX(math) FROM stu;
-- 3.查询数学总分
SELECT SUM(math) FROM stu;
-- 4.查询数学均分
SELECT AVG(math) FROM stu;

分组查询

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
-- 查询男同学和女同学各自的数学均分
SELECT sex,AVG(math) FROM stu GROUP BY sex;
-- 查询男同学和女同学各自的数学均分,以及各自人数
SELECT sex,AVG(math),COUNT(1) FROM stu GROUP BY sex;
-- 查询男生和女生各自的数学均分,以及各自人数,要求:分数低于70分的不参与分组
SELECT sex,AVG(math),COUNT(1) FROM stu WHERE math >= 70 GROUP BY sex;
-- 查询男同学和女同学各自的数学均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2
SELECT sex,AVG(math),COUNT(1) FROM stu WHERE math >= 70 GROUP BY sex HAVING COUNT(1) > 2;

注意:执行顺序上,WHERE>聚合函数>HAVING,所以HAVING可以在分组后,过滤聚合函数的结果,但是WHERE不可以。

分页查询

如下图所示,大家在很多网站都见过类似的效果,如京东、百度、淘宝等。分页查询是将数据一页一页的展示给用户看,用 户也可以通过点击查看下一页的数据。

其具体语法如下:

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;-- 上述语句中的起始索引是从0开始
-- 从0开始查询,查询3条数据
SELECT * FROM stu LIMIT 0,3;
-- 每页显示3条数据,查询第一页数据
SELECT * FROM stu LIMIT 0,3;
-- 每页显示3条数据,查询第二页数据
SELECT * FROM stu LIMIT 3,3;
-- 每页显示3条数据,查询第三页数据
SELECT * FROM stu LIMIT 6,3;

Java三部曲(二)JavaWeb相关推荐

  1. 【代码审计-JAVA】基于javaweb框架开发的

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  2. Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目[Java通用框架源码及开发视频教程]

    Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目 功能简介: A.代码生成器(开发利器) 生成Java各层次的类和JSP等文件,提高开发效率 B.阿里巴巴 ...

  3. [Java面试三]JavaWeb基础知识总结.

    [Java面试三]JavaWeb基础知识总结. 1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Int ...

  4. java语言二维数组转置_java实现二维数组转置的方法示例

    本文实例讲述了java实现二维数组转置的方法.分享给大家供大家参考,具体如下: 这里在文件中创建Test2.Exchange.Out三个类 在Exchange类中编写exchange()方法,在方法中 ...

  5. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  6. java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园

    最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...

  7. Java实现 二叉搜索树算法(BST)

    一.树 & 二叉树 树是由节点和边构成,储存元素的集合.节点分根节点.父节点和子节点的概念. 如图:树深=4; 5是根节点:同样8与3的关系是父子节点关系. 二叉树binary tree,则加 ...

  8. java类二次加载_深入理解java之类加载器

    一.类与类加载器 类加载器:实现加载阶段的第一步,通过一个类的全限定名来将这个类的二进制字节流加载进jvm. 类与类加载器:任意一个类唯一性都是由它本身和加载它的类加载器确定,两个类是否相等在它们是由 ...

  9. 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc

    计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...

  10. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

最新文章

  1. python怎么用excel-python怎么连接excel
  2. ASP.NET Core MVC/WebAPi如何构建路由?
  3. CCNA--点对点协议(PPP)
  4. 微软小冰评分接口_微软小冰测颜值准不准?郑爽才得6.3分,较真你就输了
  5. 面向对象的一些基础概念
  6. php 图片服务器搭建,php图像裁剪服务器搭建
  7. 西门子v90伺服说明书_西门子V90伺服驱动器的的EPOS控制模式
  8. 牛客多校第五场 A digits 2 签到
  9. python函数递归求和详解_Python递归函数详细分析
  10. 【spring】spring动态代理和Spring_AOP
  11. gtk窗口和标签控件范例代码
  12. 正余弦变换、和差、倍角公式
  13. 网络工程师成长日记076-如何成为网络工程师中的高手
  14. 远程桌面提示“用户帐户限制(例如,时间限制)会阻止你登录。请与系统管理员或技术支持联系以获取帮助。”
  15. 详细理解JS的三座大山
  16. 运放电路中何时加入偏置电流补偿电阻-运算放大器
  17. win2012服务器系统要求,Windows server2012公开报价多少?安装系统有什么要求?
  18. 163企业邮箱注册申请后怎么使用
  19. Linux下的init知识介绍
  20. 摄像头基础知识(二):Bayer、Raw与ISP

热门文章

  1. c语言中表明空格的是什么代码,C语言代码中的空白符表示什么
  2. Consistent 与 Mirrored 视角
  3. padavan做副路由,主路由是原厂固件,如何使用adguardHome过滤广告
  4. 使用搜狗输入法实现对代码快捷注释
  5. iOS根据图片比例计算显示大小
  6. ios多人协作工具有哪些?支持多人同步在线使用的协同办公软件
  7. JS之如何判断数据类型
  8. 微博创作者网址及申请条件,微博创作者收益
  9. mysql 服务没有报告任何错误_mysql无法启动服务没有报告任何错误
  10. 可能你需要一个王者荣耀刷金币神器(解除网瘾)