初学nodejs连接mysql简单登陆实现
2015-08-09 12:17
661 查看
最近在研究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文件
2.我的业务逻辑代码都在login.js里面,代码如下:
4.自己创建test数据库,t_user表创建代码
5.最后运行app.js,命令 node app.js:
成功界面:
以上就是node与数据库交互并且简单表单处理,node与页面交互很不方便,所以需要借助框架来进行web开发,下一步,会使用Epress框架来进行进一步的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 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开发。
相关文章推荐
- Mysql查找所有项目开始时间比之前项目结束时间小的项目ID
- Mysql中那些锁机制之InnoDB
- MySql
- Mysql创建新用户方法
- 【MySql】使用记录<一>
- MySQL的myisam引擎表锁优化
- MySQL参数详解及优化
- MySQL性能优化
- mysql 执行计划走分区
- 浅谈MySQL中优化sql语句查询常用的30种方法
- mysql5.6的配置文件在哪里
- Mysql中那些锁机制之MyISAM
- mac os 安装mysql
- MySql执行多条语句
- Mysql Join语法以及性能优化
- 启动mysql出现Timeout error occurred trying to start MySQL Daemon情况的解决办法
- MySQL中整数类型使用
- MySQL 数据库授权
- 源码构建MySQL服务器
- MYSQL同步Sqlserver数据库数据的方法