index
//获取server.js 服务器文件
var server = require("./server");
//获取router.js 入口文件
var router = require("./router");
//获取requestHandlers.js 请求处理文件
var requestHandlers = require("./requestHandlers");
//配置handle请求
var handle ={};
//配置 用户输入 / 的请求方法
handle["/"]= requestHandlers.start;
//配置 用户输入 /start 的请求方法
handle["/start"]= requestHandlers.start;
//配置 用户输入 /upload 的请求方法
handle["/upload"]= requestHandlers.upload;
//执行 server start方法,顺便把 router and handle作为参数一起带入。
server.start(router.route, handle);
server
//获取http服务器
var http = require("http");
//获取url
var url = require("url");
//服务器创建方法
function start(route, handle) {
//服务器请求,响应方法
function onRequest(request, response) {
//获取url路径 --->端口后面的路径
var pathname = url.parse(request.url).pathname;
console.log("Request for" + pathname + "|");
//上传文件
var postData = "";
//设置编码
request.setEncoding("utf-8");
//response.setEncoding("utf-8"); 这是错误的
//设置请求数据时的监听
request.addListener("data", function (postDataChunk) {
//获取postDataChunk 提交的数据
postData += postDataChunk;
console.log("------------->" + postDataChunk);
});
//设置请求数据完成时的监听
request.addListener("end", function () {
/*
* handle 处理js
* pathname url路径
* response 响应
* postData 提交的数据
* */
//入口方法
route(handle, pathname, response, postData);
});
}
//获取创建的服务器
var newServer = http.createServer(onRequest);
//设置端口
newServer.listen(8888);
console.log("Run");
}
//创建本js的模块start方法 为 start方法
exports.start = start;
router
//入口方法
function route(handle, pathname, response, postData) {
console.log("About to route a request for " + pathname);
//判断请求的路径是否有相对应的解决处理方法
if (typeof handle[pathname] === 'function') {
//有则执行
handle[pathname](response, postData);
} else {
console.log("Error");
//没有
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not found");
response.end();
}
}
//创建本js的模块route方法 为 route方法
exports.route = route;
requestHandlers
//获取 querystring 模块
//可以用querystring模块来解析POST请求体中的参数
var querystring = require("querystring");
//请求处理方法 start
function start(response) {
console.log("Request handler 'start' was called.");
var body = '' +
'' +
'' +
'<form>' +
'<textarea name="text" rows="20" cols="60"></textarea>' + '<input type="submit" value="Submit text" />' + '</form>' + '' + ''; response.writeHead(200, {"Content-Type": "text/html"}); response.write(body); response.end();}//请求处理方法 uploadfunction upload(response, postData) { console.log("Request handler 'upload' was called."); response.writeHead(200, {"Content-Type": "text/plain"}); //获取name=text的值 querystring.parse(postData).text response.write(querystring.parse(postData).text); response.end();//响应结束}//创建本js的模块start方法 为 start方法exports.start = start;//创建本js的模块upload方法 为 upload方法exports.upload = upload;