반응형
실습 코드 참조
moonhy7/SpringFramework: Spring Framework 실습 코드 정리 (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. 실행 결과 확인
루트로 나옴
반응형
댓글