• http(二)


    1.将表格中的数据动态加入表格中,js脚本中拼接了css,html,script,练习

     1 const http = require("http");
     2 const urlTool = require("url");
      //1,浏览器向node服务发送了一个请求,返回了一个表格的html
      //2.然后在想浏览器发送一个css.java的请求,返回css,
      //3.浏览器对不标准的html也会解析
    3 4 5 const server = http.createServer((request, response)=>{ 6 //获取参数 7 let method = request.method.toUpperCase(); 8 let pathname = urlTool.parse(request.url).pathname; 9 //检测路径 10 if(method === 'GET' && pathname === '/users'){ //如果报文路径和文件路径没关联,可以自定义url 11 //1. 乱码问题 12 response.setHeader("content-type",'text/html;charset=utf-8'); 13 const arr = [ 14 {name: 'knight', age: 18}, 15 {name: 'xiaoming', age: 20}, 16 {name: 'xiaoning', age: 28}, 17 {name: 'xiaotian', age: 18}, 18 {name: 'xiaohigh', age: 20}, 19 ]; 20 //返回一个表格 21 let str = ` 22 <link rel="stylesheet" href="/css.java"> 23 <script src="/app.js"></script> 24 <table border="1"><tr><td>姓名</td> <td>年龄</td></tr>`; 25 for(let i=0;i<arr.length;i++){ 26 str += `<tr><td>${arr[i].name}</td><td>${arr[i].age}</td></tr>`; 27 } 28 str += `</table>`; 29 30 response.end(str); 31 }else if(method === 'GET' && pathname === '/css.java'){ 32 response.end(` 33 body{ 34 background:pink; 35 } 36 `); 37 }else{ 38 response.end("OK"); 39 } 40 }); 41 42 server.listen(8000, ()=>{ 43 console.log('server is running.. 8000 端口监听......'); 44 })

    二,登录表单,服务响应练习

    表单

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <title>登录</title>
     8     <link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
     9 </head>
    10 
    11 <body>
    12     <div class="container">
    13         <div class="col-xs-4 col-xs-offset-4">
    14             <h2 class="page-header">用户登录</h2>
    15             <form method="POST" action="/login">
    16                 <div class="form-group">
    17                     <label for="exampleInputEmail1">用户名</label>
    18                     <input type="text" class="form-control" name="username">
    19                 </div>
    20                 <div class="form-group">
    21                     <label for="exampleInputPassword1">密码</label>
    22                     <input type="password" class="form-control" name="password">
    23                 </div>
    24                 <hr>
    25                 <button type="submit" class="btn btn-primary btn-block">登录</button>
    26             </form>
    27         </div>
    28     </div>
    29 </body>
    30 
    31 </html>

    js脚本

     1 const http = require('http');
     2 const urlTool = require("url");
     3 const fs = require('fs');
     4 const qs = require('querystring');
     5 //1.浏览器想发送一个get,/login的请求,然后node服务器返回一个login.html(一个表单)给浏览器
     6 // 2.然后浏览器将表单内容填写了,发送了post,/login的请求,服务器返回了请求体的数据
     7 
     8 
     9 // function getClientIp(req) {
    10 //     return req.headers['x-forwarded-for'] || // 判断是否有反向代理 IP
    11 //         req.connection.remoteAddress || // 判断 connection 的远程 IP
    12 //         req.socket.remoteAddress || // 判断后端的 socket 的 IP
    13 //         req.connection.socket.remoteAddress;
    14 // }
    15 
    16 
    17 const server = http.createServer((request, response) => {
    18     //获取 方法和路径
    19     let method = request.method.toUpperCase();
    20     let pathname = urlTool.parse(request.url).pathname;
    21     //如果 GET /login 则返回一个表单页面
    22     if (method === 'GET' && pathname === '/login') {
    23         fs.readFile(__dirname + '/login.html', (err, data) => {
    24             response.end(data);
    25         });
    26         // POST /login 处理表单的数据
    27     } else if (method === 'POST' && pathname === '/login') {
    28         //请求体数据提取
    29         //1. 声明变量
    30         let body = '';
    31         //2. 绑定 data 事件
    32         request.on('data', chunk => {
    33             body += chunk;
    34         })
    35         //3. 绑定 end 事件
    36         request.on('end', () => {
    37             console.log(body);
    38             //将请求体的字符串形式 转为对象形式
    39             let data = qs.parse(body);
    40             // fs.writeFile("./access.log", body + '--ip:'+ getClientIp(request)+'\r\n', (err) => {
    41             //     console.log(data);
    42             //     response.end(body);
    43             // })
    44 
    45             console.log(data);
    46             response.end(body);
    47 
    48         })
    49     }else {
    50         response.end("404");
    51     }
    52 });
    53 
    54 server.listen(80, () => {
    55     console.log("服务已经启动, 80 端口监听中....");
    56 })
  • 相关阅读:
    nginx 反向代理 apache 服务
    IIS 设置404页面 显示系统找不到指定的文件
    centos6.6 下 安装 nginx
    sql优化建议
    php的静态化
    vsftp上传文件出现553 Could not create file
    php安装libevent扩展
    discuz回贴通知插件实现-显示用户状态设置
    discuz回贴通知插件实现-插件的多语言
    discuz回贴通知插件实现-插件后台管理配置
  • 原文地址:https://www.cnblogs.com/fsg6/p/13095876.html
Copyright © 2020-2023  润新知