nodejs进阶(5)—接收请求参数
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)—接收请求参数的更多相关文章
- SpringMVC——接收请求参数和页面传参
Spring接收请求参数: 1.使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...
- struts2视频学习笔记 11-12(动态方法调用,接收请求参数)
课时11 动态方法调用 如果Action中存在多个方法时,可以使用!+方法名调用指定方法.(不推荐使用) public String execute(){ setMsg("execute&q ...
- Struts系列笔记(6)---action接收请求参数
action接收请求参数 在web开发中,去接收请求参数来获得表单信息非常的常见,自己也总结整理了有关Struts2通过action接收请求参数的几种方法. Struts2 提供三种数据封装的方式: ...
- struts2 action接收请求参数和类型转换
1,action接收请求参数 在struts2中action是什么?(struts2是一个mvc框架) V:jsp M:action C:action ...
- Struts框架(6)---action接收请求参数
action接收请求参数 在web开发中,去接收请求参数来获得表单信息非常的常见,自己也总结整理了有关Struts2通过action接收请求参数的几种方法. Struts2 提供三种数据封装的方式: ...
- SpringMVC之接收请求参数和页面传参
1.Spring接收请求参数 1>.使用HttpServletRequest获取 @RequestMapping("/login.do") public String log ...
- action接收请求参数
一.采用基本类型接收请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能接收自动接收请求参数并赋给同名属性. action的代码: public class Pa ...
- springMVC中接收请求参数&&数据转发
### 1. 接收请求参数 #### 1.1. [不推荐] 通过HttpServletRequest获取请求参数 假设存在: <form action="handle_login.do ...
- tomcat与jetty接收请求参数的区别
[场景] 服务端点对点通知.A服务发起请求B服务,B同步返回接收成功:然后B开始处理逻辑:B处理完成后异步通知给A:A接收请求并处理,同步回写响应给B:完成. [先上代码] 服务端(接收端)代码: i ...
随机推荐
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- Java 征途:行者的地图
前段时间应因缘梳理了下自己的 Java 知识体系, 成文一篇望能帮到即将走进或正在 Java 世界跋涉的程序员们. 第一张,基础图 大约在 2003 年我开始知道 Java 的(当时还在用 Delph ...
- OpenCASCADE AIS Manipulator
OpenCASCADE AIS Manipulator eryar@163.com Abstract. OpenCASCADE7.1.0 introduces new built-in interac ...
- iOS逆向工程之KeyChain与Snoop-it
今天博客的主题是Keychain, 在本篇博客中会通过一个登陆的Demo将用户名密码存入到KeyChain中,并且查看一下KeyChain中存的是什么东西,把这些内容给导出来.当然本篇博客的重点不是如 ...
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
- 高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)
在项目开发中,尤其是企业的业务系统中,对文档的操作是非常多的,有时几乎给人一种错觉的是”这个系统似乎就是专门操作文档的“.毕竟现在的很多办公中大都是在PC端操作文档等软件,在这些庞大而繁重的业务中,单 ...
- Div Vertical Menu ver5
这个小功能,如果是算此次,已经是第5次修改了.可以从这里看到前4次:V1, http://www.cnblogs.com/insus/archive/2011/10/17/2215637.html V ...
- 2016/12/31_Python
今天学习主要内容: Python: 1.with语句(补充昨天的文件操作) 用with打开的文件在脚本结束会自动关闭,以防普通打开方式忘记关闭文件连接 语法: with open("demo ...
- css样式之超出隐藏
文本超出部分隐藏,总结两种方法. 1.单行隐藏 html代码 <div class="mi">当文字超过范围的时候,超出部分会隐藏起来.</div> css ...
- ionic第一坑——ion-slide-box坑(ion-slide分两页的坑)
ionic.views.Slider = ionic.views.View.inherit({ initialize: function (options) { . . . function setu ...