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,后边的域名可以随意添加,可以添加多个,都可以生效

猜你喜欢

转载自blog.csdn.net/weixin_49524462/article/details/107620917