Nodejs 之express框架的应用---简单的登录界面
/** * Created by Administrator on 2016/12/29. */ "use strict"; const myexpress=require("express");//启用express框架 const app1=myexpress(); app1.configure(function(){//配置服务器信息 app1.use(myexpress.logger("dev"));//配置日志信息,要放在配置的最前面 app1.use(myexpress.errorHandler());//配置错误日志模块,express会打印错误至控制台 app1.use(myexpress.favicon(__dirname+"/public/group1/img/logo-2.png"));//配置网站logo前面的标签 app1.use(app1.router);//加了这句话后,把路由监听的方法拦截静态资源的优先级就提高在静态资源之前 app1.use(myexpress.static(__dirname+"/public/group1"));//配置加载静态资源html css js 字体等,__dirname是项目的根目录 app1.use(myexpress.bodyParser());//使用业务post处理的时候需配置的 app1.use(myexpress.methodOverride());//使用业务post处理的时候需配置-将非get请求都转换为post请求 }); app1.set("port","6060");//设置端口 app1.listen(app1.get("port"),function(){//监听端口 console.log("服务器启动了!") }); //服务器对业务的处理 app1.get("/login.do",function(request,response){//拦截get请求中的login.do,form表单提交上来的数据express就自动封装在request这个对象里面 //console.log(request.query);//这里会打印出来请求的内容 let username=request.query.username;//获取username下的值,定义let局部变量,需要使用"use strict" let pwd=request.query.password;//获取password下的值 //console.log(username+"get方法"); //console.log(pwd+"get方法"); if(username=="123"&&pwd=="123"){ response.send("<h1>登录成功</h1>"); //这里express的send等同于response.writeHead,response.write(),response.end();send只能返回字符串 }else{ response.send("<h1>登录失败</h1>") }//使用get方法在浏览器的网址末端容易看见账号和密码,所有一般建议使用post方法 }); app1.post("/login2.do",function(request,response){ console.log(request); let username1=request.body.username1; let pwd1=request.body.pwd1; console.log(username1); console.log(pwd1); if(username1=="234"&&pwd1=="234"){ response.redirect("loginIndex.html");//redirect(重定向)可以跳转至一个指定的页面 }else{ response.redirect("error.html");//也可以重定向跳转到"http://www.baidu.com" } }); app1.get("/index.html.do",function(request,response,next){ //当拦截的资源路径和action的静态路径同级的时候,action的优先级会高于拦截请求,所有它不会跳转到拦截的页面, //它不会进到这个函数,需要在服务器配置上加一点东西,这句话一定要写在配置静态资源之前 let username2=request.body.username2; let pwd2=request.body.pwd2; if(username1=="234"&&pwd1=="234"){ next();// }else{ response.redirect("error.html"); } });
下面这段配置中出现的一个小问题,****注意配置的顺序。若配置顺序出错,会造成request.body中取不到值,返回undefined.
正确的配置顺序应该是下面这样的:
const myexpress=require("express");//启用express框架
const app1=myexpress();
app1.configure(function(){//配置服务器信息
app1.use(myexpress.logger("dev"));//配置日志信息,要放在配置的最前面
app1.use(myexpress.errorHandler());//配置错误日志模块,express会打印错误至控制台
app1.use(myexpress.bodyParser());//使用业务post处理的时候需配置的
app1.use(myexpress.methodOverride());//使用业务post处理的时候需配置-将非get请求都转换为post请求
//***post处理配置是需要放在静态资源配置之前,error日志之后。且log日志配置放第一位,下来是error日志配置
app1.use(app1.router);//加了这句话后,把路由监听的方法拦截静态资源的优先级就提高在静态资源之前
//***这句话是处理get拦截的是一个静态资源
app1.use(myexpress.static(__dirname+"/public/group1"));//配置加载静态资源html css js 字体等,__dirname是项目的根目录
app1.use(myexpress.favicon(__dirname+"/public/group1/img/logo-2.png"));//配置网站logo前面的标签
});
补充之:express安装
1.给项目文件中生成package.json文件:
从shell命令行里进入项目的根目录,输入....dec29>npm init 回车后,文件夹里会生成json的文件
2.从shell命令行里进入项目的根目录,输入....dec29>npm install express@3 --save-dev 回车,等待一定时间后,就会在项目文件里生成一个
3.第2个方法是从国外的资源库中下载express,也可以将其映射到国内的资源中,使用如下方法:
从shell命令行里进入项目的根目录,输入....dec29>npm install nrm -g回车安装nrm;然后nrm;...ls ...mrn ls
4.安装mysql文件
从shell命令行里进入项目的根目录,输入....dec29>npm install mysql --save-dev回车,等待一段时间即可。