赞
踩
文件夹结构:
数据库结构:
html结构:
<form action="/login.do" method="post">
用户名:<input name="userName" type="text">
密 码:<input name="pwd" type="password">
<button>提交</button>
</form>
<h1>注册</h1>
<form action="/register.do" method="post">
用户名:<input name="userName" type="text">
密 码:<input name="pwd" type="password">
<button>提交</button>
</form>
1.配置服务器入口文件
// A.下载express模块:npm install express@4 -s const myexpress=require("express"); // B.下载morgan模块:npm install morgan -s const logger=require("morgan"); // C.下载解析post值的模块:npm install body-parser -s const bodyParser=require("body-parser"); // 下载小图标模块:npm install serve-favicon -s const favicon=require("serve-favicon") const route=require("./routers/indexRouter") //D.创建服务器 const myapp=myexpress(); //配置服务器 // 1.打印日志 myapp.use(logger("dev")); // 2.解析post方法 myapp.use(bodyParser.urlencoded({extended:false}));//配置post的body模块 myapp.use(bodyParser.json())//将数据转换成json // 3.使用路由,分发任务 myapp.use(route);//进入路由文件夹 // 4.配置静态资源 myapp.use(myexpress.static(__dirname+"/src"))//拦截请求 // 5.配置网页小icon myapp.use(favicon(__dirname+"/src/images/logo.jpg")) //当发生404页面错误的时候返回一个404文件 myapp.use(function (req,resp) { resp.status(404); resp.redirect("/page/404.html")//重定向 }) // E.侦听 myapp.listen("8888",()=>{ console.log("day3-express服务器启动") })
2.配置路由文件
//使用提供的路由模块
const express=require("express");
const router=express.Router();//创建路由模块
const userCtrl=require("../controller/userCtrl")
//拦截请求
// router.get("/login.do",userCtrl.userLogin)//默认将req,resp传给函数userLogin
router.post("/login.do",userCtrl.userLogin)//拦截登录请求
router.post("/register.do",userCtrl.registerUser)//拦截注册请求
module.exports=router;//公开路由对象
3.配置控制文件
const dbDao=require("../dao/userDao") //控制所有用户相关的东西 module.exports={ userLogin(req,resp) { //get方法 /* let userName=req.query.userName;//userName是表单中用户名的name属性值 let pwd=req.query.pwd;//pwd是表单中密码的name属性值*/ //post方法 let userName=req.body.userName; let pwd=req.body.pwd; let loginArr=[userName,pwd]; dbDao.selectUser(loginArr,function (err,data) {//err:获取数据操作的错误信息 if(data.length>0){ resp.redirect("/page/nav.html")//重定向 }else{ resp.redirect("/index.html")//重定向 } }) }, registerUser(req,resp){ let username=req.body.userName; let pwd=req.body.pwd; let regisArr=[username,pwd]; //调用数据持久层,只操作数据 dbDao.addUser(regisArr,function (err,data) {//err:获取数据操作的错误信息 if(data){ resp.send("注册成功") }else{ resp.send("注册失败") } }) } }
4.数据库操作方法
//对数据库进行操作 const myPool=require("../config/mysqlpool") module.exports={ //查询数据操作 selectUser(arr,cb){ //使用数据库连接池来查询数据 myPool.connect("SELECT s_name FROM students WHERE s_name=? AND s_pwd=?",arr,function (err,data) {//使用问号+数组的方式,能够防止sql注入 cb(err,data) }) }, //增加数据操作 addUser(arr,cb){ //使用数据库连接池来添加数据 myPool.connect("insert into students values(null,?,?)",arr,function (err,data) {//使用问号+数组的方式,能够防止sql注入 cb(err,data) }) } }
5.连接数据库,进行相应的数据库操作,返回对应信息
//连接数据库,下载node-mysql模块:npm install mysql -s const mysql=require("mysql"); const poolCig={ host:"localhost",//ip地址 port:"3306",//端口号 user:"root",//用户名 password:null,//密码 database:"mylogin"//数据库名 } const dbPool={ pool:{}, create(){ // 1.创建数据库连接池 this.pool=mysql.createPool(poolCig) }, connect(sql,arr,fun){ // 2.通过连接池对象发起连接 this.pool.getConnection(function (err,connection) {//err:获取连接对象的错误信息 // 3.操作数据库 connection.query(sql,arr,fun) connection.release();//关闭连接 }) } } dbPool.create() module.exports=dbPool
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。