构建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- ...
随机推荐
- 从零开始安装 Ambari (3) -- 安装 Ambari
1. 安装 yum -y install ambari-server 2. ambari server 需要一个数据库存储元数据,默认使用的 Postgres 数据库.默认的用户名和密码是: amba ...
- 洛谷P3628 [APIO2010]特别行动队(斜率优化)
传送门 先写出转移方程$$dp[i]=max\{dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c\}$$ 假设$j$比$k$更优,则有$$dp[j]+a*(s ...
- 数据结构7: 循环链表(约瑟夫环)的建立及C语言实现
链表的使用,还可以把链表的两头连接,形成了一个环状链表,称为循环链表. 和它名字的表意一样,只需要将表中最后一个结点的指针指向头结点,就形成了一个环. 图1 循环链表 循环链表和动态链表相比,唯一的不 ...
- Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier解决办法
使用Storyboard时出现以下警告: warning: Unsupported Configuration: Scene is unreachable due to lack of entry p ...
- 小程序不在以下 request 合法域名列表中
我们如果是正式上线可以在小程序后台配置合法域名,必须是https 测试时我们可以关闭验证 在 设置 - 项目设置 里勾选不校验https 和 TLS
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- tarjan算法,一个关于 图的联通性的神奇算法
一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度. 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly ...
- 321B
MCMF必须是满足流量最大为前提下的最小费用流(这里是最大费用流) 因此还必须不断地枚举m的流量才行 #include<iostream> #include<algorithm> ...
- hdu3068 求一个字符串中最长回文字符串的长度 Manacher算法
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- java中检测网络是否相通
转载:https://www.cnblogs.com/moon-jiajun/p/3454576.html 1 package com.cjj.client; 2 3 import java.io.I ...