node.js学习笔记——学生信息管理的实现(把功能模块化)使用官方提供的http模块实现

1.创建HTNL和SQL文件

(1) public/stu/add.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>Add new student</h1>
<form action="/stu/add.do">
    Student name:<input name="sname"><br/>
    Student score:<input name="score"><br/>
    Enter time:<input name="schoolTime"><br/>
    <input type="submit"><br/>
</form>
</body>
</html>
(2)创建数据库并在127.0.0.1/phpAdmin/sql.php中执行或者用SOURCE命令在CMD窗口执行

SET NAMES UTF8;
DROP DATABASE IF EXISTS school;
CREATE DATABASE school CHARSET=UTF8;
USE school;

CREATE TABLE stu(
    sid INT PRIMARY KEY AUTO_INCREMENT,
    sname   VARCHAR(32),
    score DOUBLE(4,1),
    schoolTime BIGINT
);

INSERT INTO stu VALUES
(NULL,'gemini','90','1331234567890'),
(NULL,'gemini2','90','1341234567890'),
(NULL,'顶顶','90','1351234567890'),
(NULL,'呱呱','90','1361234567890');

2.实现代码

/**app.js
 * APP 的主模块
 * 创建Http Server监听端口,接收请求
 * **/

const http = require('http');
const url = require('url');
const stu = require('./stu');
//var server = http.createServer();
var server = http.createServer((req,res)=>{
    console.log('web server receive a http request')
    var objUrl = url.parse(req.url,true)
    var path = objUrl.pathname;
    if(path==='/stu/add'){
        stu.add(req,res);

    }else if(path==='/stu/add.do'){
       stu.addDo(req,res);
    }else if(path ==='/stu/list'){
        stu.list(req,res);
    }else{
        res.statusCode =404;
        res.setHeader('Content-Type','text/html;charset=UTF-8');
        res.end('<b>您请求的页面不存在</b>>');
    }

});

server.listen(8080);

//server.on('request',()=>{});

/**
 * stu.js
 * 实现主程序中请求方法的具体的内容
 * **/
var pool = require('./pool');
const fs = require('fs');
const url = require('url');

module.exports = {
    add:function(req,res){
        fs.readFile('./public/stu/add.html',(err,buf)=>{
            res.end(buf);//请求的html文件带有utf-8格式,否则需要设置响应头部
        });
    },
    addDo:function(req,res){
        var objUrl =url.parse(req.url,true);
        console.log(objUrl.query)
        console.log(typeof parseFloat(objUrl.query.score));
        pool.getConnection((err,conn)=>{
            conn.query('INSERT INTO stu VALUES(null,?,?,?)',[objUrl.query.sname,objUrl.query.score,objUrl.query.schoolTime],(err,result)=>{
                if(err){
                    console.log(err);
                }else{
                    res.setHeader('Content-Type','text/html;charset=utf-8');
                    res.end('添加数据成功,添加数据的ID:'+result.insertId)
                    conn.release();
                }
            });
        });
    },
    list:function(req,res){
        pool.getConnection((err,conn)=>{
            conn.query(`SELECT *FROM stu`,(err,result)=>{
                var str =JSON.stringify(result);
                res.setHeader('Content-Type','application/json;charset=utf-8');
                res.end(str);
                conn.release();
            });
        });
    }
}
 
 
/**
 * pool.js
 * 创建连接池
 * **/
var mysql = require('mysql');
var pool = mysql.createPool({
    host:'127.0.0.1',
    user:'root',
    password:'',
    database:'school',
    port:3306,
    connectionLimit:5
});


module.exports = pool;

猜你喜欢

转载自blog.csdn.net/u012183426/article/details/79248023