본문 바로가기

개인프로젝트/JAVA CRUD

[내가 만든 프로젝트 코드 분석 | JSP게시판에 Ajax추가하기] 3.JSON을 활용해 서블릿 구현하기

데이터 요청을 제어하는 컨트롤러 역할을 하기위해 서블릿클래스를 생성합니다.

사용자의 요청을 JSON형태로 반환합니다.

package user;

import java.io.IOException;
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;

@WebServlet("/UserSearchServlet") // 사용자 검색 서블릿
public class UserSearchServlet extends HttpServlet { // JSON형태의 응답 생성
	private static final long serialVersionUID = 1L;
      
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8"); // 넘어온 값 인코딩 처리 설정
		response.setContentType("text/html;chrset=UTF-8");
		String userName = request.getParameter("userName"); // 요청에 담긴 파라미터값 저장
		response.getWriter().write(getJSON(userName)); // 
	}
	
	public String getJSON(String userName) { // 넘어온 JSON값을 파싱
		if(userName == null) userName = "";
		StringBuffer result = new StringBuffer("");
		result.append("{\"result\":[");
		UserDAO userDAO = new UserDAO(); // 회원정보 인스턴스
		ArrayList<User> userList = userDAO.search(userName); //search 실행결과 리스트값
		for(int i = 0; i < userList.size(); i++) {
			result.append("[{\"value\": \"" + userList.get(i).getUserName() + "\"},");
			result.append("{\"value\": \"" + userList.get(i).getUserGender() + "\"},");
			result.append("{\"value\": \"" + userList.get(i).getUserEmail() + "\"}],"); //하나의 회원 형태를 배열의 원소형태로 출력
		}
		result.append("]}");
		return result.toString();
	}

}