Web/Spring
Spring MVC02 - Ajax MemberList
now0204
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를 이용했을 것이다.