nodejs——中间件/get post/body-parser(第三方插件获取post传值)/cookie(写入缓存插件)

在这里插入图片描述
安装ejs express
新建app.js
在这里插入图片描述
新建index.ejs
在这里插入图片描述
渲染
在这里插入图片描述
传递数据
在这里插入图片描述
配置中间件
在这里插入图片描述
配置login界面 login.ejs
在这里插入图片描述
在这里插入图片描述
路由级中间件
在这里插入图片描述
应用级中间件 路由级中间件 写在路由之前
错误级中间件
新建error.ejs
在这里插入图片描述
regist不存在
在这里插入图片描述
写错误日志
在这里插入图片描述

在这里插入图片描述
get路由传值
在这里插入图片描述
在这里插入图片描述
post路由传值
在index.ejs写一个表单
在这里插入图片描述
在这里插入图片描述
获取post提交的值 在success.ejs上绑定name
在这里插入图片描述
在express框架中使用第三方中间件获取post提交的值
安装 body-parser
引入body-parser配置
在这里插入图片描述
在这里插入图片描述
写入缓存的中间件 cookie-parser
安装 cookie-parser
cnpm install cookie-parser --save
引入 配置 cookie-parser
"abcdef…"为加密
在这里插入图片描述
get cookie 加s
在这里插入图片描述
在这里插入图片描述
在有效期之内读取cookie 可以读到 超时就没有了 时间限制maxage
未签名的获取方式与签名的获取方式(签名=加密)
在这里插入图片描述
app.js

/* 
express
*/
var express = require("express")
var ejs = require("ejs")
var fs = require("fs");
var url=require("url")
var app = new express();


var bodyParser=require("body-parser")
//配置express  框架使用body-parser
//解析application / x-www-form-urlencoded  当前的编码格式
app.use(bodyParser.urlencoded({ extended: false }))
//解析为json
app.use(bodyParser.json())

var cookie=require("cookie-parser");
//配置给express框架
app.use(cookie("abcdefg"));



//设置express  使用ejs模板引擎
app.set("view engine", "ejs"); //--可以修改文件后缀
//配置当前框架的静态资源文件
//use  为express 框架的中间件
app.use(express.static("static"));
//app.use("public",express.static("static"));
//配置应用级中间件
app.use(function (err, req, res, next) {
    if (err) {
        next(err);
    }
    else {
        console.log("我是应用级中间件");
        next();
    }
});

//路由级中间件  在执行当前路由之前做相关处理


app.use("/", function (req, res, next) {
    console.log("我是首页中间件");
    next();
});
app.get("/", function (req, res) {
    res.render("index", {
        list: "首页"
    }, function (err, str) {
        res.send(str);
    });
});
app.use("/login", function (req, res, next) {
    console.log("我是login中间件");
    next();
});
app.get("/login/:id", function (req, res) {
    //接收路由动态传值
    console.log(req.params);
    res.render("login", function (err, str) {
        res.send(str);
    });
});

app.get("/regest", function (req, res, next) {
    //接收路由get传值
    console.log(req.query);
    res.send("regest");
    /* fs.readFile("./data.txt",function (err,data){
        if(err)
        {
            next(err);
        }
        res.send(data);
    }); */
});

/* 
post路由接收传值


在express框架中使用第三方中间件去获取post 提交的值
body-parser  

cnpm install body-parser --save

使用body-parser   var bodyParser = require('body-parser')
*/
app.post("/userlogin", function (req, res, next) {
    //之前写法监听
    /* var result = "?";
    req.on("data", function (s) {
        result += s;
    });
    req.on("end", function () {
        console.log(url.parse(result,true).query.username);
        var name=url.parse(result,true).query.username;
        res.render("success",{
            name:name
        });
    }); */
    // 在使用第三方中间件body-parser  获取post提交数据 直接使用req.body  就可以获取到json数据
    console.log(req.body);
    res.render("success");
});

//第三方中间件  cookie-parser
//1. 安装cookie-parser    cnpm install cookie-parser --save

app.get("/setcookie",function (req,res){
    //设置cookie  以及有效期  maxAge:事件   signed:true  设置签名
    res.cookie("user","maodou",{maxAge:10000,signed:true});
    res.send("设置cookie成功!");
});
app.get("/getcookie",function (req,res){
    //获取cookie
    //未加密的获取方式
    //var user=req.cookies.user;
    //加密的获取方式
    var user=req.signedCookies.user;
    console.log(user);
    res.send("读取cookie成功!");
})

//MD5  单向加密     js-base64  可以加密可以解密
/* 
Base64.encode('小飼弾');    // 5bCP6aO85by+
 
Base64.decode('ZGFua29nYWk='); 
*/
//当前路由不存在渲染404页面出去
app.use(function (req, res, next) {
    res.status(404).render("error");
});

//错误级中间件   是在项目里面出现错误的时候执行中间件
app.use(function (err, req, res, next) {
    console.log(err.stack);//报错错误的状态码  以及错误
    fs.appendFile("./error/error.txt", err.stack + "\n", function (error) {
        if (err) {
            next(error);
            return;
        }
        console.log("追加成功!");

    })
    console.log("我是错误中间件");
    res.status(404).render("error");
});
app.listen(8100);

index.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>
        我是<%=list%>
    </div>
    <form method="post" action="/userlogin">
        <ul>
            <li>姓名:<input type="text" name="username"></li>
            <li><input type="submit"></li>
        </ul>
    </form>
</body>
</html>
发布了75 篇原创文章 · 获赞 0 · 访问量 3403

猜你喜欢

转载自blog.csdn.net/E_ISOLATE/article/details/99543554