一、http模块
//require表示引包,引包就是引用自己的一个特殊功能 var http = require("http"); //创建服务器,参数是一个回调函数,表示如果有请求进来,要做什么 var server = http.createServer(function(req,res){ //req表示请求,request; res表示响应,response //设置HTTP头部,状态码是200,文件类型是html,字符集是utf8 res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); res.end("哈哈哈哈,我买了五个iPhone" + (1+2+3) + "s"); }); //运行服务器,监听3000端口(端口号可以任改) server.listen(3000,"127.0.0.1");
二、Node.js没有web容器的概念,呈递的静态文件和URL没有任何关系
//require表示引包,引包就是引用自己的一个特殊功能 var http = require("http"); var fs = require("fs"); //创建服务器,参数是一个回调函数,表示如果有请求进来,要做什么 var server = http.createServer(function(req,res){ if(req.url == "/fang"){ fs.readFile("./test/xixi.html",function(err,data){ //req表示请求,request; res表示响应,response //设置HTTP头部,状态码是200,文件类型是html,字符集是utf8 res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); res.end(data); }); }else if(req.url == "/yuan"){ fs.readFile("./test/haha.html",function(err,data){ //req表示请求,request; res表示响应,response //设置HTTP头部,状态码是200,文件类型是html,字符集是utf8 res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); res.end(data); }); }else if(req.url == "/0.jpg"){ fs.readFile("./test/0.jpg",function(err,data){ //req表示请求,request; res表示响应,response //设置HTTP头部,状态码是200,文件类型是html,字符集是utf8 res.writeHead(200,{"Content-type":"image/jpg"}); res.end(data); }); }else if(req.url == "/bbbbbb.css"){ fs.readFile("./test/aaaaaa.css",function(err,data){ //req表示请求,request; res表示响应,response //设置HTTP头部,状态码是200,文件类型是html,字符集是utf8 res.writeHead(200,{"Content-type":"text/css"}); res.end(data); }); }else{ res.writeHead(404,{"Content-type":"text/html;charset=UTF-8"}); res.end("嘻嘻,没有这个页面呦"); } }); //运行服务器,监听3000端口(端口号可以任改) server.listen(3000,"127.0.0.1");
访问127.0.0.1/fang实际显示的是test文件夹中的xixi.html页面
访问127.0.0.1/yuan实际显示的是test文件夹中的haha.html页面
相应的图片,都要有自己的路由
三、 req对象的end()方法、write()方法、writeHead()方法
//这个案例简单讲解http模块 //引用模块 var http = require("http"); //创建一个服务器,回调函数表示接收到请求之后做的事情 var server = http.createServer(function(req,res){ //req参数表示请求,res表示响应 console.log("服务器接收到了请求" + req.url); //设置头部 res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"}); res.write("<h1>我是主标题</h1>"); res.write("<h2>我是2标题</h2>"); res.write("<h2>我是2标题</h2>"); res.write("<h2>我是2标题</h2>"); res.write("<h3>我是3标题</h3>"); res.end((1+2+3).toString()); }); //监听端口 server.listen(3000,"127.0.0.1");
四、req.url的演示,能够得到用户的请求的地址
var http = require("http"); var server = http.createServer(function(req,res){ console.log(req.url); res.end(); }); server.listen(3000,"127.0.0.1");
五、url模块:里面有url.parse()方法,能够将url拆分成为很多部分。
var http = require("http"); var url = require("url"); var server = http.createServer(function(req,res){ //url.parse()可以将一个完整的URL地址,分为很多部分: //host、port、pathname、path、query var pathname = url.parse(req.url).pathname; //url.parse()如果第二个参数是true,那么就可以将所有的查询变为对象 //就可以直接打点得到这个参数 var query = url.parse(req.url,true).query; //直接打点得到这个参数 var age = query.age; console.log("pathname:" + pathname); console.log("query:" + query); console.log("age:" + age); res.end(); });
六、接收表单GET提交的模拟,可以得到表单提交上来的name、age、sex。
表单是test文件夹中的form.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="http://127.0.0.1:3000/" method="GET"> <input type="text" name="name" /> <br /> <input type="text" name="age" /> <br /> <input type="radio" name="sex" value="男"/> 男 <input type="radio" name="sex" value="女"/> 女 <br /> <input type="submit"> </form> </body>
var http = require("http"); var url = require("url"); var server = http.createServer(function(req,res){ //得到查询部分,由于写了true,那么就是一个对象 var queryObj = url.parse(req.url,true).query; var name = queryObj.name; var age = queryObj.age; var sex = queryObj.sex; res.end("服务器收到了表单请求" + name + age + sex); }); server.listen(3000,"127.0.0.1");
七、探求事件环机制
当用户访问/student/1234567890 的查询此学号的学生信息。
当用户方位/teacher/645433 的时候,查询此老师的信息
其他的,我们提示错误。如果位数不对,也是提示位数不对
var http = require("http"); var server = http.createServer(function(req,res){ //得到url var userurl = req.url; res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"}) //substr函数来判断此时的开头 if(userurl.substr(0,9) == "/student/"){ var studentid = userurl.substr(9); console.log(studentid); if(/^d{10}$/.test(studentid)){ res.end("您要查询学生信息,id为" + studentid); }else{ res.end("学生学号位数不对"); } }else if(userurl.substr(0,9) == "/teacher/"){ var teacherid = userurl.substr(9); if(/^d{6}$/.test(teacherid)){ res.end("您要查询老师信息,id为" + teacherid); }else{ res.end("老师学号位数不对"); } }else{ res.end("请检查url"); } });