大学入学的时候才开始接触编程,在这学期的Web编程课程大作业中,选择了树莓派上的Node.JS开发项目,想要锻炼下自己,结果确实感觉到有些力不从心,深刻感受到自己的自学能力还有所不足,在开始这个项目的时候并不确定自己能否将大部分功能完成,只好将自己学习过程中成功,失败的经历展示出来。
由于对于硬件方面的处理实在是不太开窍,先在windows将前后端稍微处理了一下。
页面较简陋,具体的思路为选择身份(教师or学生)---->选择操作(登录or注册)
根据登录身份的不同,将调用不同的数据库,本实验项目中以Mysql为数据库。(主要是上个实验项目也使用了Mysql,所以并没有考虑使用MongoDB搭配Node.JS)
Identity | Name | Password |
---|---|---|
char(20):teacher or student | char(20) :to be defined | char(20): to be defined |
建表语句如下:
```CREATE TABLE students
(
identity
varchar(20) DEFAULT NULL,
name
varchar(20) DEFAULT NULL,
pwd
varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
具体和上一个大作业连接数据库方式相同,引包+连接
var mysql=require('mysql');
var connection = mysql.createConnection({
host:'localhost',
port:'3306',
user:'root',
password:'root',
database:'smp'
})
//将相关数据写入
var query1 = "select * from students where name='"+name+"' and pwd='"+pwd+"'"
connection.query(query1,function(err,result){
if (err) throw err;
console.log("!!!",result)
if(result.length==0){
res.send("用户名或密码错误")
}else{
res.send("登录成功,同学好!"
)}
})``
var express=require('express')
var path = require('path')
const bodyParser = require('body-parser');
var router = require('./router.js')
var app = express()
app.use(bodyParser.urlencoded({
extended:false}))
app.use(bodyParser.json())
app.use('/node_modules/',express.static(path.join(__dirname,'./node_modules/')))
app.engine('html',require('express-art-template'))
app.set('views',path.join(__dirname,'./views/'))
app.use(router)
app.listen(3030,function(){
console.log('running');
})
主要为建立服务器,引一系列以支持获取get post请求参数的技术
~~~var express=require('express');
var router=express.Router()
var app=express();
var ejs=require('ejs')
app.engine('.html',ejs.__express);
app.set('view engine','html')//支持加载html文件
var bodyParser=require('body-parser')
var mysql=require('mysql');
var connection = mysql.createConnection({
host:'localhost',
port:'3306',
user:'root',
password:'root',
database:'smp'
})
router.get('/register',function(req,res){
res.render('register.html')
})
router.post('/register',function(req,res){
console.log(req.body);
var identity='student';
var name=req.body.name;
var pwd=req.body.pwd;
var user=[identity,name,pwd];
var query1 = 'insert into students(identity,name,pwd) values(?,?,?)';
connection.query(query1,user,function(err,result){
if(err) throw err;
console.log("***")
res.render("login.html")
})
})
注册功能运用了get post请求向用户展示指定页面,并将表单提供的数据添加至数据库
登录功能则将表单提供数据与数据库数据对比,查找成功则登陆成功,失败则返回:用户名或密码错误
所有代码列表如上图
由于之前对于web前后端一窍不通,努力学习了下express包的相关功能将简陋的登录与注册功能实现,对于接下来的一些功能,我也将尽力进行完善。
这次大作业对于我而言确实十分具有挑战性,虽然实验项目的进展不是很理想,但对我的学习能力以及实践能力确实有了不少的帮助。