✿∘˚˳°∘°

59일차 : AJAX, mvc2WebProject - 6 본문

국비수업/Server

59일차 : AJAX, mvc2WebProject - 6

_HYE_ 2023. 2. 21. 13:52

1. ajax

기존 서버와 클라이언트의 데이터이동방법(request, response)

client ---request--> server
       <--response.sendRedirect(); 주소창바꾸기
       <--RequestDispatcher

ajax의 데이터이동방법
client ---request--> Server
        <-- data ---
js에서요청하고 요청을 받음
서버로부터 데이터를 가져와 전체페이지를 새로 고치지않고 일부만 로드할 수 있게 하는 기법
비동기식 요청을 보내는데 필요한 기술

- 동기식요청 : 함수가 실행되는데 10s가 걸린다고 가정할 때 그 10초동안 함수에서 실행이 끝날때가지 기다림
- 비동기식요청 : 함수실행10s를 기다리지않고 다음코드실행 -> 함수가 끝나면 실행해줌

장점 : 비동기식 방식으로 웹서버의 응답을 기다리지 않고 데이터를 빠르게 처리 / 페이지 리로딩없이 처리
단점 : 한페이지에 지속적으로 사용 시 리소스가 쌓여 페이지가 느려짐 / 스크립트로되어있어 에러발생 시 찾기힘듬

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
	.ajaxResult{
		min-height: 100px;
		border: 2px solid #ccc;
		padding: 15px;
	}
</style>
</head>
<body>
	<%@include file="/WEB-INF/views/common/header.jsp" %>
	<div class="page-content">
		<div class="page-title">AJAX</div>
		<h3>1. 서버호출하기</h3>
		<a class="btn bc11" href="/ajaxTest1.do">a태그방식</a>
		<!-- 비교를위해 ajax서버호출방식 두가지 - js / jQuery -->
		<button class="btn bc11" id="js">JS방식</button>
		<button class="btn bc11" id="jQ1">jQuery방식</button>
		
		<h3>2. 서버로 값 전송하기</h3>
		<!-- input태그를 통해 전송하는게 아닌 script로 보내므로 input에 name이 필요하지X -->
		<input type="text">
		<button class="btn bc11" id="jQ2">전송</button>
		
		<h3>3. 서버로 데이터전송하고 서버에서 데이터받기(기본형데이터 받기)</h3>
		<input type="text" id="su1">
		<input type="text" id="su2">
		<button class="btn bc1" id="jQ3">더하기</button>
		<p class="ajaxResult" id="result3"></p>
		
		<h3>4. 서버로 데이터전송하고 서버에서 데이터받기(객체 받기)</h3>
		<input type="text" id="input4">
		<button class="btn bc1" id="jQ4">회원정보조회</button>
		<p class="ajaxResult" id="result4"></p>
		
		<h3>5. 서버에서 리스트 데이터 받기(배열타입 받기)</h3>
		<button class="btn bc1" id="jQ5">전체회원조회</button>
		<p class="ajaxResult" id="result5"></p>
		
		<!-- 4/5번 작업을 조금 더 간편하게 -->
		<!-- GSON : 구글에서 JSON을 좀 더 편하게 만들어 준 것 -->
		<h3>6. 서버로 데이터 전송하고 서버에서 데이터받기(GSON)</h3>
		<input type="text" id="input6">
		<button class="btn bc1" id="jQ6">회원정보조회</button>
		<p class="ajaxResult" id="result6"></p>
		
		<h3>7. 서버에서 데이터 리스트 받기(GSON)</h3>
		<button class="btn bc1" id="jQ7">전체회원조회</button>
		<p class="ajaxResult" id="result7"></p>
	</div>
	<script>
		$("#js").on("click", function(){
			//javascript로 ajax를 이용한 서버 호출 방식
			//1. XMLHttpRequest 객체 생성
			const xhttp = new XMLHttpRequest();
			//2. 요청 정보 설정 - 메소드는 뭘로할지, url은 어떻게할건지, 비동기여부
			xhttp.open("GET", "/ajaxTest1.do", true);
			//3. 서버 요청 처리에 따른 동작함수 지정 - 서버가 요청을 했는데 에러가날수도있고 잘끝났을 수도 있음 -> 이때의 행동을 함수로 지정
			xhttp.onreadystatechange = function(){
				//상태가 바뀌면 이 함수가 동작
				if(this.readyState == 4 && this.status == 200){
					//요청이 모두 끝났을 때(4) && 정상적인 응답이 돌아온 경우(200)
					console.log("서버요청성공");
				}else if(this.readyState == 4 && this.status == 404){
					//요청이 모두 끝나고(4) && 해당페이지를 찾을 수 없는 경우(404, 주소틀림)
					console.log("주소를 찾을 수 없습니다.");
				}//위 경우 둘다 서버에 요청을 했지만 페이지이동은 일어나지않음
			}
			//4. 서버에 요청
			xhttp.send();
		});
		
		$("#jQ1").on("click", function(){
			$.ajax({//jQuery에서 ajax를 호출하는 방법
				//ajax라는 함수를 호출해서 javascript의 객체를 넣어줌
				url : "/ajaxTest1.do",
				type : "GET", //메소드
				success : function(){
					//성공했을 때 실행할 함수
					console.log("서버호출완료!!");
				},
				error : function(){
					//실패했을 때 실행할 함수
					console.log("에러발생");
				},
				complete : function(){
					//성공실패 상관없이 끝나면 무조건 호출 - 에러가 발생해도 호출
					console.log("무조건 호출");
				}			
			});
		});//특징 : 서버를 호출했는데 페이지의 이동이 없음
		
		$("#jQ2").on("click", function(){
			const input = $(this).prev();
			const inputValue = input.val(); //현재 input에 들어있는 값(이걸 보내줄 것)
			$.ajax({
				url: "/ajaxTest2.do",
				type: "GET",
				data: {input1 : inputValue}, //객체의 key값(input1)이 name과 같은 역할을 한다.
				//여러개 보내고 싶으면 ,로 추가하면 된다.
				success: function(){
					console.log("서버로 데이터 전송 완료");
				},
				error: function(){
					console.log("에러발생");
				}
			});
		});
		
		$("#jQ3").on("click", function(){
			//input에 입력된 값 2개 가져다가 ajaxTest3.do에 전송 후 출력
			const su1Val = $("#su1").val();
			//const su1Val = $(this).prev().prev().val();
			const su2Val = $("#su2").val();
			//const su2Val = $(this).prev().val();
			$.ajax({
				url: "/ajaxTest3.do",
				type: "GET",
				data:{su1 : su1Val, su2 : su2Val},
				success:function(data){
					//서블릿에서 되돌아온 데이터가 성공함수의 매개변수로 받아옴
					//data의 자료형 : 문자열(자바스크립트는 전부 문자열로 받아옴)
					console.log(data, typeof data);
					$("#result3").text(su1Val+" + "+su2Val+" = "+data);
					console.log("서버요청성공");
				},
				error:function(){
					console.log("서버요청실패");
				}
			});		
		});
		
		$("#jQ4").on("click", function(){
			const memberId = $("#input4").val();
			const result = $("#result4");
			result.empty();//empty를 넣지않으면 기존데이터가 사라지지않고 누적됨
			$.ajax({
				url: "/ajaxTest4.do",
				type: "GET",
				data: {memberId : memberId},
				dataType: "JSON",
				success: function(data){
					//console.log(data, typeof data);
					//console.log("서버호출성공");
					if(data == null){
						result.append("회원정보를 조회할 수 없습니다.");
					}else{
						result.append("아이디 : "+data.memberId+"<br>");
						result.append("이름 : "+data.memberName+"<br>");
						result.append("전화번호 : "+data.memberPhone+"<br>");
						result.append("주소 : "+data.memberAddr);
					}
				},
				error: function(){
					console.log("서버호출실패");
				}
			});
		});
		
		$("#jQ5").on("click", function(){
			const result = $("#result5");
			result.empty();
			$.ajax({
				url : "/ajaxTest5.do",
				type : "get",
				dataType : "json",
				success: function(data){
					for(let i=0; i<data.length; i++){
						const div = $("<div></div>");
						div.append(data[i].memberId);
						div.append("/");
						div.append(data[i].memberName);
						div.append("/");
						div.append(data[i].memberPhone);
						div.append("/");
						div.append(data[i].memberAddr);
						result.append(div);
					}
				},
				error: function(){
					//필요하지 않을경우 안적어도 지워도 괜찮다
				}
			});
		});
		
		$("#jQ6").on("click", function(){
			const memberId = $("#input6").val();
			const result = $("#result6");
			$.ajax({
				url : "/ajaxTest6.do",
				type : "get",
				data : {memberId : memberId},
				dataType : "json",
				success : function(data){
					console.log(data);
				},
				error : function(){
					console.log("서버 호출 실패");	
				}
			});
		});
		
		$("#jQ7").on("click", function(){
			const result = $("#result7");
			result.empty();
			$.ajax({
				url : "/ajaxTest7.do",
				type : "get",
				dataType : "json",
				success : function(data){
					console.log(data);
					for(let i=0; i<data.length; i++){
						const div = $("<div></div>");
						div.append(data[i].memberId);
						div.append("/");
						div.append(data[i].memberName);
						div.append("/");
						div.append(data[i].memberPhone);
						div.append("/");
						div.append(data[i].memberAddr);
						result.append(div);
					}
				},
				error : function(){
					console.log("서버 호출 실패");
				}
			});
		});
		
	</script>
	<%@include file="/WEB-INF/views/common/footer.jsp" %>
</body>
</html>

Servlet

ajax.jsp 이동 서블릿

package kr.or.iei.ajax.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AjaxServlet
 */
@WebServlet(name = "Ajax", urlPatterns = { "/ajax.do" })
public class AjaxServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//페이지 이동만 해주는 서블릿
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		//3. 비즈니스로직
		//4. 결과처리
		RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/etc/ajax.jsp");
		view.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

1. 서버호출

package kr.or.iei.ajax.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AjaxTest1Servlet
 */
@WebServlet(name = "AjaxTest1", urlPatterns = { "/ajaxTest1.do" })
public class AjaxTest1Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxTest1Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("서버호출완료!");;
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

2. 서버로 값 전송

package kr.or.iei.ajax.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AjaxTest2Servlet
 */
@WebServlet(name = "AjaxTest2", urlPatterns = { "/ajaxTest2.do" })
public class AjaxTest2Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxTest2Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		String data = request.getParameter("input1"); //{input1 : inputValue }객체 key(input1)값이 들어감
		System.out.println(data);
		//3. 비즈니스로직
		//4. 결과처리
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

3. 서버로 데이터 전송하고 서버에서 데이터받기(기본데이터 받기)

package kr.or.iei.ajax.controller;

import java.io.IOException;
import java.io.PrintWriter;

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

/**
 * Servlet implementation class AjaxTest3Servlet
 */
@WebServlet(name = "AjaxTest3", urlPatterns = { "/ajaxTest3.do" })
public class AjaxTest3Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxTest3Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		int su1 = Integer.parseInt(request.getParameter("su1"));
		int su2 = Integer.parseInt(request.getParameter("su2"));
		//3. 비즈니스로직
		int result3 = (su1 + su2);
		System.out.println(result3);
		//4. 결과처리
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		out.print(result3); //이걸통해 데이터를 되돌려줌
		//되돌아 갔다는 건 성공을 했다는것 -> ajax의 성공함수의 매개변수로 되돌아간다.
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

4. 서버로 데이터 전송하고 서버에서 데이터받기(객체 받기)

package kr.or.iei.ajax.controller;

import java.io.IOException;
import java.io.PrintWriter;

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

import org.json.simple.JSONObject;

import kr.or.iei.member.model.service.MemberService;
import kr.or.iei.member.model.vo.Member;

/**
 * Servlet implementation class AjaxTest4Servlet
 */
@WebServlet(name = "AjaxTest4", urlPatterns = { "/ajaxTest4.do" })
public class AjaxTest4Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxTest4Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		String memberId = request.getParameter("memberId");
		//3. 비즈니스로직
		MemberService service = new MemberService();
		Member m = service.selectOneMember(memberId);
		//자바객체 Member를 ajax.jsp에 그대로 넘겨도 인식X 
		//자바객체를 자바스크립트에서 인식할 수 있게 변환해주는 방법 - - XML, CSV, JSON 
		//XML : <memberId>admin</memberId> <memberPw>admin</memberPw> 데이터가 많으면 불필요한부분이 너무많음(태그많음)
		//CSV : memberId, admin, memberPw, 1234 데이터를 많이 줄엿음 / 단점 : 표현의 한계점이있음(배열, 객체안의 객체등 구현이 안됨)
		//JSON : JavaScriptObjectNations {key:value, key:value} 자료를 주고받을때 javascript모양으로 주고받자
		//       {memberId: admin, memberPw: 1234, arr[1,2,3,4]} 요즘 가장 많이 사용
		//조회결과를 javascript가 인식할 수 있는 객체 형태로 변환(JSON방식) - json_simple-1.1.jar 사용
		//HashMap<String, Object>라고 생각하면 된다 - 사용법도 거의 유사
		JSONObject result = null;
		if(m != null) {
			result = new JSONObject();
			result.put("memberNo", m.getMemberNo());
			result.put("memberId", m.getMemberId());
			result.put("memberPw", m.getMemberPw());
			result.put("memberName", m.getMemberName());
			result.put("memberPhone", m.getMemberPhone());
			result.put("memberAddr", m.getMemberAddr());
			result.put("memberLevel", m.getMemberLevel());
			result.put("enrollDate", m.getEnrollDate());
			//json lib가 {memberNo : '1', memberId : 'admin'}으로 만들어서 넘겨준다
			//단, 데이터가 갈때는 문자열로 가기때문에 json객체라는걸 알려주는 작업을 해줘야한다.
		}
		System.out.println(m);
		//4. 결과처리
		response.setCharacterEncoding("utf-8");
		//response.setContentType("application/json"); //json타입이라고 알려주지않으면 브라우저는 String으로 인식
		//여기말고 AJAX함수에서도 작성가능. ajax내부에 dataType: "JSON" 으로 선언해주면된다
		//둘중 한군데에는 있어야함
		PrintWriter out = response.getWriter();
		out.println(result);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

5. 서버에서 리스트 데이터 받기(배열타입 받기)

package kr.or.iei.ajax.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

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

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import kr.or.iei.member.model.service.MemberService;
import kr.or.iei.member.model.vo.Member;

/**
 * Servlet implementation class AjaxTest5Servlet
 */
@WebServlet(name = "AjaxTest5", urlPatterns = { "/ajaxTest5.do" })
public class AjaxTest5Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxTest5Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		//3. 비즈니스로직
		MemberService service = new MemberService();
		ArrayList<Member> list = service.selectAllMember();
		
		JSONArray memberList = new JSONArray();
		if(!list.isEmpty()) {
			//리스트가 비어있지 않으면
			for(Member m : list) {
				JSONObject obj = new JSONObject();
				obj.put("memberId", m.getMemberId());
				obj.put("memberName", m.getMemberName());
				obj.put("memberPhone", m.getMemberPhone());
				obj.put("memberAddr", m.getMemberAddr());
				memberList.add(obj); //자바스크립트에서는 배열도 OBJECT처리가 된다
			}
		}
		
		//4. 결과처리
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		//out.println(list); 배열에는 key값이 정해져있기 때문에 불가능 -> JSONArray()사용
		out.println(memberList);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

6. 서버로 데이터를 전송하고 서버에서 데이터받기(GSON)

package kr.or.iei.ajax.controller;

import java.io.IOException;
import java.io.PrintWriter;

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

import com.google.gson.Gson;

import kr.or.iei.member.model.service.MemberService;
import kr.or.iei.member.model.vo.Member;

/**
 * Servlet implementation class AjaxTest6Servlet
 */
@WebServlet(name = "AjaxTest6", urlPatterns = { "/ajaxTest6.do" })
public class AjaxTest6Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxTest6Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		String memberId = request.getParameter("memberId");
		//3. 비즈니스로직
		MemberService service = new MemberService();
		Member m = service.selectOneMember(memberId);
		//4. 결과처리
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		//out.pring(m) 이 안되는 이유 : 자바객체를 그대로 줘봤자 자바스크립트에서 사용X -> JSON을 이용해서 자바스크립트에서 사용할수 있는 형태({키:value})로 변환시켜줌
		//단, 필요한 값이 많으면 해야할 작업이 너무 복잡하고 길어진다.
		//-> 이런 귀찮은 작업을 google에서 gson을 통해 처리하게 만들어줌
		//gson을 통해서 m을 되돌려주기
		Gson gson = new Gson();
		gson.toJson(m, out);//4번에서 했던 모든작업을 gson이 대신해준다
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

7. 서버에서 데이터 리스트 받기(GSON)

package kr.or.iei.ajax.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

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

import com.google.gson.Gson;

import kr.or.iei.member.model.service.MemberService;
import kr.or.iei.member.model.vo.Member;

/**
 * Servlet implementation class AjaxTest7Servlet
 */
@WebServlet(name = "AjaxTest7", urlPatterns = { "/ajaxTest7.do" })
public class AjaxTest7Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AjaxTest7Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. 인코딩
		request.setCharacterEncoding("utf-8");
		//2. 값추출
		//3. 비즈니스로직
		MemberService service = new MemberService();
		ArrayList<Member> list = service.selectAllMember();
		//4. 결과처리
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		Gson gson = new Gson();
		gson.toJson(list, out);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

'국비수업 > Server' 카테고리의 다른 글

61일차 : Editor, GitHub  (0) 2023.02.23
60일차 : mvc2WebProject - 6 ( API )  (0) 2023.02.22
58일차 - mvc2WebProject - 5  (0) 2023.02.21
57일차 : mvc2WebProject - 4  (0) 2023.02.19
56일차 : mvc2WebProject - 3  (0) 2023.02.16
Comments