ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring MVC02 - Ajax MemberList
    Web/Spring 2023. 6. 29. 21:49

     

    - Servlet-jsp에서 ajax를 이용해서 회원리스트 보기를 했던 것과 동일한 작업을 할 것이다.

     

     

    1. 화면 및 javascript 구성

    <tr>
      <td>
      <input type="button" value="ajax로  회원리스트 보기 " onclick="btnClick()"/>
      </td>
    </tr>
    </table>
    <div id="list" >회원리스트 출력</div>
    function btnClick(){
    	  $.ajax({
    		  
    		  url : "<c:url value='/memberAjaxList.do'/>",
    		  type : "get",
    		  dataType : "json",
    		  success : resultHtml.
    		  error : function(){alert("error");}
    		  
    	  });
      }
    function resultHtml(data){
    	  console.log(data);
    	  var html = "<tabel class='table table-bordered'>";
    	  html += " <tr>";
    	  html += "  <td>번호</td>";
    	  html += "  <td>아이디</td>";
    	  html += " <td>비밀번호</td>";
    	  html += "  <td>이름</td>";
    	  html += " <td>나이</td>";
    	  html += "  <td>이메일</td>";
    	  html += "  <td>전화번호</td>";
    	  html += " </tr>";
    	  
    	  $.each(data,function(index,obj){
    		  html += " <tr>";
    		  html += "  <td>"+obj.num+"</td>";
    		  html += "  <td>"+obj.id+"</td>";
    		  html += " <td>"+obj.pass+"</td>";
    		  html += "  <td>"+obj.name+"</td>";
    		  html += " <td>"+obj.age+"</td>";
    		  html += "  <td>"+obj.email+"</td>";
    		  html += "  <td>"+obj.phone+"</td>";
    		  html += " </tr>";
    	  })
    	  html += "</table>";
    	  $("#list").html(html);
      }

     

    2. controller 

     

    @RequestMapping("/memberAjaxList.do")
    	public @ResponseBody List<MemberVO> memberAjaxList() {
    		//@ResponseBody String view 넘기고 forward model이런거 말고 바로 객체 응답
    		List<MemberVO> list =memberMapper.memberList();
    		//응답을 $.ajax() -> callback 함수로 json pojo에선 response로 응답했음 
    		//프론트 컨트롤러로 넘기는게 아니라! 바로 ajax로 응답 @Responsebody
    		
    		return list; // Object->Json (Jackson-databind)
    	}

    - Spring에서는 ajax를 사용하기 위해 내부 api를 많이 이용한다.

    - @ResponseBody를 메서드 return 타입 앞에 붙이면,

    메서드 처리결과를 frontcontroller로 보내지 않고 객체를 바로 응답으로 내보낸다. 

    - 이때 List<MemberVO>를 json으로 만들어서 보내기 위해 

      Jackson-binder랑 Jackson-mapper api를 통해 내부적으로 처리된다.

      

    각각 mvnrepository에서 찾아서 pom.xml에 추가해두면 된다.

     

     

    -위와 같이 비교적 간단하게 할 수 있다.

    Servlet-JSP였으면, pojo에서 json으로 고친다음에 response를 이용했을 것이다. 

     

Designed by Tistory.