JS 网络编程

1.认识Nodejs

Nodejs是一个应用编程平台,能运行javascript语言编写的代码,提供了javascript运行环境,
基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
提供了大量应用编程接口API,在处理http网络、数据库、文件等操作时非常方便.

2.创建web服务器

1.创建一个服务

要开启先要创建—个服务
const http = require( " http" )
//创建—个服务
//这个服务默认监听http 协议//这个服务默认监听Localhost域名
//返回值就是这个服务
const server = http.createServer(function (request,response) {
//前端发来的每—个请求都会触发这个西数
// request包含着所有的请求信息
// response是所有的响应信息
})

2.监听一个端口

确定这个服务监听哪一个端口
const http = require( " http ' )
//创建—个服务
const server = http.createServer(function (request,response){
//前端发来的每—个请求都会触发这个函数
})
server.listen(8080function (){
//这个函数会在服务开启成功以后执行
console.log( 'listening on port 808o')
})

3.给出一个响应

简单给出—个响应
const http = require( " http ')
//创建—个服务
const server = http.createServer(function (request,response) {
//前端发来的每—个请求都会触发这个函数
//接受到请求以后给出—个响应
response.end( " hello wor1d ")
}
server.listen(8080,function (){
//这个西数会在服务开启成功以后执行
console.log( 'lintening on port 8080")
})
此时,打开浏览器
地址栏输入localhost:8080
浏览器就会响应文字hello world

4.获取url的参数

我们可以使用url.parse方法来解析URL中的参数,代码如下:实例
var http = require( ' http ');
var url = require( " url " );
var util = require( " util");
http.createServer(function(req,res){
	res.writeHead (200,{'content-Type ': 'text/plain'});
//解析url参数
var params = url.parse(req.url, true).query;
    res.write("网站名:" + params.name) ;
	res.write("\n");
	res.write("网站uRL:" + params.url) ;
    res.end( );
}).listen(3000) ;

解决乱码问题

response.writeHead(200,{'content-type':'text/html;charset=utf-8'})

解决跨域问题

//解决跨域问题
response.setHeader( ' Access-Control-Allow-origin', '*')
3.数据库

数据库的数据类型

1.数值类型

| 类型 | 大小 | 用途 |
| ------ | ------ | ------ |
| TINYINT | 1 字节 | 小整数值 |
| SMALLINT | 2 字节 | 大整数值 |
| MEDIUMINT | 3 字节 | 大整数值 |
| INT或INTEGER | 4 字节 | 大整数值 |
| BIGINT | 8 字节 | 极大整数值 |
| FLOAT | 4 字节 | 单精度 浮点数值 |
| DOUBLE | 8 字节 | 双精度 浮点数值 |
| DECIMAL |  | 小数值 |

2.日期和时间类型

| 类型 | 格式 | 用途 |
| ------ | ------ | ------ |
| DATE | YYYY-MM-DD | 日期值 |
| TIME | HH:MM:SS | 时间值或持续时间 |
| YEAR | YYYY | 年份值 |
| DATETIME | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| TIMESTAMP | YYYYMMDD HHMMSS | 时间戳 |

3.字符串类型

 类型 | 大小 | 用途 |
| ------ | ------ | ------ |
| CHAR | 0-255字节 | 定长字符串 |
| VARCHAR | 0-65535 字节 | 变长字符串 |
| TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 |
| TINYTEXT | 0-255字节 | 短文本字符串 |
| BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
| TEXT | 0-65 535字节 | 长文本数据 |
| MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
| MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
| LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
| LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |

SQL SELECT语句:用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。
SQL SELECT语法:
SELECT 列名1,列名2FROM表名称以及:
SELECT*FROM表名称
注释:SOL语句对大小写不敏感。SELECT等效于select。

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

DELETE FROM 表名称 WHERE 列名称 = 值

实例

let mysql = require("mysql");
//创建数据库连接对象
let connection = mysql.createConnection(
    {
       host:"localhost",
       user:"root",
       password:"b123",
       database:"ex1db"
    }
);
 
connection.connect(); //打开数据库连接 
 
//执行sql查询
let sql = 
"SELECT e_no,e_name,e_sex,dept_no,e_salary,e_job,hire_date FROM employee";
connection.query(sql,function(err,data){
  if(err){
     console.log("数据库操作出错"+err);
     return;
    } 
   console.log("姓名\t性别\t 薪酬\t工作" );
   for(vari = 0; i<data.length; i++){
       console.log(data[i].e_name +"\t"+ data[i].e_sex +"\t"+ data[i].e_salary+ "\t" + data[i].e_job );
    }
});
 
connection.end(); //关闭数据库连接

结合http模块案例

const http = require('http') // 引入内置http模块
const mysql = require('mysql')
// 创建web服务器
let server = http.createServer(function (request, response) {
  //==== 1. 接收请求====
 
  // 解决跨域问题
  response.setHeader('Access-Control-Allow-Origin', '*')
  //解决中文乱码问题
  response.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' })
 
  //===== 2. 处理业务逻辑====
  let path = request.url
  if (path.indexOf('/login') !== -1) {
    let loginStr = `
        <h2>登录界面</h2>
        <form>
           <input type='text' name='username'/><br/>
           <input type='password' name='password'/><br/>
           <input type='submit' value='登录'/>
        </form>
        `
    response.write(loginStr)
    response.end() //结束写数据响应用已经写入的数据
  } else if (path.indexOf('/list') !== -1) {
    executeSql(function (result) {
      console.log(result)
      let tabeStr = JSON.stringify(result)
      response.write(tabeStr)
      response.end() //结束写数据响应用已经写入的数据
    })
  } else {
    response.write('<h2>主界面</h2>')
    response.end() //结束写数据响应用已经写入的数据
  }
 
  //====== 3. 响应用数据======
})
 
// 启动web服务器
server.listen(8081, function () {
  console.log('服务器启动成功,监听8080端口!')
})
 
function executeSql(callback) {
  let connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'b123',
    database: 'mydb'
  })
 
  // 3. 建立连接
  connection.connect()
 
  // 4. 执行sql语句
  connection.query('SELECT * FROM student', function (error, result) {
    if (error) {
      console.log('数据库操作出错')
      return
    }
    callback(result)
  })
  // 5. 关闭连接
  connection.end()
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值