서버에서 클라이언트로 JSON 데이터 전송하기
파라미터로 member의 id값이 오는 경우 서버에서 해당 member 데이터 가져오는 방법
- 요청 url : http://localhost:8282/project4/**t4.jsp?id=aa
- 파라미터로 id=aa를 넘김
<%@page import="net.sf.json.JSONObject"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="kr.co.seoulit.member.dto.Member"%>
<%@page import="kr.co.seoulit.member.dao.MemberDAO"%>
<%@page import="kr.co.seoulit.member.dao.MemberDAOImpl"%>
<%
MemberDAO dao=MemberDAOImpl.getInstance();
Member dto=dao.selectMember(request.getParameter("id")); //파라미터 id의 값을 Member를 조회하는 메서드에 넘김
Map<String,Object> map=new HashMap<>();
map.put("member",dto);
JSONObject json=JSONObject.fromObject(map);
out.print(json);
%>
- url에 있는 파라미터 값을 받아서 Member객체를 조회하는 쿼리문이 있는 메서드에 넘겨서 Member의 정보를 JSON형태로 받아서 출력
파라미터로 id값을 받아서 텍스트 박스에 멤버의 정보를 출력하는 방법(JSP문법에서 자바스크립트로 데이터를 넘기는 방법)
- 요청 url : http://localhost:8282/project4/t4.jsp?id=aa
- 파라미터로 id=aa를 넘김
<%@page import="net.sf.json.JSONObject"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="kr.co.seoulit.member.dto.Member"%>
<%@page import="kr.co.seoulit.member.dao.MemberDAO"%>
<%@page import="kr.co.seoulit.member.dao.MemberDAOImpl"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
MemberDAO dao=MemberDAOImpl.getInstance();
Member dto=dao.selectMember(request.getParameter("id"));
Map<String,Object> map=new HashMap<>();
map.put("member",dto);
JSONObject json=JSONObject.fromObject(map); //JSP에서 Member객체를 JSON형태로 바꿔줌
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script>
window.onload=function(){
let data=<%=json%>.member; // <%= %> 태그를 이용해서 json객체를 data 변수에 할당
document.querySelector("#id").value=data["id"]; // json의 값을 텍스트박스의 value에 넘김
document.querySelector("#pw").value=data["pw"];
document.querySelector("#addr").value=data["addr"];
document.querySelector("#tel").value=data["tel"];
}
</script>
ID : <input type="text" /><br/>
PW : <input type="text" /><br/>
ADDR : <input type="text" /><br/>
TEL : <input type="text" /><br/>
</body>
</html>
- 자바스크립트 에서는<%= %>를 이용해서 JSP에서 할당한 변수를 가지고 올 수 있다.
JSP에서 List형태의 데이터를 JSON으로 처리하는 방법
- 여러개의 Member객체를 List형태로 받아서 member의 요소를 출력
<%@page import="net.sf.json.JSONObject"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="kr.co.seoulit.member.dto.Member"%>
<%@page import="java.util.List"%>
<%@page import="kr.co.seoulit.member.dao.MemberDAO"%>
<%@page import="kr.co.seoulit.member.dao.MemberDAOImpl"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
MemberDAO dao=MemberDAOImpl.getInstance();
List<Member> list=dao.selectMemberList(); //서버에서 Member를 List형태로 받아오고
Map<String,Object> map=new HashMap<>(); //JSON형태로 변환하기 위해 Map객체 생성
map.put("list",list); //Map객체에 키값으로 "list"를 가지는 dao.selectMemberList();를 할당
JSONObject json=JSONObject.fromObject(map); //Map을 JSONObject로 바꿔줌
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script>
let data=<%=json%>; //JSONObejct를 변수 data에 할당
data.list.forEach( //data의 키를 list를 가지는 값을 forEach메서드를
member => document.write(member.id+"<br/>") //이용해서 Member객체의 id값을 출력
);
</script>
</body>
</html>
반응형