您的位置:首页 > 理论基础 > 计算机网络

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

2018-02-03 16:54 1086 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐