1. JSON 파일에 전체 데이터 저장하기
1-1. Maven 프로젝트 생성
wepapp artifact로
artifact id는 webAPIexam
pom.xml에 추가할 코드 적은 뒤 꼭 Update Project
<properties>에는...
+) 1.8로 바꿔두기
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- web.xml 파일을 삭제해도 eclipse에서 오류가 발생하지 않는다. -->
<!-- web.xml 파일을 찾지마 라는 코드 -->
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
<dependencies>에는...
<!-- json 라이브러리 databind jackson-core, jackson-annotaion에 의존성이 있다. -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
1-2. JDBC 패키지 2개 가져오기
1. /src/main 에 java 폴더 생성
2. /src/main/java에 ko.or.connect.webAPIexam.api 패키지 생성
3. 해당 패키지 안에 이전 실습에서 쓴 아래 패키지 복사해오기
package kr.or.connect.jdbcexam.dao;
package kr.or.connect.jdbcexam.dto;
이클립스에서 파일 복사 붙여넣기 할 때, 꼭 이클립스 프로그램에서 해야 함
파일 탐색기에서 하면 이클립스가 인식 못 함!! 주의!
1-3. RolesServlet.java 생성
ko.or.connect.webAPIexam.api 패키지 servlet 파일 만들기
이름은 RolesServlet
url-mapping은 /roles
doGet()메소드만 오버라이딩
코드
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 응답 객체 문자 인코딩을 utf-8로 설정
response.setCharacterEncoding("utf-8");
// application/ 적어야 json 인식 가능
response.setContentType("application/json");
// Role 리스트 얻어내기
RoleDao dao = new RoleDao();
List<Role> list = dao.getRoles();
// 값을 JSON 문자열로,
// JSON 문자열을 읽어올 때 사용
ObjectMapper objectMapper = new ObjectMapper();
// 리스트를 파라미터로 넣어주면
// 해당 리스트가 JSON 문자로 바뀌어서 반환됨
String json = objectMapper.writeValueAsString(list);
PrintWriter out = response.getWriter();
out.println(json);
out.close();}
}
실행 후 다운로드한 JSON 파일을 열어보면 아래와 roles 테이블 내용이 파일에 출력됨
[{"roleId":102,"description":"Project manager"},
{"roleId":101,"description":"Researcher"},
{"roleId":100,"description":"Developer"}]
2. 아이디 하나의 role 정보 읽기
2-1. RolebyIdServlet.java 생성하기
ko.or.connect.webAPIexam.api 패키지 servlet 파일 만들기
이름은 RolebyIdServlet
url-mapping은 /roles/*
*은 모든 것을 의미. 어떤 문자열이든 이곳에 올 수 있음
doGet()메소드만 오버라이딩 (읽어오는 것만 하니깐)
코드
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("application/json");
// path 정보 읽어옴
// split()으로 / 기준으로 잘라서 배열 생성
String pathInfo = request.getPathInfo(); // /roles/{roleId}
String[] pathParts = pathInfo.split("/");
// 0번은 roles, 1번은 {roleId}
String idStr = pathParts[1];
// 문자열이기에 정수로 변환
int id = Integer.parseInt(idStr);
// 해당 id를 getRole()을 통해 조회
RoleDao dao = new RoleDao();
Role role = dao.getRole(id);
// 가져온 값을 JSON으로 변환
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(role);
// 변환한 값을 파일에 출력
PrintWriter out = response.getWriter();
out.println(json);
out.close();}
}
실행
url 뒤에 *를 원하는 role_id 번호를 넣어서 엔터치면 JSON 파일 생성됨
'Web > Java+Spring' 카테고리의 다른 글
Spring IoC/DI 컨테이너 (0) | 2021.06.01 |
---|---|
Spring Framework (0) | 2021.05.31 |
REST API 와 Web API, 상태 코드 (0) | 2021.05.14 |
JDBC - 입력/수정/조회/삭제 (0) | 2021.05.14 |
JDBC 준비 (0) | 2021.05.14 |