방명록만들기에서 사용한 파일 중 복붙하기
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형태로 가져와준다.
'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 |