1. 사전 내용
1-1. AJAX
velog.io/@surim014/AJAX%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
AJAX란 무엇인가?
AJAX (Asynchronous Javascript And XML) AJAX란, JavaScript의 라이브러리중 하나이며 Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자이다. 브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전
velog.io
AJAX는 HTML 페이지 전체가 아닌 일부분만 갱신할 수 있도록 XMLHttpRequest객체를 통해 서버에 request한다. 이 경우, JSON이나 XML형태로 필요한 데이터만 받아 갱신하기 때문에 그만큼의 자원과 시간을 아낄 수 있다.
1-2. AJAX vs. location.href
요청한 데이터를 어느 페이지에서 보여주고 싶은지에 따라 다르다.
1번
location.href 의 경우, 성공적으로 응답이 되었을 때 데이터를 새로운 페이지로 보낸다. (페이지 전환이 일어남)
location.href="이동할 페이지"
2번
$.ajax의 경우, 데이터를 현재 페이지에서 받는다.
AJAX의 구조
- url : 요청을 보낼 주소
- type : 보내는 방식 (GET/POST)
- data : json 방식으로 서블릿에 보낼 데이터. (AJAX는 GET 방식이라도 쿼리 뒤에 "?파라미터이름:파라미터내용"을 써서 보내지 않는다.)
- Servlet에서 request.getParameter("파라미터")로 받는다. (위의 예시에선 "act")
- dataType : 요청이 성공적으로 마무리 되었을 때 받을 데이터 타입
- success : 요청 성공
- error : 에러 발생
1-3. (Java Servlet) foward vs. redirect
1) foward
데이터를 가지고 오고 싶을 때 사용한다. 경로 변경이 없다.
2) redirect
단순 페이지 이동
2. Servlet에서 ajax로 xml data 받기
요청 JSP 파일
ajax에선 dataType을 xml로 설정한다.
요청을 받을 Servlet
doGet 메소드에서 해당 request를 받아 getXmlArticles로 보내준다.
getXmlArticles 메소드에서 request를 이용해 DB에서 정보를 받아온다.
정보를 받아 request에 속성으로 넣어주고 (request.setAttribute("articles", list); 부분)
xmllist.jsp를 담아 foward한다.
이 때,
ajax는 forward 하지 않는다. (X)
xml을 리턴한다. (O)
이다.
해당 xmllis.jsp 파일의 내용을 보면,
xml이 담긴 JSP 파일 내용
contentType을 보면 "text/xml"이다. text로 쓰여있지만 xml로 해석해라 라는 뜻..
이렇게 xml이 담긴 jsp 파일을 foward 메소드 함수를 통해 ajax로 리턴해준다.
성공적으로 리턴이 될 경우, ajax의 success에서 makeXmlList(data); 함수가 호출된다. ( 위 참고 )
이렇게 자알 뿌려주면 된다.
3. Servlet에서 ajax로 json data 받기
json도 위의 xml과 같은 방식으로 할 수 있지만 더 간단한 방법이 있다.
요청 JSP 파일에서의 ajax에서 dataType만 json으로 설정해주면 된다.
Servlet에서는 DB에서 얻어온 data 객체를 ArrayList에 담아둔다.
이 객체가 담긴 List를 for문을 이용해 하나하나 JSONObject에 담고, 이 JSONObject를 JSONArray에 담으면 된다.
= DB에서 받아온 data를 json 객체에 담는다.
응답할 때는
1) 한글이 깨지지 않도록 utf-8로 인코딩 (response.setCharacterencoding("utf-8");)
2) JSONArray의 주소가 아닌 json 상태로 응답해야 하므로 변환작업 (jarray.toJSONString();)
3) 해서 response에 출력해주면 된다. (response.getWriter().print(~~~);)
'Computer Science > Framework' 카테고리의 다른 글
[사담] REST 맞추기가 생각보다 어렵다 (0) | 2021.05.03 |
---|---|
[Spring] Maven에 라이브러리 추가하기, .jar 파일 추가 오류 해결 (0) | 2021.04.21 |
스프링 라이브러리 추가하기, 스프링 프로젝트 디렉토리 구조 (0) | 2021.04.21 |
Spring Boot 다운로드 (0) | 2021.04.21 |
(Java Servlet) foward는 request로 구현 가능하다. (0) | 2021.04.16 |