Ajax에서 servlet 접근해서 데이터 가져오기

 

배워 놓고도 너무 어려워서 참고용으로 코드만 업로드 하겠다...

 

Ajax 예제

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>

<button type="button">클릭</button>
<!-- html의 Ajax에서 서블릿 접근해서 데이터 가져오기 -->
<script type="text/javascript">
$(function() {
	$("button").click(function() {
		$.ajax({
			url : "./hello",  // ./ 현재경로표시
			type : "get",
		//	data : "id=abc&pwd=123",
			data : { id:"ABC", pwd:"456"}, // 이 값을 가지고 servlet으로 간다.
			
		// 매우중요!!	
			success : function(data) { // Ajax 목적 : data를 얻기 위함
		//		alert('success');
		//		alert(data);
		//		alert(JSON.stringify(data));// 날린 데이터 확인
		
		//  1개 데이터
		//		alert(data.str); 
		
		// 	여러개 데이터
		//		alert(data.map.title); 		// 날린 데이터 확인
		//		alert(data.map.content);
		
		//	Dto데이터 날리기
		//		alert(data); // object날라옴
		//		alert(JSON.stringify(data)); // json데이터 날라옴
		//		alert(data.list);
				alert(data.list[0].number); // 날린 데이터 확인
				alert(data.list[0].name);
		// for문과 foreach문 사용해서 데이터 전체를 뽑을 수 있다.		
		
			},
			errer : function() {
				alert('errer');
			}
		});
	});
});
</script>

</body>
</html>

 


java MemberDto 예제

package dto;

public class MemberDto {
	private int number;
	private String name;
	
	public MemberDto() {}

	public MemberDto(int number, String name) {
		super();
		this.number = number;
		this.name = name;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

Java Servlet 예제

package hello;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

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

import dto.MemberDto;
import net.sf.json.JSONObject;

public class HelloServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("HelloServlet doGet()");
	
		String id = req.getParameter("id"); // ajax는 파라미터가 보이지 않는다.
		String pwd = req.getParameter("pwd"); 
		
		System.out.println("id  : " + id);
		System.out.println("pwd : " + pwd);
		
		// java로 넘긴건 JS로 넘기는게 어렵다... get.Attribute사용불가
		
		String str = "World";
		
		JSONObject jobj = new JSONObject();
		// 문자열 전송
	//	jobj.put("str", str);
		
		// 복수(여러개의)의 데이터 전송
		HashMap<String, Object> map = new HashMap<String, Object>();
	//	map.put("title", "이것은 제목입니다");
	//	map.put("content", "이 글의 내용입니다");
		
	//	jobj.put("map", map);
		
		
		// dto를 list로 전송
		List<MemberDto> list = new ArrayList<MemberDto>();	
		list.add(new MemberDto(1001, "정수동"));
		list.add(new MemberDto(1002, "홍두께"));
		
		jobj.put("list", list);
		
		resp.setContentType("application/x-json; charset=utf-8");
		resp.getWriter().print(jobj); // 전송이 되는 부분
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("HelloServlet doPost()");
	
	}
	
	public void doProcess() {} // get, post 상관하기 싫을 때 사용	
}

+ Recent posts