构建web应用
var http = require('http');
http.createServer(function(req, res){
res.writeHeader(200, {Content-Type : 'text/plain'});
res.end('hello world!');
}).listen(80);
function(req, res){
var method = req.method;
if(method === 'POST'){
}else if(method === 'GET'){
}else if(method === 'DELETE'){
}else if(method === 'PUT'){
}else{
}
}
var url = require('url');
var fs = require('fs');
function(req, res){
var pathname = url.parse(req.url).pathname;
fs.readFile(path.join(ROOT, pathname), function(err, file){
if(err){
res.writeHeader(404);
res.end('not Found File');
return;
}
res.writeHeader(200);
res.end(file);
});
}
function(req, res){
var pathname = url.parse(req.url).pathname;
var paths = pathname.split('/');
var contronller = paths[1] || 'index';
var action = paths[2] || 'index';
var args = paths.slice(3);
if(handler[contronller] && handler[contronller][action]){
handler[contronller][action].apply(null, [req, res].concat(args));
}else{
res.writeHeader(500);
res.end('找不到响应控制器');
}
}
var url = require('url');
var query = url.parse(req.url, true).query;//{foo : 'aaa', baz : 'bbb'}
req.query = query;
handle(req, res);
function parseCookie(cookie){
var cookies = {};
if(!cookie){
return cookies;
}
var list = cookie.split(';');
for(var i = 0,len = list.length;i < len;i++){
var pair = list[i].split('=');
cookies[pair[0].trim()] = pair[1];
}
return cookies;
};
req.cookies = parseCookie(req.headers.cookie);
handle(req, res); function serialize(name, value, options){
var pairs = [name+'='+value];
if(options.expires){
pairs.push('Expires='+options.expires.toUTCString());
}
if(options.maxAge){
pairs.push('Max-Age='+options.maxAge);
}
if(options.path){
pairs.push('Path='+options.path);
}
if(options.domain){
pairs.push('Domain='+options.domain);
}
if(options.httpOnly){
pairs.push('HTTPOnly');
}
if(options.secure){
pairs.push('Secure');
}
return pares.join(';');
} res.writeHeader('Set-Cookie', serialize({isVisit : 1}));
var hasBody = function(req){
return 'transfer-encoding' in req.Headers || 'content-length' in req.Headers;
} function(req, res){
if(hasBody(req)){
var buffers = [];
req.on('data', function(chunk){
buffers.push(chunk);
});
req.on('end', function(){
req.rawBody = Buffer.concat(buffers).toString();
handle(req, res);
});
}else{
handle(req, res);
}
};
req.body = querystring.parse(req.rawBody); var mime = function(req){
return req.headers['content-type'].split(';')[0] || '';
} var xml2js = require('xml2js');
var handle = function(req, res){
if(mime(req) === 'application/json'){
try{
req.body = JSON.parse(req.rowBody);
}catch(){
res.writeHeader('400');
res.end('invalid json');
return;
}
}
if(mime(req) === 'application/xml'){
xml2js.parseString(req,rawBody, function(err, xml){
if(err){
}else{
req.body = xml;
}
});
}
};
var formidable = require('formidable');
function(req, res){
if(hasBody(req)){
if(mime(req) === 'multipart/form-data'){
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files){
req.body = fields;
req.files = files;
handle(req, res);
});
}
}
}
var bytes = 1024; function(req, res){
var received = 0;
var len = req.headers['content-length']?parseInt(req.headers['content-length'], 10):null;
if(len > bytes){
res.writeHeader(413);
res.end;
return;
} res.on('data', function(chunk){
received += chunk.length;
if(received > bytes){
req.destroy();
}
}); handle(req, res);
};
构建web应用的更多相关文章
- NodeJs+http+fs+request+cheerio 采集,保存数据,并在网页上展示(构建web服务器)
目的: 数据采集 写入本地文件备份 构建web服务器 将文件读取到网页中进行展示 目录结构: package.json文件中的内容与上一篇一样:NodeJs+Request+Cheerio 采集数据 ...
- 使用EXtjs6.2构建web项目
一.项目简介 众所周知ext是一款非常强大的表格控件,尤其是里边的grid为用户提供了非常多的功能,现在主流的还是用extjs4.0-4.2,但是更高一点的版本更加符合人的审美要求.因此,在今天咱们构 ...
- 《深入浅出Node.js》第8章 构建Web应用
@by Ruth92(转载请注明出处) 第8章 构建Web应用 一.基础功能 请求方法:GET.POST.HEAD.DELETE.PUT.CONNECT GET /path?foo=bar HTTP/ ...
- 基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面
最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...
- Eclipse中使用maven构建web项目中遇到的问题
构建过程参考: http://blog.csdn.net/smilevt/article/details/8215558/ http://www.cnblogs.com/dcba1112/archiv ...
- Node.js高级编程读书笔记 - 4 构建Web应用程序
Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应 ...
- 高效构建Web应用 教你玩转Play框架 http://www.anool.net/?p=577
Play 框架是一个完整的Web应用开发框架,覆盖了Web应用开发的各个方面.Play 框架在设计的时候借鉴了流行的 Ruby on Rails 和 Grails 等框架,又有自己独有的优势.使用 P ...
- threejs构建web三维视图入门教程
本文是一篇简单的webGL+threejs构建web三维视图的入门教程,你可以了解到利用threejs创建简单的三维图形,并且控制图形运动.若有不足,欢迎指出. 本文使用的框架是three.js gi ...
- axis2_1.6.2之构建web端和客户端 .
参考资料: http://blog.csdn.net/apei830/article/details/5448897 axis2的官网 http://axis.apache.org/axis2/jav ...
- 使用XFire+Spring构建Web Service(一)——helloWorld篇
转自:http://www.blogjava.net/amigoxie/archive/2007/09/26/148207.html原文出处:http://tech.it168.com/j/2007- ...
随机推荐
- 如果Laravel 报错 file_put_contents(): failed to open stream
问题解决方法 执行命令 php artisan cache:clear 并赋予 /storage 文件夹读写权限: chmod -R 777 storage: 若在执行 php artisan cac ...
- 【bzoj1030】: [JSOI2007]文本生成器 字符串-AC自动机-DP
[bzoj1030]: [JSOI2007]文本生成器 首先把匹配任意一个的个数的问题转化为总个数-没有一个匹配的个数 先构造AC自动机,然后枚举每一位的字母以及在自动机上的位置 f[i][j]为第i ...
- 智能合约安全事故回顾(3)-DOS漏洞导致的KotET事件
现实世界中的网络都是有带宽限制的,想象一下,一个访问量稳定的网站,突然有人利用某种方式爆发式的将网站的访问量提升,这个时候系统会作何反应?如果系统没有合理的防DOS攻击的方式,这种时候往往会造成服务器 ...
- 形态形成场(矩阵乘法优化dp)
形态形成场(矩阵乘法优化dp) 短信中将会涉及前\(k\)种大写字母,每个大写字母都有一个对应的替换式\(Si\),替换式中只会出现大写字母和数字,比如\(A→BB,B→CC0,C→123\),代表 ...
- P2723 丑数 Humble Numbers
题意:给你k个质数,定义丑数集合为k个质数随机(1--k)个相乘得到的数 求第n小的丑数 暴力...貌似不太可行,(把所有大量丑数求出来,sort QAQ) 可以想到,对于第i个丑数f[i],它一 ...
- Educational Codeforces Round 59 (Rated for Div. 2)
熬夜爆肝,智商急剧下降 坐标UTC+8晚上23:35开始 晚上脑袋转的慢,非常慢 T1上来先做还花了好几分钟 T2本来是有式子的我TM写数位DP写炸了然后才发现是有公式 T3英语不好,一开始题意没读懂 ...
- 命令行编译运行Java程序
- 前端优化系列之一:dns预获取 dns-prefetch 提升页面载入速度
问题:怎么做到dns域解析? 用于优化网站页面的图片 问题:怎么提升网站性能? dns域解析,是提升网站的一个办法. DNS Prefetch,即DNS预获取,是前端优化的一部分. 一般来 ...
- php 常见递归实例
//计算数组{1,1,2,3,5,8.......} 第n位值 function Process1($i){ if ($i == 0) return 0; if ($i == 1) return 1; ...
- Linux(ubuntu)下固定IP的方法
写在前面,问:为什么要固定ip.答:要知道固定IP的好处多多,随意搬动,固定共享地址,不怕断网等等 首先,我们要选取一个局域网内的IP,方法如下: 1.选取IP号段,一般是路由器DCHP以外的IP地址 ...