Spring RESTful ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ๊ฒŒ์‹œํŒ XML.ver (JAXB)

2021. 12. 1. 13:46ใ†Spring

728x90

https://hyejin.tistory.com/275

 

Spring RESTful ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ๊ฒŒ์‹œํŒ

https://hyejin.tistory.com/272 Spring RESTful ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ํ”„๋กœ์ ํŠธ (@RequestBody, @ResponseBody, GET, POST, PUT, DELETE, Postman ์„ค์น˜ ๋ฐ ํ…Œ์ŠคํŠธ https://hyejin.tistory.com/265 Spring MVC, Mybatis [2]..

hyejin.tistory.com

์—ฌ๊ธฐ์„œ ์‹ค์Šตํ–ˆ๋˜ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ๊ฒŒ์‹œํŒ์— ๋Œ€ํ•ด์„œ XML ์‘๋‹ต์„ ์ฃผ๋Š” RESTful ์›น์„œ๋น„์Šค ๋ฒ„์ „์œผ๋กœ ๋งŒ๋“ค์–ด๋ณผ๊ฒƒ์ด๋‹ค.

 

1๏ธโƒฃ JAXB(Java Architecture for XML Binding)

JAXB๋Š” Java ๊ฐ์ฒด๋ฅผ XML๋กœ ๋ณ€ํ™˜(์ง๋ ฌํ™”, Marshalling)ํ•ด์ฃผ๊ณ , XML์„ Java ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜(์—ญ์ง๋ ฌํ™”, Unmarshalling) ํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” api์ด๋‹ค. 

 

- JAXB ์ฃผ์š” ์–ด๋…ธํ…Œ์ด์…˜ 

@XmlRootElement 

: XML์˜ Root Element ์ด๋ฆ„์„ ์ •์˜ํ•œ๋‹ค.

ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ XML Root ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. 

 

@XmlElement 

: XML์˜ Element ์ด๋ฆ„์„ ์ •์˜ํ•œ๋‹ค. 

๋ณ€์ˆ˜์— ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ XML Element ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. 

 

 

2๏ธโƒฃ Java ๊ฐ์ฒด๋ฅผ xml๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ UserVOXML ํด๋ž˜์Šค ์ƒ์„ฑ

์ด๋•Œ @XmlRootElement์™€ @XmlElement ์–ด๋…ธํ…Œ์ด์…˜์ด ์•ˆ๋‚˜ํƒ€๋‚ ์ˆ˜๋„ ์žˆ๋‹ค.

์ด๋Š” jdk 11์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

๊ฑฐ๊ธฐ์— jaxb๊ฐ€ ํฌํ•จ๋˜๋Š”์ง€ ๋‚˜๋„ ์–ด๋…ธํ…Œ์ด์…˜์ด ๋œจ์ง€ ์•Š์•„์„œ 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค..!

https://hyejin.tistory.com/277

 

Spring ์Šคํ”„๋ง java.lang.classnotfoundexception: com.sun.xml.internal.bind.v2.contextfactory ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์šฐ์„  ์ž๋ฐ”11์—์„œ๋Š” ํ˜ธํ™˜์„ฑ์˜ ๋ฌธ์ œ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฝค ๋งŽ์ด ์‚ญ์ œ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ JAXB๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š”๋ฐ classnotfoundexception์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค..!! ์ด๋ ‡๊ฒŒ ์„ธ๊ฐœ์˜ dependency๋ฅผ ์ฐธ์กฐํ•ด

hyejin.tistory.com

๊ทธ์™€ ๊ด€๋ จ๋œ ๊ฒŒ์‹œ๊ธ€์„ ์ฐธ๊ณ ํ•ด์„œ pom.xml์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค!

 

3๏ธโƒฃ RestfulController ํด๋ž˜์Šค์— getUserListXml() ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑ

์ด๋ฒˆ์— ์š”์ฒญ๊ฒฝ๋กœ๋Š” users๊ฐ€ ์•„๋‹Œ usersXml์ด๋‹ค !

์ด๋ ‡๊ฒŒ ํ•˜๊ณ , postman์œผ๋กœ /usersXml์„ ํ…Œ์ŠคํŠธํ•ด๋ณด๋ฉด 

์ด๋ ‡๊ฒŒ ๋œจ๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

4๏ธโƒฃ userList_Xml.html ํ™”๋ฉด ์ƒ์„ฑ 

์ด๋Ÿฐ ํ™”๋ฉด์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก html์— jquery๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž‘์„ฑํ•œ๋‹ค. 

 

html ๋ถ€๋ถ„์—๋Š” <table>์˜ <thead>๊นŒ์ง€๋งŒ ์ž‘์„ฑํ•ด์ฃผ๊ณ , <tbody>๋Š” ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ row๋ฅผ ์ƒ์„ฑํ•ด์ค„ ๊ฒƒ์ด๋‹ค. 

xml ์‘๋‹ต RESTful ์›น ์„œ๋น„์Šค ์š”์ฒญ ๋ถ€๋ถ„ 

 

โ— dataType๊ณผ contentType์˜ ์ฐจ์ด 

dataType์€ ์„œ๋ฒ„์—์„œ ์–ด๋–ค ํƒ€์ž…์„ ๋ฐ›์„ ๊ฒƒ์ธ์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

contentType์€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๋งํ•œ๋‹ค. 

 

์‚ฌ์šฉ์ž ์กฐํšŒ ์š”์ฒญ ์‘๋‹ต ๋ถ€๋ถ„ 

<xml>์— ๊ฐ€์žฅ๋จผ์ € status๊ฐ€ success์ธ์ง€ ํ™•์ธํ•˜๊ณ , ๋งž๋‹ค๋ฉด <userList>ํƒœ๊ทธ๋ฅผ ์ฐพ์•„ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค 

row๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค. 

์ด๋•Œ <userid>. <gender>, <name>, <city> ํƒœ๊ทธ๋ฅผ find๋กœ ์ฐพ์•„์„œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ ,

๋งˆ์ง€๋ง‰์œผ๋กœ <tbody>์— appendTo ํ•ด์ฃผ๋ฉด ์‚ฌ์šฉ์ž ๋ชฉ๋ก ์กฐํšŒ ํ™”๋ฉด์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90