본문 바로가기
👨‍💻 2. 웹개발_Back end/2-6 Spring

[Spring] 7장 데이터 변환

by 달님🌙 2021. 11. 1.
반응형

 

실습 코드 참조

 

moonhy7/SpringFramework: Spring Framework 실습 코드 정리 (github.com)

 

GitHub - moonhy7/SpringFramework: Spring Framework 실습 코드 정리

Spring Framework 실습 코드 정리. Contribute to moonhy7/SpringFramework development by creating an account on GitHub.

github.com

 

 

7.1절 JSON으로 변환하기 ( _072_BoardWeb_Spring_MVC_JSON )

 

1. Jackson2 라이브러리 내려받기

 

 

2. HttpMessageConvertor 등록

 

 

 

 

3. 링크 추가 및 Controller 수정

 

 

 

 

4. 실행 결과 확인

 

 

 

보드vo 이그노어 해주면 특정 변수는 제외시킴

 

 

7.2절 XML로 변환하기 ( _073_BoardWeb_Spring_MVC_XML )

 

1. JAXB 2 설정 추가

 

1) BoardVO 클래스 수정

package com.springbook.biz.board;

//sql -> util 로 변환
//이유 : xml로 변화하려면 기본 생성자가 필요한데 java.sql.Date는 기본 생성자가 없다.
import java.util.Date;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlTransient;

import org.springframework.web.multipart.MultipartFile;

import com.fasterxml.jackson.annotation.JsonIgnore;

//@XmlAccessorType : 해당 객체를 Xml로 변환 가능하다는 선언
//XmlAccessType.FIELD : 해당 객체의 필드변수로 XML 변환
@XmlAccessorType(XmlAccessType.FIELD)
public class BoardVO {
	//@XmlAttribute : 해당 필드변수가 속성값이 됨
	@XmlAttribute
	private int seq;
	private String title;
	private String writer;
	private String content;
	private Date regDate;
	private int cnt;
	//@XmlTransient : xml 변환시 특정 값 제외 == JSON 변환에서 @JsonIgnore와 같은 개념
	@XmlTransient
	private String SearchCondition;
	@XmlTransient
	private String SearchKeyword;
	@XmlTransient
	private MultipartFile uploadFile;
	
	public int getSeq() {
		return seq;
	}
	public void setSeq(int seq) {
		this.seq = seq;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getRegDate() {
		return regDate;
	}
	public void setRegDate(Date regDate) {
		this.regDate = regDate;
	}
	public int getCnt() {
		return cnt;
	}
	public void setCnt(int cnt) {
		this.cnt = cnt;
	}
	//@JsonIgnore : Json형식의 데이터 만들 때 특정값 제외
	@JsonIgnore
	public String getSearchCondition() {
		return SearchCondition;
	}
	
	public void setSearchCondition(String searchCondition) {
		SearchCondition = searchCondition;
	}
	
	@JsonIgnore
	public String getSearchKeyword() {
		return SearchKeyword;
	}
	
	public void setSearchKeyword(String searchKeyword) {
		SearchKeyword = searchKeyword;
	}
	@JsonIgnore
	public MultipartFile getUploadFile() {
		return uploadFile;
	}
	public void setUploadFile(MultipartFile uploadFile) {
		this.uploadFile = uploadFile;
	}
	
	@Override
	public String toString() {
		return "BoardVO [seq=" + seq + ", title=" + title + ", writer=" + writer + ", content=" + content + ", regDate="
				+ regDate + ", cnt=" + cnt + "]";
	}	
}

 

2) BoardListVO 추가

package com.springbook.biz.board;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
//@XmlRootElement : 해당 객체를 RootElement로 지정하고 이름을 boardList로 설정
@XmlRootElement(name = "boardList")
@XmlAccessorType(XmlAccessType.FIELD)
public class BoardListVO {
	//@XmlElement : 각각의 엘리먼트들의 이름 지정
	@XmlElement(name = "board")
	private List<BoardVO> boardList;

	public List<BoardVO> getBoardList() {
		return boardList;
	}

	public void setBoardList(List<BoardVO> boardList) {
		this.boardList = boardList;
	}

}

 

2. Controller 수정

 

import com.springbook.biz.board.BoardListVO;

@Controller
@SessionAttributes("board")
public class BoardController {
	@Autowired
	private BoardService boardService;
	
	@RequestMapping("/dataTransform.do")
	@ResponseBody
	public BoardListVO dataTransform(BoardVO vo) {
		vo.setSearchCondition("TITLE");
		vo.setSearchKeyword("");
		List<BoardVO> boardList = boardService.getBoardList(vo);
		BoardListVO boardListVO = new BoardListVO();
		boardListVO.setBoardList(boardList);
		return boardListVO;
	}

 

 

3. 실행 결과 확인

 

루트로 나옴

 

 

 

 

 

 

반응형

댓글