Json function, ajax 사용하는 법

728x90

Json형식의 데이터 전달 방법을 사용하는 목적 

데이터를 xml로 사용하지 않고 Json의 형식으로 사용하므로써 각 Parameter가 가지고 있는 값을 가독성있게 전달할 수 있고, 전송하는 데이터의 크기를 줄여 불필요한 데이터 소모를 막는다.

 

Jason을 사용하기 전에 JQuery를 라이브러리를 먼저 아래와 같이 head안에 입력해야 JavaScript의 언어를 사용할 수 있다.

<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>

function과 ajax 코드 설명

로그인 페이지부터 설명

<title>로그인 페이지</title>

<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script type="text/javascript"> //스크립트태그을 사용해 javascript를 text 형식으로 바꿔 주는 형식으로 변환

	function login() { 
    //아래 form의 onsubmit을 통해 login()이라는 함수가 input을 통해 작동되면 전송된 모든 데이터를
		var serData = $('#loginForm').serialize();
    //serData라는 객체에 loginForm의 form의 모든 데이터에 담는다.
		
		$.ajax({ // 전송된 모든 데이터를 보낼 때 ajax를 사용하며 앞의 달러와 .을 꼭 넣을 것
			data : serData, //보낼 데이터는 serData이고
			dataType: 'text', //txt 타입으로 보내고
			cashe: false, //캐시는 저장하지 않도록 하고
			url: '/DemoPractice2_LogInCRUD/login', //데이터를 처리할 url로 데이터전송
			success: function(res) { //데이터를 무사히 처리하여 값을 받았다면 res라는 이름으로 데이터 관리
				var resObj = JSON.parse(res); //받은 res데이터를 JSON형식으로 parse한다.
				if(resObj){ 그 JSON데이터로 받은 값이 true라면
					alert('로그인 성공'); //로그인 성공
				}
				else{
					alert('로그인 실패');
				}
			},
		});
		return false; //false의 의미는 데이터의 전송, ajax와 상관없이 페이지의 갱신을 막아 다음 페이지로 이동하는 것을 막는다.
	}
</script>

</head>
<body>
<form id = "loginForm" action="login" method="post" onsubmit='return login();'>
	<input type="hidden" name = "cmd" value = "check">

 

받은 데이터를 명시되 있는 아래 페이지로 보내서 값을 돌려받는다.

		if(cmd.equals("check")) {
			String id = request.getParameter("id");
			String pw = request.getParameter("pw");
			
			List<UserVO> list = dao.getList(); //데이터 확인해서
			
			boolean result = dao.findinfo(list, id, pw); //그 데이터중 id랑 패스워드가 일치하면 true 반환
			request.setAttribute("result", result);
			return "/loginResult.jsp";
		}
		return "";
<%@ page contentType="application/json; charset=utf-8" pageEncoding="utf-8"%>
//주의할 점은 contentTypedl json에서 application 형태로 받는 것과

    <%  boolean result = (Boolean)request.getAttribute("result");
    	String jsonStr = (String.format("%s",result)); %>
        //string형태로 저장해서 result만 아래와 같이 출력한다.
    <%=jsonStr %>

 

위의 값이 true 가 나오면 페이지를 이동하지 않고 알람만 전송해 로그인 기능을 수행한다.

 

728x90