var http = require("http");//获取http对象 var url = require("url");//获取url对象 //http、url都是系统自带的模块,而下面的requestHandlers是咱们手动编写的模块,对应当前目录下的requestHandlers.js文件 var requestHandlers = require("./requestHandlers"); //onRequest函数,用于处理http请求,不一样的url请求交由不一样的函数进行处理 function onRequest(request, response){ var pathname = url.parse(request.url).pathname;//获取请求的URL //requestHandlers的handle属性又是一个对象,该对象包含多组属性:属性值,属性名对应uri,属性值对应处理函数,详见requestHandlers.js if(typeof requestHandlers.handle[pathname] === "function") requestHandlers.handle[pathname](request, response); else { console.log("No request handler found for " + pathname); response.writeHead(404, {"Content-Type": "text/html;charset=utf-8"}); response.write("您访问的页面不存在!访问<a href='/'>首页</a>"); response.end(); } } var server = http.createServer(onRequest);//函数onRequest做为createServer的参数,这样浏览器每发送一次请求,服务器中该函数都会被调用一次 server.listen(8888); //上面两句能够合写成http.createServer(onRequest).listen(8888);
var handle = {}; var formidable = require("formidable"); handle["/"] = start; handle["/start"] = start; handle["/upload"] = upload; function start(request, response) { var body = '<html>'+ '<head>'+ '<meta http-equiv="Content-Type" content="text/html; '+ 'charset=UTF-8" />'+ '</head>'+ '<body>'+ '<form action="/upload" method="post">'+ '学号:<input type="text" name="id" /><br /><br />'+ '姓名:<input type="text" name="name" /><br /><br />'+ '<input type="submit" value="提交" />'+ '</form>'+ '</body>'+ '</html>'; response.writeHead(200, {"Content-Type": "text/html"}); response.write(body); response.end(); } function upload(request, response) { var form = new formidable.IncomingForm(); form.parse(request, function(error, fields, files) { console.log("id:" + fields.id); console.log("name:" + fields.name); response.writeHead(200, {"Content-Type": "text/html;charset=utf-8"}); response.write("id:" + fields.id + "<br>"); response.write("name:" + fields.name); response.end(); }); } exports.handle = handle; exports.start = start; exports.upload = upload;