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 ...
随机推荐
- NodeJs之OS
OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...
- Http状态码之:301、302重定向
概念 301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一.如果可能,拥有链接编辑功能的客户端应当自动把请求的地 ...
- .NET Core全新路线图
.NET Core / ASP.NET Core 1 RTM发布两周后,社区也很积极,收到了非常多的反馈,上周五微软的scott Hunter 在dotnet团队官方博客上发布了.NET Core全新 ...
- 在Ubuntu下搭建ASP.NET 5开发环境
在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...
- 分治法求解最近对问题(c++)
#include"stdafx.h" #include<iostream> #include<cmath> #define TRUE 1 #define F ...
- C语言 · 判定数字
编写函数,判断某个给定字符是否为数字. 样例输入 9 样例输出 yes #include<stdio.h> int main(){ char c; scanf("%c" ...
- C++中的const
一,C++中const的基本知识 1.C++中const的基本概念 1.const是定义常量的关键字,表示只读,不可以修改. 2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只 ...
- ASP.NET加密和解密数据库连接字符串
大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...
- 监控 SQL Server (2005/2008) 的运行状况
Microsoft SQL Server 2005 提供了一些工具来监控数据库.方法之一是动态管理视图.动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的 ...
- 【一起学OpenFoam】01 OpenFoam的优势
CFD技术发展到今天,已经超过了大半个世纪了,已经涌现出非常多的CFD软件可供人们使用.通用商业CFD软件譬如Fluent.CFX.Star CCM+等在工业上得到了广泛的应用,另外一些专用的软件(如 ...