1. app.js

var express = require('express');
var app = express();
var http = require('http');
var server = http.createServer(app).listen(80);
console.log("Server is running...")

// 1. 서버 접속시 쿼리 실행해서 DB에서 데이터 읽어오기.
var mysql = require('mysql');
// npm install mysql

var connection = mysql.createConnection({
  host: 'localhost',
  port: 3308,
  user:'root',
  password: '1234',
  database: 'javascript'  // test라는 데이터베이스에 접속
});

app.get('/', function (req, res) {
  res.sendfile("view.html");
});
app.get('/home', function (req, res) {
  res.sendfile("view.html");
});
app.get('/main', function (req, res) {
  res.sendfile("view.html");
});
app.get('/inputValue', function (req, res) {
  res.sendfile("input.html");
});

var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({limit: '50mb', extended: false}));
app.use(bodyParser.json({limit: '50mb'}));



app.get('/view', function (req, res) {
  // connection.query(`select * from inputvalue`,
  connection.query(`SELECT * FROM inputvalue ORDER BY idx DESC LIMIT 1`,
    function (err, rows, fields) {
      if (err) throw err;
      res.send(rows);
    }
  );
});

app.post('/input', function (req, res) {
  var myVal = req.body.myVal;
  connection.query(`insert into inputvalue (myvalue) values('${myVal}')`,
    function (err, rows, fields) {
      if (err) throw err;
      res.send();
    }
  );
});

 

 

2. view.html (http://localhost/)

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="button" value="입력 페이지로" onclick="goToInput()"></button>
    <br><br>
    값 : <span id="result"></span>
  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
  var time = 1;  // second로 입력

  setInterval(function () {
    $.ajax({
      url : 'http://localhost/view',
      type : 'GET',
      data : {
      },
      success:function(res){   // 받아온 response는 [{Key:Value},{Key:Value},{Key:Value}]로 리스트 안에 딕셔너리 형태로 받아온다.
        // var table = res[res.length-1];
        var table = res[0];
        $('#result').html(`${table.myvalue} <br>`)
      }
    });
  }, time * 1000);

  function goToInput() {
    location.href = "/inputValue";
  }

  </script>
</html>

setInterval에 의해 주기적(1000ms->1초)으로 localhost/view(DB에 select 쿼리를 날리는 라우터)에 request를 보내고, 값을 받아와 뿌려준다.

 

 

3. input.html (http://localhost/inputValue)

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <input type="text" placeholder="서버에 입력하고 싶은것은?" id="value" style="width:200px"><br><br>
    <input type="button" value="입력!!" id="putBnt"></button>
    <input type="button" value="홈으로" onclick="goToHome()"></button>
    <br /><br />
    <span id="result"></span>
  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>

  $('#putBnt').click(function() {
    var myVal = $('#value').val();
    $.ajax({
      url : 'http://localhost/input',
      type : 'POST',
      data : {
        myVal : myVal
      },
      success:function(res) {
        alert("Success!");
      }
    });
  });

  function goToHome() {
    location.href = "/";
  }

  </script>
</html>

메인 페이지 (setInterval에 의해 1초마다 DB에 접속해 뿌려준다)

4. time.html

라우터 안 만들었다... 만들어서 실행해도 되고 파일로 실행해도 되고...

배수증가 버튼 : 클릭 3초 후 아래로 입력한 숫자의 배수씩 증가하며 출력  -> setTimeout + setInterval
타이머 버튼 : 클릭 3초 후 버튼 옆에 1초씩 1씩 증가하는 숫자 출력 -> setTimeout + setInterval
타이머 종료 : 클릭 3초 후 타이머 종료  -> clearInterval

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <!-- 배수증가 버튼 : 클릭 3초 후 아래로 입력한 숫자의 배수씩 증가하며 출력
         타이머 버튼 : 클릭 3초 후 버튼 옆에 1초씩 1씩 증가하는 숫자 출력
         타이머 종료 : 클릭 3초 후 타이머 종료 -->

    <input type="text" id="inputNumber">
    <input type="button" value="배수증가" id="tMultiple">
    <input type="button" value="타이머 시작" id="tStart">
    <input type="button" value="타이머 종료" id="tStop">
    타이머 : <span id="timer"></span>
    <br>
    출력 : <span id="result"></span>

  </body>
  <script  src="http://code.jquery.com/jquery-latest.min.js"></script>
  <script>
  console.log("start");
  var btnCount1 = 0;
  $("#tMultiple").click(function() {
    if (btnCount1 > 0) {
      alert("버튼은 1번만 눌러주세요.\n여러번 누르면 setInterval이 여러번 돌아가서 버튼 클릭을 막습니다.");
      return;
    }
    btnCount1++;
    setTimeout(function () {
      var count = 1;
      var multiplier = $("#inputNumber").val();
      setInterval(function () {
        $("#result").append("<br>" + count * multiplier);
        count += 1;
      }, 1000);
    }, 3000);
  });

  var myTimer;
  var btnCount2 = 0;
  $("#tStart").click(function() {
    if (btnCount2 > 0) {
      alert("버튼은 1번만 눌러주세요.\n여러번 누르면 setInterval이 여러번 돌아가서 버튼 클릭을 막습니다.");
      return;
    }
    btnCount2++;
    setTimeout(function () {
      var count = 0;
      myTimer = setInterval(function () {
        $("#timer").html(count);
        count += 1;
      }, 1000);
    }, 3000);
  });

  $("#tStop").click(function() {
    setTimeout(function () {
      clearInterval(myTimer);
    }, 3000);
  });

  </script>
</html>

 

 

 

DB

더보기

Database : MySQL / Database Name : javascript / Table Name : inputValue

CREATE TABLE javascript.inputvalue (
	idx INT auto_increment NOT NULL,
	myvalue varchar(100) NULL,
	CONSTRAINT inputvalue_PK PRIMARY KEY (idx)
)
ENGINE=InnoDB
DEFAULT CHARSET=utf8
COLLATE=utf8_general_ci;

 

 

+ Recent posts