본문 바로가기
JSP Servlet

비동기식페이지(JQuery,Ajax,JSON)

by noddu 2021. 2. 8.
728x90
반응형

RIA(Rich Internet Application) - 웹을 어플처럼 하는 기술

 

 

jQuery - 자바스크립트 라이브러리(많은함수들이 있다. Ajax ) 

                                      ${ } - 선택자 (JSP표현언어, EL)

 

 Ajax - 비동기식 자바스크립트와 xml

 

javascript쓰는이유  -  window - DOM - tree구조(검색을(찾기) 쉽게하기위해)

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	function go(msg) {
	//alert(msg+" javascript~~");
	//window.open("aaa.html","","width=300,height=300");
	document.getElementById("result").innerHTML="<font color='red'>"+msg+"JavaScript!!!</font>";
	}

</script>
</head>
<body>
<input type="button" value="회원리스트보기" onclick="go('Hello')"/>
<hr>
<div id="result"> 여기에 리스트를 출력 </div>
</body>
</html>

document.getElementById( result ); - id찾아가기 메소드 (여기서는 result라는 id)
.innerHTML=msg + "JavaScript~" ;     -   data넣기 (여기서는 JavaScript라는 data)

 

 

jQuery를 연결해서 사용해야함


CDN방법 -연결해서사용(code로연결)


$(document).ready(); - body가 나오면 ready도바로실행

 


익명함수(함수이름x)
$(document).ready(function(){
                                 alert("jQuery start!!");

준비(ready)되면 바로       문장 ▲ 실행(여기가 시작지점)

 

 

★★★★★JSON - 데이터포멧만들어서 주고받는것

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<title>Insert title here</title>
<script type="text/javascript">
$(document).ready(()=>{

    $("#btn").click(()=>{
        var led = $("#su").val();
        $.ajax({
            url : "ajax.do", //AjaxController
            type : "get",
            dataType : "json",
            data : { "led" : led },

            //success : function(data){

            success : (data) => {

                $("#msg").html(data.sensor+" : "+data.on);

                //$("#msg").html(data);

                if(data.on == 1) {
                    $("#led").html("<img src='images/on.JPG' >");
                } else {
                    $("#led").html("<img src='images/off.JPG' >");
                }
            },

            //error : function() {

            error : () => {
                alert('실패');

            }

        });

    });

});
</script>
</head>
<body>
LED상태 제어: <input type="text" id="su"/>
<input type="button" value="LED_ON_OFF" id = "btn"/>
<div class="msg"></div>
<div id="led"></div>
</body>
</html>

ajax01.html    비동기식으로

 

 

 

 

package kr.smhrd.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/ajax.do")
public class AjaxController extends HttpServlet {

  
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//System.out.println("OK");
			//PrintWriter out = response.getWriter();
			//out.println("-server data-");
		//System.out.println("OK);
		// sensor : led
		// on : 1
		// JSON API
		int su = Integer.parseInt(request.getParameter("led"));
		String led="{\"sensor\":\"led\",\"on\":"+su+"}";
		response.setContentType("text/json");
		PrintWriter out = response.getWriter();
		out.println(led); //-----> ajax() : success
	}

}

AjaxController

 

0번누를때

 

1번누를때

 

 

int를 사용해서 int타입이 아닌것으로 눌렀을때

 

반응형

'JSP Servlet' 카테고리의 다른 글

MyBatis API 활용  (0) 2021.02.08
비동기식페이지2(JSON , Ajax)  (0) 2021.02.08
회원관리 MVC2+HandlerMapping+JSTL  (0) 2021.02.08
회원관리 MVC2(forward+FrontController)  (0) 2021.02.08
회원관리 MVC2(forward)  (0) 2021.02.08