• node.js之第一天


    一、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");
        }
    });
    
    
  • 相关阅读:
    线程的终止pthread_exit和返回为什么终止的原因
    临界区互斥使用之使用自旋锁
    临界区的同步操作-------------使用信号量 实现
    常用解压操作
    group compare vs pair compare
    两个总体的参数关系
    纳伪|去真
    Ho|H1|p-value|p值与U值|单侧检验
    统计分布近似转化
    样本均值的标准误差|样本均值的标准差|总体标准差|样本标准差|简单随机抽样|样本均值估计|样本方差估计|
  • 原文地址:https://www.cnblogs.com/15fj/p/7748025.html
Copyright © 2020-2023  润新知