-
[Spring] JAVA 객체를 XML로 페이지에 출력해보기Programming/Spring 2015. 10. 25. 22:17
( 저 혼자 정리차원에서 만든 것이라 부족한게 보일 수도 있습니다. 틀린 것이 있거나 의견있으시면 피드백 부탁드립니다! )
XML을 웹에 출력할 때는 비교적 쉽게 출력할 수 있었다.
물론 찾아보고 이런 노가다를 통해 4~5시간 정도 걸린 것 같음.
일단 XML파일로 만들 객체를 만들어보자
123456789101112131415161718192021222324252627282930313233343536373839404142package org.galket.persistance;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name = "root")public class Root {private String result;public Root(){}public Root(String result) {super();this.result = result;}@XmlElementpublic String getResult() {return result;}public void setResult(String result) {this.result = result;}@Overridepublic String toString() {return "Root [result=" + result + "]";}}cs 코드를 분석해보면, 빈 생성자를 하나 만들고, 그 생성자를 상속받는 생성자를 하나 더 만든다.
그후 getter/setter를 설정 해준 모습이다.
여기서 중요한 것은 바로 @XmlRootElement와 @XmlElement다.@XmlRootElement는 XML의 모든 요소를 포함하고 있는 상위태그다.어노테이션 옆에 name값을 설정해 준 것이 보일텐데, 이건 상위태그의 이름을 설정해주는것이라고 할 수 있다.아마 결과를 보면 바로 이해가 갈 것이다.@XmlElement는 @XmlRootElement의 요소다.Element로 넣고싶은 메소드에 이 어노테이션을 붙여주면 된다.그다음 웹에 출력해보자.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657package org.galket.app;import java.text.DateFormat;import java.util.Date;import java.util.Locale;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;/*** Handles requests for the application home page.*/@Controller@RequestMapping(value = "/")public class HomeController {private static final Logger logger = LoggerFactory.getLogger(HomeController.class);/*** Simply selects the home view to render by returning its name.*/@RequestMapping(value = "/", method = RequestMethod.GET)public String home(Locale locale, Model model) {logger.info("Welcome home! The client locale is {}.", locale);Date date = new Date();DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);String formattedDate = dateFormat.format(date);model.addAttribute("serverTime", formattedDate );return "home";}Root root;@RequestMapping(value = "/service")@ResponseBodypublic Root test1(){root = new Root("success!!")return root;}}cs 다음과 같이 HomeController에 RequestMapping을 '/service'로 해주었기 때문에 이 주소로 들어가면 XML이 출력이 된다.(참고로 위에 메인페이지는 클라이언트가 /test로 접근할 때 갈 수 있도록 경로를 변경하였다.)또한 별도의 jsp파일 없이 바로 출력될 수 있도록 @ResponseBody태그도 붙여주었다.그럼 바로 접근해보면/test/service로 들어갔을때 다음과 같이 <root>태그안에 <result>태그가 보이고 그 안의 값이 success!!로 설정된 것을 볼 수 있다.
'Programming > Spring' 카테고리의 다른 글
[Spring] 파라미터 여러개 받기 및 JSON으로 출력. (0) 2015.10.25 [Spring] 컨트롤러 분할하기(주소창 나누고 파라미터 받기) (0) 2015.10.25 [Spring]OracleDB 연동하기 (0) 2015.10.22 [Spring] MongoDB와 Spring연동하기 - 1. MongoDB설치와 설정 (0) 2015.10.03