nodejs进阶(5)—接收参数

1. get请求参数接收

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

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

 1 //----------------6_param------------------------------------      
 2 var http = require(‘http‘);                          
 3 var url = require(‘url‘);          
 4 var router = require(‘./router‘);        
 5 http.createServer(function (request, response) {                          
 6     if(request.url!=="/favicon.ico"){  //清除第2此访问              
 7         var rdata  =  url.parse(request.url,true).query;   //获取参数
 8         if(rdata[‘keyword‘]!=undefined){  
 9             console.log(rdata[‘keyword‘]);      
10         }       
11         console.log("server执行完毕");   
12         response.end();  
13     }                          
14 }).listen(8000);                          
15 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请求

 1 <html>
 2 <head>
 3 </head>
 4 <body>
 5 登录:
 6 <p>这是一个段落</p>
 7 <h1>样式1</h1>
 8 <form action="/submitLogin" method="post">
 9 用户名:<input value="" name="name">
10 密码:<input value=""  name="pwd">
11 <input type="submit" value="提交">
12 </form>
13 <!--img src="./showImg"></img-->
14 </body>
15 <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"

 1 //-----------------router.js--------------------------------
 2 var file = require(‘./models/file‘);
 3 var  url  =  require(‘url‘);      
 4 var  querystring  =  require(‘querystring‘);  //post需导入     
 5 module.exports={
 6     login:function(req,res){
 7         res.writeHead(200,  {‘Content-Type‘:‘text/html‘});    
 8         var data  =  file.readfileSync(‘./views/login.html‘);      
 9         res.write(data);  
10         res.end();      
11     },
12     register:function(req,res){
13         var data=file.readfileSync(‘./views/register.html‘);//使用同步读取
14         res.write(data);
15         res.end();
16     },
17     showImg:function(req,res){
18         file.readImg(‘./imgs/dog.jpg‘,res);//使用同步读取
19     },
20     submitLogin:function(req,res){
21         var  post  =  ‘‘;  //定义了一个post变量,用于暂存请求体的信息      
22         req.on(‘data‘,  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中      
23             post  +=  chunk;      
24         });      
25         //-------注意异步-------------      
26         req.on(‘end‘,  function(){   //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。      
27             post  =  querystring.parse(post);      
28             console.log(‘name:‘+post[‘name‘]+‘\n‘);        
29             console.log(‘pwd:‘+post[‘pwd‘]+‘\n‘);
30             if(post[‘name‘]=="fff"&&post[‘pwd‘]=="123"){//简单写登录成功的匹配
31                 res.write("登录成功!")
32             }else{
33                 res.write("用户名密码不正确")
34             }
35             res.end();  
36         });    
37     }
38 } 

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

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

时间: 2024-10-26 00:28:04

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

nodejs进阶3-路由处理

1. 路由选择过程 处理不同的HTTP请求在我们的代码中是一个不同的部分,叫做“路由选择”. 那么,我们接下来就创造一个叫做 路由 的模块吧.我们需要查看HTTP请求,从中提取出请求的URL以及GET/POST参数. url.parse(string).query | url.parse(string).pathname | | | | | ------ ------------------- http://localhost:8888/start?foo=bar&hello=world ---

Struts2中Action接收参数的方法主要有以下三种:

Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式):     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=jim: 2.使用DomainModel接收参数:     a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法

Spring MVC 之请求处理方法可接收参数(二)

请求处理方法可接收参数 今天学习了前三个方法. 1.作用域对象2.单个表单提交数据3.表单数据封装的Bean对象 首先创建一个实体对象. 1 package com.cy.springannotation.entity; 2 /** 3 * 定义一个表单实体类 4 * @author acer 5 * 6 */ 7 public class UserBean { 8 //要求属性名必须要和表单的参数名一样的! 9 private String username; 10 private Strin

Request 接收参数乱码原理解析二:浏览器端编码原理

上一篇<Request 接收参数乱码原理解析一:服务器端解码原理>,分析了服务器端解码的过程,那么浏览器是根据什么编码的呢? 1. 浏览器解码 浏览器根据服务器页面响应Header中的“Content-Type: text/html; charset=gb2312”解码.修改web.config中“responseEncoding=utf-8”,发现服务器页面响应Header变成了“Content-Type: text/html; charset=utf8”. <system.web&g

处理request接收参数的中文乱码的问题:

? POST的解决方案: * POST的参数在请求体中,直接到达后台的Servlet.数据封装到Servlet中的request中.request也有一个缓冲区.request的缓冲区也是ISO-8859-1编码. * 设置request的缓冲区的编码: * request.setCharacterEncoding("UTF-8");  --- 一定要在接收参数之前设置编码就OK. ? GET的解决方案: * 1.修改tomcat的字符集的编码.(不推荐) * 2.使用URLEncod

Struts2中Action接收参数的方法

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=Magci: 2.使用DomainModel接收参数:   

Struts2 DomainModel、ModelDriven接收参数

一.DomainModel(域模型) 1. 应用场景:一般我们在struts2的action中接收参数通常是如下方式 package cn.orlion.user; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport{ private String username; private String password; public String getUsernam

Struts中Action三种接收参数的方式?

前言: 前面已经有一篇随笔介绍了Struts2的大概原理.本文就Struts2中Action与jsp页面进行数据对接时介绍几种常见方法! 值栈ValueStack 3个Action Action1 package com.gdufe.action; import com.opensymphony.xwork2.ActionSupport; /* * Action接收参数之后通过set方法赋给普通变量age,name; */ public class UserAction1 extends Act

函数接收参数并弹出

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-