初学nodejs连接mysql简单登陆实现
nodejs简单web开发页面交互登陆操作
最近在研究nodejs的学习,毕竟很火的一门语言,一个强大的服务器脚本语言,做了这么久的php开发,默然回头发现,java开发是那么的臃肿,不过必须承认java严格的语法是安全性高的基础,现在非常喜欢这种脚本型的语言,开发快,写的代码少,简洁,效率高,下面开始node代码之旅。
首先是安装node,去nodejs中文网就可以下载了,下载msi格式的直接带npm管理工具很方便,我的网盘下载地址http://pan.baidu.com/s/1c0lUnfE,安装之后别忘了下载git工具,git工具在windows系统上给人一种linux命令的感觉很好用,百度git就可以下载了,像现在的开发,基本都是使用git仓库在管理项目,也是必须学会的,这2样安装完毕之后,就可以开始写代码了。
我学习都是按照我自己的路线走的,东西都是在实际过程用了才会记住,最好有一个API手册,开发过程中的宝典,帮我记住了好多PHP的函数手册地址http://pan.baidu.com/s/1dDAUFzb自己去下载吧,学习总是自己在不断的问自己,这样才可以不断的提高,开始代码。
有了npm安装mysql
安装好了mysql模块之后点击node_moudle文件夹
就有了mysql的模块。
开始准备开发,把mysql模块复制到你的项目文件夹下面:我的路径
创建入口app.js文件
/**
* 引入相应的类
*/
var http = require('http');
var url = require("url");
var qs = require("querystring");
function start() {
function onRequest(request, response)
{ //获取url的路径访问,进行判断跳转不同的控制器处理。
var pathname = url.parse(request.url).pathname;
var str='';
//主界面
if(pathname == '/'){
response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
str="<h1>欢迎</h1><a href='/login'>点我登录</a>";
response.write(str);
response.end();
}
//登陆界面
if(pathname == '/login'){
str = require('./login').get(request,response);
}
//登陆处理
if(pathname == '/dologin'){
var s = require('./login');
var a="";
//接受数据
//设置request请求的数据编码。
request.setEncoding("utf8");
request.addListener("data",function(postdata){
//对表单数据进行解码
var c = decodeURIComponent(postdata);
//转换成json对象
var b = qs.parse(c);
a = b;
});
//接受完毕数据触发事件
request.addListener("end",function(){
s.deal(request,response,a);
});
}
//修改界面
if(pathname == '/modify'){
var s = require('./login');
var data = url.parse(request.url).query;
data= qs.parse(data); //转化成JSON格式数据好处理
s.dealget(request,response,data);
}
}
http.createServer(onRequest).listen(8888);
console.log("服务器启动:监听端口8888.");
}
start();
2.我的业务逻辑代码都在login.js里面,代码如下:
exports.get = function(req,res){
res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});
var str = "<form action='/dologin' method='post'>"+
"帐号:<input type ='text' name='name'><br/><br/>"+
"密码:<input type ='password' name='password'><br/><br/>"+
" <input type ='submit' value='提交'></form>";
res.write(str);
res.end();
}
exports.deal = function(req,res,data){
var mysql = require('./mysql');
var name = data.name;
var password = data.password;
var sql = "SELECT * FROM t_user WHERE name = '"+name+"' AND password = '"+password+"'";
mysql.query(sql,function(data){
showpage(req,res,data);
});
}
exports.dealget = function(req,res,data){
var mysql = require('./mysql');
var id = data.id;
var sql = "SELECT * FROM t_user WHERE id = '"+id+"'";
mysql.query(sql,function(data){
modifyview(req,res,data);
});
}
function showpage(req,res,data){
res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});
if(data != ''){
var str = "<h1>登录成功</h1>";
str+="帐号:"+data[0].name+"<br>";
str+="密码:"+data[0].password;
str+="<table border='1' width='400px'>";
str+="<tr><th>姓名</th><th>电话</th><th>年龄</th><th>操作</th></tr>";
for (var i = data.length - 1; i >= 0; i--) {
str+="<tr>";
str+="<td>"+data[i].name+"</td>";
str+="<td>"+data[i].tel+"</td>";
str+="<td>"+data[i].age+"</td>";
str+="<td><a href='/modify?id="+data[i].id+"'>修改</a></td>";
str+="</tr>";
};
str+="</tr></table>";
}else{
var str = "<h1>登录失败</h1>";
str+="<a href='/login'>返回登录</a>";
}
res.write(str);
res.end();
}
function modifyview(req,res,data){
res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});
var str = "帐号:<input name='name' value="+data[0].name+"><br>";
str = "密码:<input name='name' value="+data[0].password+"><br>";
str+="年龄:<input name='age' value="+data[0].age+"><br>";
str+="电话:<input name='age' value="+data[0].tel+"><br>";
str+="<input type='submit' onclick=javascript:alert('修改成功') value='提交'><br>";
str+="<a href='javascript:void(0)' onclick='window.history.go(-1)'>返回列表</a>";
res.write(str);
res.end();
}
3.mysql处理的文件mysql.js,说明,node框架本身是异步框架,返回数据不能直接进行return,因为会打断异步,所以只能靠回调来进行数据返回。
var mysql = require("mysql");
var connection = mysql.createConnection({
host:'localhost',
user:'root',//账号
password:'',//密码
database:'test' //数据库名字
});
connection.connect();
//查询数据
function query(sql,callback){
connection.query(sql, function(err, rows, fields) {
if (err) throw err;
callback(rows);
});
//connection.end();
}
exports.query = query;
4.自己创建test数据库,t_user表创建代码
CREATE TABLE `t_user` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`nickname` varchar(20) DEFAULT NULL,
`age` int(10) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL,
`tel` varchar(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('1', 'admin', 'admin', '系统管理员', '11', '男', '11111111111');
INSERT INTO `t_user` VALUES ('2', 'ssss', 'ssss', '管理员', '22', '女', '22222222222');
5.最后运行app.js,命令 node app.js:
成功界面:
以上就是node与数据库交互并且简单表单处理,node与页面交互很不方便,所以需要借助框架来进行web开发,下一步,会使用Epress框架来进行进一步的node开发。
更多推荐
所有评论(0)