Web/Java+Spring

Web API 실습

WakaraNai 2021. 5. 14. 03:29
728x90
반응형

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 파일 생성됨

 

728x90
반응형

'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