session & jsp & mysql
大三下学期实训
【会话技术session&jsp&mysql-随堂笔记】
〇.今日重点:
- session: 服务器端会话技术
- session是什么
- session如何使用
- session的作用范围
- jsp: 动态页面
- 了解即可
-
mysql:数据库
数据库的安装
数据库集成到idea
数据库的crud
一.request&response综合案例关注点:
客户端添加数据到服务器:
服务器响应数据到客户端(浏览器):
二.session:服务器端会话技术
1.session是什么:
==本质也是采用客户端会话管理技术。 (session必须依赖于cookie )==
只不过在客户端保存的是一个特殊标识,而共享的数据保存到了服务器端的内存对象中。 (JSESSIONID) 每次请求时,会将特殊标识带到服务器端,根据这个标识来找到对应的内存空间,从而实现数据共享! 是 Servlet 规范中四大域对象之一的会话域对象。
**作用:**可以实现数据共享
注意: 从大到小的顺序: servletContext > session > request
当前服务器有100个用户, 每个用户访问100次, 会分别产生多少个 servletContext 、 session 、request?
2.session的获取:(掌握)
|
|
3.常用方法:(掌握)
|
|
三.JSP(次要)
1.jsp的概念
JSP全称是Java Server Page,它和Servlet一样,也是sun公司推出的一套开发动态web资源的技术,称为JSP/Servlet规范。
JSP的本质其实就是一个Servlet。
与html的区别: 可以在页面上也后台java代码!
注意:(虽然能写,但是我们应当尽量不写; 能在后台处理的逻辑,不要在页面处理!)
2.jsp快速入门
3.jsp的本质:
jsp效率低下的原因: (所以大型项目基本不用jsp,一些小型的后台系统会使用)
效率对比:
4.jsp语法:
JSP语法完整示例代码
|
|
5.四大域对象对比:(理解域对象的名字和范围)
四.MVC模型的理解(重要)
把数据的封装、展示和业务处理,进行分工!
**Servlet:**擅长处理业务逻辑,不擅长输出显示界面。在web开发中多用于控制程序逻辑(流程)。所以我们称之为:控制器。
**JSP:**擅长显示界面,不擅长处理程序逻辑。在web开发中多用于展示动态界面。所以我们称之为:视图。
五、数据库的基本概念
1.为什么要学数据库?
- 之前我们如果想将一些数据实现永久化存储,可以怎么做呢?没错。使用IO流的技术将数据保存到本地文件中
- 但是接下来我有这样一个需求:将下面的user.txt文件中的王五年龄修改为35
|
|
- 我们要如何实现呢?
- 可以采用字符缓冲流,将每一行数据读取出来,封装为User对象。将多个User对象保存到集合中
- 然后遍历集合,将王五对象的年龄修改为35,再重新将集合中的对象信息写回到文件中
- 这一套操作太麻烦了,而现在我们有一种更加方便的方式来完成这个需求了,这种方式就是数据库!
2.什么是数据库?
- 用于存储和管理数据的仓库
- 英文单词为:DataBase,简称DB (工种: DBA 数据库管理员)
3.数据库的好处?
- 可以持久化存储数据
- 方便存储和管理数据
- 使用了统一的方式操作数据库 – SQL
二、MySQL数据库的介绍和安装
1.MySQL数据库介绍
- 小型的数据库
- 开源免费(6版本之前免费)
- 所属于Oracle公司
2.MySQL数据库安装
—查看安装资料
1.在windows安装mysql服务器;
2.在windows安装mysql连接工具;(图形化界面)
三、SQL语句
1.数据库、数据表、数据的关系介绍
- 数据库
- 用于存储和管理数据的仓库
- 一个库中可以包含多个数据表
- 数据表
- 数据库最重要的组成部分之一
- 它由纵向的列和横向的行组成(类似excel表格)
- 可以指定列名、数据类型、约束等
- 一个表中可以存储多条数据
- 数据
- 想要永久化存储的数据
2.SQL介绍
- 什么是SQL
- Structured Query Language:结构化查询语言
- 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”。
- SQL通用语法
- SQL 语句可以单行或多行书写,以分号结尾。
- 可使用空格和缩进来增强语句的可读性。
- MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
- 数据库的注释:
- 单行注释:– 注释内容 #注释内容(mysql特有)
- 多行注释:/* 注释内容 */
- SQL分类
- DDL(Data Definition Language)数据定义语言
- 用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
- DML(Data Manipulation Language)数据操作语言
- 用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
- DQL(Data Query Language)数据查询语言
- 用来查询数据库中表的记录(数据)。关键字:select, where 等
- DCL(Data Control Language)数据控制语言(了解)
- 用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
- DDL(Data Definition Language)数据定义语言
四.对库和表结构的操作(理解)
3.DDL-操作数据库
-
R(Retrieve):查询
- 查询所有数据库
1 2
-- 查询所有数据库 SHOW DATABASES;
-
C(Create):创建
- 创建数据库
1 2 3 4 5 6 7 8 9
-- 标准语法 CREATE DATABASE 数据库名称; -- 创建db1数据库 CREATE DATABASE db1; -- 创建一个已存在的数据库会报错 -- 错误代码:1007 Can't create database 'db1'; database exists CREATE DATABASE db1;
- 创建数据库(判断,如果不存在则创建)
1 2 3 4 5
-- 标准语法 CREATE DATABASE IF NOT EXISTS 数据库名称; -- 创建数据库db2(判断,如果不存在则创建) CREATE DATABASE IF NOT EXISTS db2;
- 创建数据库、并指定字符集
1 2 3 4 5 6 7 8
-- 标准语法 CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称; -- 创建数据库db3、并指定字符集utf8 CREATE DATABASE db3 CHARACTER SET utf8; -- 查看db3数据库的字符集 SHOW CREATE DATABASE db3;
- 练习:创建db4数据库、如果不存在则创建,指定字符集为utf8
1 2 3 4 5
-- 创建db4数据库、如果不存在则创建,指定字符集为 utf8 CREATE DATABASE IF NOT EXISTS db4 CHARACTER SET utf8; -- 查看db4数据库的字符集 SHOW CREATE DATABASE db4;
- 使用数据库
1 2 3 4 5
-- 标准语法 USE 数据库名称; -- 使用db4数据库 USE db4;
【小结:库操作常用sql
(需要记住的sql)
|
|
4.DDL-操作数据表
-
R(Retrieve):查询
- 查询数据库中所有的数据表
1 2 3 4 5
-- 使用mysql数据库 USE mysql; -- 查询库中所有的表 SHOW TABLES;
- 查询表结构
1 2 3 4 5
-- 标准语法 DESC 表名; -- 查询user表结构 DESC user;
- 查询表字符集
1 2 3 4 5
-- 标准语法 SHOW TABLE STATUS FROM 库名 LIKE '表名'; -- 查看mysql数据库中user表字符集 SHOW TABLE STATUS FROM mysql LIKE 'user';
-
C(Create):创建
-
创建数据表
- 标准语法
1 2 3 4 5 6 7
CREATE TABLE 表名( 列名1 数据类型1, 列名2 数据类型2, .... 列名n 数据类型n ); -- 注意:最后一列,不需要加逗号
- 数据类型
1 2 3 4 5 6 7 8 9 10 11 12
1. int:整数类型 * age int 2. double:小数类型 * score double(5,2) * price double 3. date:日期,只包含年月日 yyyy-MM-dd 4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 5. timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss * 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值 6. varchar:字符串 * name varchar(20):姓名最大20个字符 * zhangsan 8个字符 张三 2个字符*3
- 创建数据表
1 2 3 4 5 6 7 8 9 10 11
-- 使用db3数据库 USE db3; -- 创建一个product商品表 CREATE TABLE product( id INT, -- 商品编号 NAME VARCHAR(30), -- 商品名称 price DOUBLE, -- 商品价格 stock INT, -- 商品库存 insert_time DATE -- 上架时间 );
-
对库的操作: 都是database关键字;
对表结构的操作: 都是table关键字;
上面的操作都是对数据库、数据表结构操作的sql语句,不涉及数据!
真正以后非常常用的sql是下面的对数据的crud(增删改查)!
五.对数据的操作(重要) – 对数据的增删改查
5.DML-INSERT语句
-
新增表数据语法
- 新增格式1:给指定列添加数据
1 2 3 4 5 6 7 8 9 10 11
-- 标准语法 INSERT INTO 表名(列名1,列名2,...) VALUES (值1,值2,...); -- 向product表添加一条数据 INSERT INTO product(id,NAME,price,stock,insert_time) VALUES (1,'手机',1999,22,'2099-09-09'); -- 向product表添加指定列数据 INSERT INTO product (id,NAME,price) VALUES (2,'电脑',4999); -- 查看表中所有数据 SELECT * FROM product;
- 新增格式2:默认给全部列添加数据
1 2 3 4 5 6 7 8
-- 标准语法 INSERT INTO 表名 VALUES (值1,值2,值3,...); -- 默认给全部列添加数据 INSERT INTO product VALUES (3,'电视',2999,18,'2099-06-06'); -- 查看表中所有数据 SELECT * FROM product;
- 新增格式3:批量添加数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
-- 默认添加所有列数据 标准语法 INSERT INTO 表名 VALUES (值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...); -- 批量添加数据 INSERT INTO product VALUES (4,'冰箱',999,26,'2099-08-08'),(5,'洗衣机',1999,32,'2099-05-10'); -- 查看表中所有数据 SELECT * FROM product; -- 给指定列添加数据 标准语法 INSERT INTO 表名(列名1,列名2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...); -- 批量添加指定列数据 INSERT INTO product (id,NAME,price) VALUES (6,'微波炉',499),(7,'电磁炉',899); -- 查看表中所有数据 SELECT * FROM product;
-
注意事项
- 列名和值的数量以及数据类型要对应
- 除了数字类型,其他数据类型的数据都需要加引号(单引双引都可以,推荐单引)
6.DML-UPDATE语句
- 修改表数据语法
|
|
- 注意事项
- 修改语句中必须加条件
- 如果不加条件,则将所有数据都修改
7.DML-DELETE语句
- 删除表数据语法
|
|
- 注意事项
- 删除语句中必须加条件
- 如果不加条件,则将所有数据删除
8.DQL-单表查询
- 数据准备(直接复制执行即可)
|
|
- 查询语法
|
|
查询全部
|
|
-
查询部分
- 多个字段查询
1 2 3 4 5
-- 标准语法 SELECT 列名1,列名2,... FROM 表名; -- 查询名称、价格、品牌 SELECT NAME,price,brand FROM product;
作业安排:
|
|
预习
作业安排:
-
使用cookie完成:存取值,存活时间设置,访问路径设置
-
使用session存取数据练习
-
默写出cookie和session的区别
-
拓展作业:
尝试完成一个功能,用于判断用户是否登录:
如果用户已经登录,就让用户可以查询出用户需要的数据;
如果没有登录,就跳转到登录页面;