Spring

[Spring] JsonMaker

(งᐛ)ว 2023. 11. 23. 23:29
728x90

방명록만들기에서 사용한 파일 중 복붙하기

pom.xml (Overview에서 Artifact Id와 프로젝트 Name만 수정)

resources의 5개 패키지(내용 수정 필요 / WebInitializer.java / Context_1_dataSource.java / Context_2_mybatis.java 세 파일은 동일하게 사용)

 


 

 

arraylist와 hashmap을 json으로 만들어보자!

 

 

json을 위한 라이브러리 다운로드

https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind

 

Java Object를 JSON으로 변환하거나 JSON을 Java Object로 변환하는데 사용하는 라이브러리
jackson-databind 라이브러리는 jackson-core 및 jackson-annotation 라이브러리의 의존성을 포함한다.

Jackson Databind 2.9.8버전 Maven 영역 복사하여

pom.xml의 <dependencies> </dependencies>  영역 사이에 붙여넣기

 

 

PersonVO.java

package vo;

import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class PersonVO {

	private String name, addr;
	private int age;
	
}

 

 

JsonMakerController.java

package com.korea.json;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import vo.PersonVO;

@Controller 
public class JsonMakerController {

	@RequestMapping("vo_to_json.do")
	@ResponseBody
	public PersonVO voJson() {
		PersonVO p = new PersonVO();
		p.setAddr("서울 종로구");
		p.setAge(30);
		p.setName("홍길동");
		return p;
	}

 

 

ServletContext.java

package mvc;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.korea.json"}) //자동탐색

//어노테이션에도 상속관계가 있다
/*
 *@Component
 *	ㄴ@Controller
 *	ㄴ@Service
 *	ㄴ@Repository 
 * */

//컴포넌트의 자식객체가 들어있으면 사실 Controller가 아니어도 만들어 질 수 있다.
public class ServletContext implements WebMvcConfigurer {

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
	}
	
//	  @Bean 
//	  public InternalResourceViewResolver resolver() {
//	  InternalResourceViewResolver resolver = new InternalResourceViewResolver();
//	  resolver.setViewClass(JstlView.class); resolver.setPrefix("/WEB-INF/views/");
//	  resolver.setSuffix(".jsp"); return resolver; }

 

 

실행결과 (컨트롤러에서 매핑한 이름으로 주소입력)

 

 

 

JsonMakerController.java 이어서

////////////////////////////////////////////////////////////////////////////////
//이어서

	@RequestMapping("map_to_json.do")
	@ResponseBody
	public HashMap<String, Object> mapJson(){
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("name",	"김길동");
		map.put("age", "30");
		
		HashMap<String, String> tel_map = new HashMap<String, String>();
		tel_map.put("home", "032-111-1111");
		tel_map.put("cell", "010-2222-2222");
		
		map.put("tell", tel_map);

		return map;
	}

 

 

실행결과

 

 

JsonMakerController.java 이어서

////////////////////////////////////////////////////////////////////////////////
//이어서
	
	@RequestMapping("list_to_json.do")
	@ResponseBody
	public ArrayList<PersonVO> listJson(){
		ArrayList<PersonVO> list= new ArrayList<PersonVO>();
		
		PersonVO p1 = new PersonVO();
		p1.setAddr("서울 종로구");
		p1.setAge(30);
		p1.setName("홍길동");
		
		PersonVO p2 = new PersonVO();
		p2.setAddr("서울 마포구");
		p2.setAge(20);
		p2.setName("김길동");
	
		list.add(p1);
		list.add(p2);
		
		return list;
	}
	
}

 

 

실행결과

이렇게 하면 list[0]을 꺼낼때 홍길동, 종로구, 30 까지 홍길동의 정보를 전부 가져올 수 있게된다. 

 

 


 

방명록만들기에서 적용해보자!

 

 

VisitJsonController.java

기존 VisitController.java 내역과 동일하게 복붙

@ResponseBody를 추가,

public String ~ 이 아닌 public List< VisitVO > ~

바인딩 포워딩 필요없음,

바로 return list

 

 

ServletContext.java

////////////////////////////////////////////////////////////////////////////////////////
//이어서

	//추가한 제이슨컨트롤러의 객체
	@Bean
	public VisitJsonController visitJsonController(VisitDAO visit_dao) {
		return new VisitJsonController(visit_dao);
	}

**참고로 VisitJsonController를 실행시킨다면 기존의 VisitController부분은 주석처리하자. 매핑이 겹쳐 오류발생할 수 있으므로

 

 

실행결과

방명록의 내용을 json형태로 가져와준다.

728x90

'Spring' 카테고리의 다른 글

[Spring] 방명록만들기에서 API 이용하기  (0) 2023.11.24
[Spring] 파일업로드 (+방명록에 적용)  (1) 2023.11.23
[Spring] 방명록 만들기  (1) 2023.11.21
[Spring] 부서조회하기  (0) 2023.11.18
[Spring] 롬복(LOMBOK)  (0) 2023.11.16