nodejs 使用express框架搭建服务器并连接mysql数据库并进行简单的登陆、注册验证

express简介

  • express是一个简介而灵活的 nodejs Web应用框架,提供了一系列强大特性帮助创建各种Web应用,和丰富的HTTP工具
  • 使用expree框架需要用的模块
    1. express 框架
    2. ejs 模板模块
    3. body-parser 模块
    4. mysql 模块
    5. cookie-parser 模块

创建 mysql 模块

// 引入第三方数据库模块
var mysql = require('mysql');
// 创建数据库连接
var connection = mysql.createConncetion({
    host: 'localhost',  // 连接域名
    port: '3306',   // 端口号
    user: 'root',   // 超级管理员
    password: '123456', // 管理员密码
    database: 'test'    // 要连接的数据库名
});
// 导出模块
exports.db = connection;

创建路由模块

// 引入express框架(模块)
var express = require('express');
// 引入ejs模板模块
var ejs = require('ejs');
// 引入body-parser中间件,用来解析post提交的数据
var bodyparser = require('body-parser');
// 导入cookie
var cookieParser = require('cookie-parser');

// 导入数据库模块,利用解构赋值(ES6)的方式,此处写数据库的路径
var { db } = require('./database/db');

// 定义用body-parser中间解析数据的类型;
// false,解析String 和 Array类型; true,解析全部类型;建议专项专制,避免耗费性能
var bodyurlencoded = bodyparser.urlencoded({extended: false});

// 连接数据库
db.connect();

// express框架为一个函数,所以需要调用
var app = express();

// 使用cookie中间件
app.use(cookieParser());

// 设置静态文件目录(可以更改)
app.use(express.static('static'));

// 设置模板引擎渲染html页面,第二个参数是说明用ejs的表达式来渲染html文件
app.engine('html', ejs.__express);

// 设置渲染引擎为渲染html文件
app.set('view engine', 'html');

// 修改视图默认识别的文件夹,默认是views
app.set('views', __dirname + '/新文件夹名');

// 创建响应的路由

// 输入域名,默认进入首页
app.get('/', function (req, res) {
    // res.render是一个渲染函数 第一个参数是要渲染的页面 第二个参数是要传入页面的数据
    // req.cookies 获取cookies的所有信息,结果为一个对象
    res.render('index', {userInfo: req.cookies.name});
});

// 进入登陆页面
app.get('/login'), function (req, res) {
    res.render('login', {});
}

// 登陆成功后,带着用户名回到首页
app.post('index', bodyurlencoded, function (req, res) {
    if(req.body.username === '') {
        res.send('用户名不能为空');
    }else if(req.body.password === ''){
        res.send('密码不能为空');
    }else {
        // 创建sql语句,用于查询数据库
        var sql = `select * from users where account=${req.body.username}`;
        // 查询数据库的方法
        db.query(sql, function (err, data) {
            if(err){
                console.log(err)
            }else{
                if(data.length === 0){
                    res.send('用户名不存在');
                }else if(data[0].password !== req.body.password){
                    res.send('账号或密码错误');
                }else{
                    // 存储用户名至cookie
                    res.cookie('name', req.body.username);
                    res.render('index', {
                        userInfo: data[0]
                    });
                }
            }
        });
    }
});

// 进入注册页面
app.get('register', function (req, res) {
    res.render('register', {});
});

// 注册成功,返回登陆界面
app.post('/login', bodyurlencoded, function (req, res) {
    if(req.body.password !== req.body.password1){
        res.send('两次密码不一样');
    }else {
        // 查找数据库是否存在同名的用户名,如果有,返回用户名已存在
        var sql1 = `select * from user where account=${req.body.username}`;
        db.query(sql1, function (err, data) {
            if(err){
                console.log(err);
            }else {
                if(data.length > 0){
                    res.send('用户名已存在');
                }else{
                    // 向数据库添加数据
                    var sql2 = `insert into users (account, password) value (${req.body.username}, ${req.body,password})`;
                    db.query(sql2, function (err, data) {
                        if(err){
                            console.log(err)
                        }else{
                            res.render('login', {});
                        }
                    });
                }
            }
        });
    }
});


// 导出模块
module.exports = {
    app
}

创建服务器启动模块

// 引入路由模块,此处写路由模块路径
var { app } = require('./router');
// 启动服务器,第一个参数是端口
app.listen(8080, function () {
    // 此处只是提示服务器运行成功
    console.log('server is running');
});

修改默认域名

  • 找到 C:\Windows\System32\drivers\etc 该路径下的hosts文件
  • 在文件内添加 127.0.0.1 www.feng.com,后边的域名可以随意添加,可以添加多个,都可以生效
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值