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;