nodejs模块_4_express/mysql

4. express 框架

         express是基于nodejs的快速、开发、极简的web开发框架   (www.express.com.cn)

         安装  npm install express

const express=require('express'); //引入express框架

var server=express();       //创建web服务器

server.listen(8080);        //设置端口

(1)路由

         浏览器向web服务器发送请求,web服务器根据请求的方法和请求的URL来做出响应。

  三要素:请求方法、请求的URL、响应(回调函数)

         响应的对象(res)

                   res.send()   响应内容,只能响应一次

                   res.sendFile()  响应文件,必须使用绝对路径(__dirname)   res.sendFile(__dirname+'/list.html');

                   res.redirect()   响应重定向,直接跟重定向url

//get 请求的方法 

//参数1:请求的url 参数2:响应(回调函数)

server.get('/index',function(req,res){

         //req:请求的对象  res:响应的对象

         res.send('this is my homepage 首页');

});

//练习:创建路由,请求方法为get,请求url为/login。响应‘请登陆’

server.get('/login',function(req,res){

         res.send('请登陆XXXXXXXXX');

//      res.send('welcome');  send调用以后响应已经结束,不运行再次响应

})

  请求的对象(req)

                   req.method       请求的方法

                   req.url               请求的url

                   req.header       请求的头信息        

                   req.query          获取请求时查询字符串传递的数据,并格式化为对象

(2)post和get传递数据

         post请求是通过表单提交传递数据,服务器端通过事件的形式获取数据

         get请求以查询字符串的形式传递数据,服务器端使用req.query获取数据,结果是对象

                    查询字符串传递数据容易被浏览器所缓存,而post传递数据不会出现在地址栏

<form method="post" action="/postlogin">

server.post('/postlogin',function(req,res){

         req.on('data',function(buf){

         var str=buf.toString();

         var obj=querystring.parse(str);

         console.log(obj);

         });res.send('登陆成功');

});

<form method="get" action="/getlogin">

server.get('/getlogin',function(req,res){

         console.log(req.query);

         res.send('注册成功!!!');

});

req.on('data',function(buf){

  buf 就是获取的数据,格式为buffer,转为字符串后格式化为查询字符串,需要借助查询字符串模块格式化为对象

})

req.on('data',function(buf){

         //buffer转为查询字符串

         var str=buf.toString();

         //查询字符串格式化为对象

         var obj=querystring.parse(str);

         console.log(obj);

(3)使用路由传递参数——路由传参

         设置路由中接收的名称

server.get('/detail/:lid',function(req,res){

   req.params  //获取路由传参的数据,格式化为对象

})

         浏览器传递      127.0.0.1:8080/detail/5  5是传递的数据,被lid接收

(4)路由器

         路由的使用过程中,不同的模块可能出现相同的URL,把同一个模块下的路由放到一个容器,这个容器就是路由器。路由器最终要引入到web服务器下才能使用

         1.创建路由器模块(自定义)

const express=require('express');

var router=express.Router();   //创建路由器对象

router.get('/list',function(req,res){...});  /添加路由

module.exports=router;  //导出路由器对象

         2.在web服务器下使用路由器

const productRouter=require('./product.js');   //引入路由器对象

server.use('/product',productRouter);  //把路由器挂载到 /product 下

 访问形式   /product/list

练习:路由器使用

 

 

router.js

product.js

user.js

//引入express框架

const express=require('express');

//引入商品路由器

const productRouter=require('./product.js');

//引入用户路由器

const userRouter=require('./user.js');

//创建服务器

var server=express();//设置端口

server.listen(8080);

//商品模块下的路由

//使用商品路由器  挂载 --> /product/list

//参数1:挂载的位置  参数2:要使用的路由器

server.use('/product',productRouter);

//用户模块下的路由

//使用用户路由器

server.use('/user',userRouter);

//引入express

const express=require('express');

//创建空的路由器,返回对象

var prouter=express.Router();

//往路由器中添加路由

prouter.get('/list',function(req,res){

         res.send('这是商品模块下的列表*******嘻嘻嘻');

});

//导出路由器对象

module.exports=prouter;

//练习:创建用户模块路由(user.js)添加路由用户列表(/list  get),在web服务器下引入并使用,挂载到/user下

//引入express

const express=require('express');

//创建空路由器,返回对象

var urouter=express.Router();

//往路由器中添加路由

urouter.get('/list',function(req,res){

         res.send('这是用户列表*****嘎嘎嘎****');

});

//导出路由器对象

module.exports=urouter;

(5)中间件

         中间件作用是为主要的业务逻辑(路由)服务,可以理解为一个过滤器

         分类:应用级中间件、路由级中间件、内置中间件、第三方中间间、错误处理中间件

  1.应用级中间件(自定义中间件)

         每一个中间件都是一个函数,需要配合其它的中间件或者路由使用

server.use(path,function(req,res,next){.....}) 

           //过滤路由中url为path的路由

server.use(function(req,res,next){.....})

         // 过滤路由中所有的路由

use() 

参数1:给哪一个url的路由使用(如果参数1为空,标识会给所有的路由使用)

  参数2:中间件函数(回调)可以获取请求以及做出响应

  参数3:next() 会执行下一个中间件或者路由

  2.路由级中间件

          路由器的使用

server.use(path,路由器);

  //path 挂载的url ,在path下使用路由器

  3.内置中间件

         在express4中只保留了一个内置中间件(static)

server.use(express.static('目录'))

         //把静态资源托管到指定目录,如果浏览器请求静态资源,自动到该目录下查找

                   静态资源:html、css、浏览器js、图像、视频....

  4.第三方中间件

         npm install 中间件名称

         使用中间件

const bodyParser=require('body-parser');

server.use(bodyParser.urlencoded({

  extend:false

}));

路由中获取post请求数据(server.post(...))

  req.body  格式化为对象

前提:引入body-parser模块

urlencoded:将post请求的数据格式化为对象

extended:不用第三方qs模块,而是使用核心模块querystring将查询字符串格式化为对象

5.mysql模块

  连接  mysql.exe -h127.0.0.1 -P3306 -uroot -ptoot   简写:mysql -uroot

         增 INSERT INTO emp VALUES( ......)

         删 DELETE FROM emp WHERE uid=5;

         改 UPDATE emp SET .......WHERE ....

         查 SELECT * FROM emp;

(1)连接mysql

const mysql=require('mysql'); //引入mysql模块

var connection=mysql.createConnection({ ....});//创建连接对象,传递连接数据库需要的服务器、端口、用户名、密码、使用的数据库

connection.connect(); //建立连接

connection.qyery(sql,callback);

    sql:要执行的SQL语句;callback回调函数,用于获取执行SQL的结果 function(err.result){}

connection.end();  //执行完所有的SQL语句后关闭连接

(2)连接池

const mysql=require('mysql'); //引入mysql模块

var pool=mysql.createPool({ ... })  //创建连接池对象,传递服务器地址,端口,用户名,密码,要使用的数据库,连接池大小connectionLimit 默认是15

pool.query(sql,callbacl);  //执行SQL语句,sql是要执行的SQL语句,callback回调函数。用于获取结果

         占位符 ?  

var did=1;

var dname='保卫部';

// 占位符 ? 防止SQL注入攻击数据库

pool.query('INSERT INTO dept VALUES(?,?)',[did,dname],function(err,result){ .. }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值