nodejs服务器——post请求与响应

文件夹结构:
在这里插入图片描述
数据库结构:
在这里插入图片描述
html结构:

	<form action="/login.do" method="post">
        用户名:<input name="userName" type="text">
        密 码:<input name="pwd" type="password">
        <button>提交</button>
    </form>
    <h1>注册</h1>
    <form action="/register.do" method="post">
        用户名:<input name="userName" type="text">
        密 码:<input name="pwd" type="password">
        <button>提交</button>
    </form>

1.配置服务器入口文件

// A.下载express模块:npm install express@4 -s
const myexpress=require("express");
// B.下载morgan模块:npm install morgan -s
const logger=require("morgan");
// C.下载解析post值的模块:npm install body-parser -s
const bodyParser=require("body-parser");
// 下载小图标模块:npm install serve-favicon -s
const favicon=require("serve-favicon")
const route=require("./routers/indexRouter")
//D.创建服务器
const myapp=myexpress();
//配置服务器
// 1.打印日志
myapp.use(logger("dev"));
// 2.解析post方法
myapp.use(bodyParser.urlencoded({extended:false}));//配置post的body模块
myapp.use(bodyParser.json())//将数据转换成json
// 3.使用路由,分发任务
myapp.use(route);//进入路由文件夹
// 4.配置静态资源
myapp.use(myexpress.static(__dirname+"/src"))//拦截请求
// 5.配置网页小icon
myapp.use(favicon(__dirname+"/src/images/logo.jpg"))
//当发生404页面错误的时候返回一个404文件
myapp.use(function (req,resp) {
   resp.status(404);
   resp.redirect("/page/404.html")//重定向
})
// E.侦听
myapp.listen("8888",()=>{
    console.log("day3-express服务器启动")
})

2.配置路由文件

//使用提供的路由模块
const express=require("express");
const router=express.Router();//创建路由模块
const userCtrl=require("../controller/userCtrl")
//拦截请求
// router.get("/login.do",userCtrl.userLogin)//默认将req,resp传给函数userLogin
router.post("/login.do",userCtrl.userLogin)//拦截登录请求
router.post("/register.do",userCtrl.registerUser)//拦截注册请求
module.exports=router;//公开路由对象

3.配置控制文件

const dbDao=require("../dao/userDao")
//控制所有用户相关的东西
module.exports={
    userLogin(req,resp) {
        //get方法
       /* let userName=req.query.userName;//userName是表单中用户名的name属性值
        let pwd=req.query.pwd;//pwd是表单中密码的name属性值*/
        //post方法
        let userName=req.body.userName;
        let pwd=req.body.pwd;
        let loginArr=[userName,pwd];
        dbDao.selectUser(loginArr,function (err,data) {//err:获取数据操作的错误信息
            if(data.length>0){
                resp.redirect("/page/nav.html")//重定向
            }else{
                resp.redirect("/index.html")//重定向
            }
        })
    },
    registerUser(req,resp){
        let username=req.body.userName;
        let pwd=req.body.pwd;
        let regisArr=[username,pwd];
        //调用数据持久层,只操作数据
        dbDao.addUser(regisArr,function (err,data) {//err:获取数据操作的错误信息
            if(data){
                resp.send("注册成功")
            }else{
                resp.send("注册失败")
            }
        })
    }
}

4.数据库操作方法

//对数据库进行操作
const myPool=require("../config/mysqlpool")
module.exports={
    //查询数据操作
    selectUser(arr,cb){
        //使用数据库连接池来查询数据
        myPool.connect("SELECT s_name FROM students WHERE s_name=? AND s_pwd=?",arr,function (err,data) {//使用问号+数组的方式,能够防止sql注入
            cb(err,data)
        })
    },
    //增加数据操作
    addUser(arr,cb){
        //使用数据库连接池来添加数据
        myPool.connect("insert into students values(null,?,?)",arr,function (err,data) {//使用问号+数组的方式,能够防止sql注入
            cb(err,data)
        })
    }
}

5.连接数据库,进行相应的数据库操作,返回对应信息

//连接数据库,下载node-mysql模块:npm install mysql -s
const mysql=require("mysql");
const poolCig={
    host:"localhost",//ip地址
    port:"3306",//端口号
    user:"root",//用户名
    password:null,//密码
    database:"mylogin"//数据库名
}
const dbPool={
    pool:{},
    create(){
        // 1.创建数据库连接池
        this.pool=mysql.createPool(poolCig)
    },
    connect(sql,arr,fun){
        // 2.通过连接池对象发起连接
        this.pool.getConnection(function (err,connection) {//err:获取连接对象的错误信息
            // 3.操作数据库
            connection.query(sql,arr,fun)
            connection.release();//关闭连接
        })
    }
}
dbPool.create()
module.exports=dbPool

猜你喜欢

转载自blog.csdn.net/weixin_39150852/article/details/85638011