Model
View
Controller (Servlet)
登录--->接收用户的登录请求login.do
-->路由拦截到login.do并让UserCtrller处理用户的请求
(获取请求中用户登录的参数,调用dao层方法)
---->Dao层首先会对数据进行连接,然后查询用户名和密码是否正确
-->数据库
数据库 (返回查询的数据)---->dao层拿到数据给controller层(回调函数)
-->controller处理数据,使用reps(发送响应数据报文)给前台浏览器
--->前台拿到数据对数据进行渲染。
const myexpress = require("express") // 1. 导入 express模块
const logger = require("morgan")
const route = require('./routers/indexRouter')
const myapp = myexpress()
myapp.use(logger("dev")) // 请求信息日志打印在控制台,便于开发调试
myapp.use(myexpress.static(__dirname + "/src")) //2. 配置前端资源文件src
myapp.use(myexpress.urlencoded({ extended: true })) // 声明使用解析post请求的中间件
myapp.use(myexpress.json()) // 将post参数数据转为json格式: {name: tom, pwd: 123}
myapp.use(route) // 4. myapp服务器使用路由,分发任务
myapp.listen(6789, () => { // 3.设置服务器监听端口号
console.log("Express服务器启动")
})
myapp.use(function (req, resp) {
resp.status(404)
resp.sendFile(__dirname + "/src/page/404.html") // 转发 url改变
// resp.redirect("/page/404.html") // 重定向不需要加/src url不变
})
const express = require('express')
const userCtrl = require('../controller/userCtrl')
const router = express.Router() // 创建路由对象
router.post('/login.do', userCtrl.userLogin)
router.get('/student', userCtrl.findAll)
// 对外暴露模块
module.exports = router
const userDao = require('../dao/userDao')
module.exports = {
userLogin(req, resp) {
console.log(`1.控制接收前端请求数据处理`)
let { user, pwd } = req.body
let us = [user, pwd]
userDao.do("select * from user where username=? and password = ?", us, function (err, data) {
console.log(`5.controller层处理数据库返回数据函数`)
console.log(data)
console.log(err)
})
console.log(`6.查询中,主线继续执行`)
}
}
const myPool = require("../config/mysqlPool")
module.exports = {
do(sql, arr, dos) { //dos是回调函数
console.log(`2.控制器调用Dao层函数像数据库获取数据`)
myPool.connect(sql, arr, function (err, data) {
console.log(`4.Dao层处理数据库返回数据函数`)
dos(err, data)
})
},
}
const mysql = require("mysql")
const poolCig = { host: "localhost", port: "3306", user: "root", password: "123456", database: 'Node' }
// 数据库
const dbPool = {
pool: {},
create() {
this.pool = mysql.createPool(poolCig) // 创建数据库连接池
},
connect(sql, arr, fun) {
console.log(`3.Dao对数据连接,发送sql语句进行查询`)
this.pool.getConnection(function (err, connection) {
connection.query(sql, arr, fun)
connection.release() //连接清空
})
}
}
dbPool.create()
module.exports = dbPool
<html>
<head>
<meta charset="UTF-8">
<title>title>
<style type="text/css">
style>
head>
<body>
<form action="/login.do" method="POST">
用户名: <input name="user" type="text" autocomplete="off" />
密 码: <input name="pwd" type="password" autocomplete="off">
<button>提交button>
form>
body>
html>