1. get请求参数接收

我们简单举一个需要接收参数的例子

如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球。通过前面的进阶3教程《nodejs进阶(3)—路由处理》重介绍的url模块,我们知道接收方法如下这样写

 //----------------6_param------------------------------------      
var http = require('http');                          
var url = require('url');          
var router = require('./router');        
http.createServer(function (request, response) {                          
    if(request.url!=="/favicon.ico"){  //清除第2此访问              
        var rdata  =  url.parse(request.url,true).query;   //获取参数
    if(rdata['keyword']!=undefined){  
            console.log(rdata['keyword']);      
        }       
        console.log("server执行完毕");   
response.end();  
    }                          
}).listen(8000);                          
console.log('Server running  at  http://127.0.0.1:8000/');       

那么在我们的控制台里会输出查询此“地球”。

get请求我们都可以通过上述这种方式获取参数。

2. post请求参数接收

如果是post请求,这些参数不是通过url传递的,是包含在request请求体中。请求体里的流需要以事件形式进行接收

req.on('data',  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中

post  +=  chunk;

});

我们新建一个页面,其中有一个post请求

 <html>
<head>
</head>
<body>
登录:
<p>这是一个段落</p>
<h1>样式1</h1>
<form action="/submitLogin" method="post">
用户名:<input value="" name="name">
密码:<input value="" name="pwd">
<input type="submit" value="提交">
</form>
<!--img src="./showImg"></img-->
</body>
<html>

我们请求login,有两个输入项name和pwd,当我们输入值后点击提交,会发post请求到http://localhost:8000/submitLogin

我们对router.js进行扩展,添加submitLogin处理方法。

之前需要引入'querystring',该模块用于实现URL参数字符串与参数对象的互相转换。

大家需要了解学习两个常用的方法

1)require('querystring').parse("name=eee&pwd=123")  结果:Object {name: "eee", pwd: "123"}

2)require('querystring').stringify({name:'eee',pwd:'123'})  结果:"name=eee&pwd=123"

 //-----------------router.js--------------------------------
var file = require('./models/file');
var  url  =  require('url');      
var  querystring  =  require('querystring');  //post需导入     
module.exports={
    login:function(req,res){
res.writeHead(200,  {'Content-Type':'text/html'});    
        var data  =  file.readfileSync('./views/login.html');      
        res.write(data);  
        res.end();      
    },
register:function(req,res){
        var data=file.readfileSync('./views/register.html');//使用同步读取
res.write(data);
res.end();
    },
showImg:function(req,res){
        file.readImg('./imgs/dog.jpg',res);//使用同步读取
    },
submitLogin:function(req,res){
var  post  =  '';  //定义了一个post变量,用于暂存请求体的信息      
    req.on('data',  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中      
        post  +=  chunk;      
    });      
    //-------注意异步-------------      
    req.on('end',  function(){   //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。      
        post  =  querystring.parse(post);      
        console.log('name:'+post['name']+'\n');        
        console.log('pwd:'+post['pwd']+'\n');
if(post['name']=="fff"&&post['pwd']=="123"){//简单写登录成功的匹配
res.write("登录成功!")
}else{
res.write("用户名密码不正确")
}
res.end();  
    });    
}
}

当我们想login页面输入用户名和密码参数时,如果输入fff和123  这时候跳转到loginSubmit输出登录成功!

如果输入其他值跳转后会提示:用户名密码不正确

nodejs进阶(5)—接收请求参数的更多相关文章

  1. SpringMVC——接收请求参数和页面传参

    Spring接收请求参数: 1.使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...

  2. struts2视频学习笔记 11-12(动态方法调用,接收请求参数)

    课时11 动态方法调用 如果Action中存在多个方法时,可以使用!+方法名调用指定方法.(不推荐使用) public String execute(){ setMsg("execute&q ...

  3. Struts系列笔记(6)---action接收请求参数

    action接收请求参数 在web开发中,去接收请求参数来获得表单信息非常的常见,自己也总结整理了有关Struts2通过action接收请求参数的几种方法. Struts2 提供三种数据封装的方式: ...

  4. struts2 action接收请求参数和类型转换

    1,action接收请求参数 在struts2中action是什么?(struts2是一个mvc框架)         V:jsp        M:action         C:action  ...

  5. Struts框架(6)---action接收请求参数

    action接收请求参数 在web开发中,去接收请求参数来获得表单信息非常的常见,自己也总结整理了有关Struts2通过action接收请求参数的几种方法. Struts2 提供三种数据封装的方式: ...

  6. SpringMVC之接收请求参数和页面传参

    1.Spring接收请求参数 1>.使用HttpServletRequest获取 @RequestMapping("/login.do") public String log ...

  7. action接收请求参数

    一.采用基本类型接收请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能接收自动接收请求参数并赋给同名属性. action的代码: public class Pa ...

  8. springMVC中接收请求参数&&数据转发

    ### 1. 接收请求参数 #### 1.1. [不推荐] 通过HttpServletRequest获取请求参数 假设存在: <form action="handle_login.do ...

  9. tomcat与jetty接收请求参数的区别

    [场景] 服务端点对点通知.A服务发起请求B服务,B同步返回接收成功:然后B开始处理逻辑:B处理完成后异步通知给A:A接收请求并处理,同步回写响应给B:完成. [先上代码] 服务端(接收端)代码: i ...

随机推荐

  1. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  2. jsp中出现onclick函数提示Cannot return from outside a function or method

    在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...

  3. 用原生js做单页应用

    最近在公司接到一个需求,里面有一个三级跳转.类似于选择地址的时候,选择的顺序是:省份->市->区.如果分三个页面跳转,那么体验非常不好,如果引入其他框架做成单页应用,又比较麻烦.所以可以用 ...

  4. 普通程序员如何转向AI方向

    眼下,人工智能已经成为越来越火的一个方向.普通程序员,如何转向人工智能方向,是知乎上的一个问题.本文是我对此问题的一个回答的归档版.相比原回答有所内容增加. 一. 目的 本文的目的是给出一个简单的,平 ...

  5. [内核笔记1]内核文件结构与缓存——inode和对应描述

    由来:公司内部外网记录日志的方式现在都是通过Nginx模块收到数据发送到系统消息队列,然后由另外一个进程来从消息队列读取然后写回磁盘这样的操作,尽量的减少Nginx的阻塞. 但是由于System/V消 ...

  6. 代码的坏味道(14)——重复代码(Duplicate Code)

    坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...

  7. WPF 捕获键盘输入事件

    最近修改的一个需求要求捕获键盘输入的 Text,包括各种标点符号. 最开始想到的是 PreviewKeyDown 或者 PreviewKeyUp 这样的键盘事件. 但是这两个事件的对象 KeyEven ...

  8. Ubuntu搭建lnmp环境

    1.安装nginx 安装 sudo apt-get install nginx 服务启动.停止.重启 /etc/init.d/nginx start /usr/sbin/nginx -c /etc/n ...

  9. 封装集合(Encapsulate Collection)

    封装就是将相关的方法或者属性抽象成为一个对象. 封装的意义: 对外隐藏内部实现,接口不变,内部实现自由修改. 只返回需要的数据和方法. 提供一种方式防止数据被修改. 更好的代码复用. 当一个类的属性类 ...

  10. asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)

    概述 本文目的是搭建三台asp.net core 集群, 并配上 nginx做负载均衡   首先准备要运行的源码 http://pan.baidu.com/s/1c20x0bA 准备三台服务器(或则虚 ...