复习
练习: 创建 web 服务器, 创建一个商品路由器, 添加路由, 挂载到 /product
web 服务器
请求 request
响应 response
中间件
为主要的业务逻辑服务的; 可以接收到请求, 以及做出响应
应用及中间件、路由级中间件、内置中间件、第三方中间件、错误处理中间件
-
路由级中间件
路由器的使用 -
应用级中间件
也成为自定义中间件, 是一个函数(回调函数)
app.use("/reg", callBack(req, res, next))
拦截 url 为 /reg 的路由;
next 是一个函数表示执行下一个中间件或者路由 -
内置中间件
```javascript
app.use(express.static("托管目录"))
```
- 把所有的静态资源托管到某一个目录, 如果浏览器请求静态资源, 自动到该
目录下寻找, 无需创建路由做出响应
- 练习: 把静态资源托管到 file 目录
- 第三方中间件
body-parser 中间件使用(在 express 4.16+ 已经将 body-parser 引入为内置插件)
```javascript
//1. 下载安装
npm install body-parser(这里可以不用下载)
//2. 引入中间件
const bodyParser = require("body-parser");
//3. 使用中间件
//将 post 请求数据解析为对象
app.use(bodyParser.urlencoded({ (这里使用 express 调用)
extended: false //不使用第三方 qs 解析查询字符串为对象而是使用 querystring 核心模块 来解析
}));
//4. 在 post 请求的路由中
request.body //返回对象
```
获取数据的方式
-
GET 传递 和 接收
传递: lid=1&pname=dell
接收: request.query -
路由 传递 和 接收
传递: /shopping/4999
接收: request.params -
POST 传递 和 接收
传递: 表单(目前)无法通过 url 查看
接收: request.body (需要使用中间件 body-parser)
mysql 模块
mysql.exe -hlocalhost -P3306 -uroot -p
mysql -uroot
INSERT INTO emp VALUES(…)
DELETE FROM emp WHERE eid=5;
UPDATA emp SET upwd=“1234”,sex=0 WHERE eid=4;
SELECT * FROM emp;
-
建立连接
//1. 创建连接对象 let connection = mysql.createConnect({ host: "127.0.0.1", port: "8080", user: "root", password: "", database: "tedu" }); //2. 建立连接 connection.connect(); //3. 执行 SQL 语句 connection.query(SQL语句, callBack(err, result)); //[err] 错误信息 //[result] 执行结果 //4. 关闭连接 connection.end();
-
执行删除、修改、插入返回对象, 如果返回对象属性中 affectedRows 大于 0
说明执行成功.执行 查询 返回 数组
用户名和密码同时满足的结果, 返回一条数据SQL注入:
SELECT * FROM user WHERE uname=“root” AND upwd=“123456”
-
-
建立连接池连接
//1. 使用连接池 let pool = mysql.createPool({ host: "127.0.0.1", port: 3306, user: "root", password: "", database: "tedu", connectionLimit: 20, //用于设置连接池的大小, 默认 15个 }); //2. 执行 SQL 语句 pool.query(SQL语句, callBack(err, result));
项目(练习)
- 托管静态资源到 public 目录, 创建注册页面 user_reg.html
- 在 user.js 文件中创建路由器, 添加路由(post /reg), 导出路由器;
在 app.js 引入路由器, 并挂载到 /user 下
课后任务
- 整理思维导图
- 练习:
创建 web 服务器(服务器, 路由), 托管静态资源到 public 创建文件
add.html 点击提交, 将数据插入到 tedu 下的数据表 dept 中