๐ปStudy (40) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ๊ธฐ๋ณธ ํ์ ๊ณผ ํ์ค ๋ฉ์๋ / ์ฐ์ฐ์ * ๊ธฐ๋ณธ ํ์ ๊ณผ ํ์ค ๋ฉ์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ ํ์ (์ซ์, ๋ฌธ์์ด, ๋ถ๋ฆฐ๊ฐ)์ ๋ํด ๊ฐ๊ฐ ํธ์ถ ๊ฐ๋ฅํ ํ์ค ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ ์๋ค. ๊ธฐ๋ณธ ํ์ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ์๋, ๋ฉ์๋ ์ฒ๋ฆฌ ์๊ฐ์ ๊ฐ์ฒด๋ก ๋ณํ๋ ํ ํ์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. ๋ฉ์๋ ํธ์ถ์ด ๋๋๋ฉด ๋ค์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์์จ๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ธฐ๋ณธ ํ์ ์ ๊ฐ์ฒด๊ฐ ์๋์๋ ๊ฐ ํ์ ๋ณ๋ก ํธ์ถ ๊ฐ๋ฅํ ํ์ค ๋ฉ์๋๋ค์ ๋ง์น ๊ฐ์ฒด์ฒ๋ผ ํธ์ถํ ์ ์๋ค. var num = 0.5; console.log(num.toExponential(1)); // 5.0e-1 console.log("stringtest".charAt(0)); // s * ์ฐ์ฐ์ 1. + ์ฐ์ฐ์ ๋ํ๊ธฐ ์ฐ์ฐ, ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ ๋ ๊ฐ์ง ์ํ์ ํ๋ค. ์ซ์+์ซ์์ผ ๊ฒฝ์ฐ ๋ํ๊ธฐ ์ฐ์ฐ, ๋๋จธ์ง ๊ฒฝ์ฐ์.. ๋ฐฐ์ด ๋ฐฐ์ด์ ๊ฐ์ฒด์ ํ ์ข ๋ฅ๋ก์, C๋ ์๋ฐ์๋ ๋ค๋ฅด๊ฒ ๊ธธ์ด๋ฅผ ์ง์ ํ์ง ์์๋ ๋๋ฉฐ ๋ฐ์ดํฐ ํ์ ์ ์์ ๋กญ๋ค. * ๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ํตํ ๋ฐฐ์ด ์์ฑ var Arr = ['a', 'b', 'c', 1, true]; console.log(Arr[0]); // a console.log(Arr[7]); // undefined console.log(Arr.length); //5 console.log(Arr); ๋ฌธ์์ด, ๋๋ฒ, boolean ๊ฐ์ด ์ ๋ถ ์๋ ๋ฐฐ์ด์ ๋๊ดํธ([])๋ฅผ ํตํด ์๋ก ์์ฑํ์๋ค. ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์ ์๋์ง ์์ ์ธ๋ฑ์ค์ ๊ฐ์ ์ถ๋ ฅํ๊ณ ์ ํ๋ฉด undefined์ด ์ถ๋ ฅ๋๋ค. ๊ฐ์ฒด์์ ํฌํจํ์ง ์์ ๊ฐ์ฒด ํ๋กํผํฐ์ ์ ๊ทผํ์ ๋ undefined๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ๊ณผ ๋์ผํ ์ํฉ์ธ๋ฐ, ๋ฐฐ์ด ์ญ์ .. ํ๋กํ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์์ ์ ๋ถ๋ชจ ์ญํ ์ ํ๋ ๊ฐ์ฒด์ ์ฐ๊ฒฐ๋์ด ์๊ณ , ์ด๊ฒ์ ํ๋กํ ํ์ ๊ฐ์ฒด ๋๋ ํ๋กํ ํ์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ฐ์ฒด๋ ์์ ์ ๋ถ๋ชจ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์์ ์ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค. (์์์ ๊ฐ๋ ๊ณผ ์ ์ฌํจ) var obj = { name : 'hello', age : 30 } console.log(obj.toString()); console.dir(obj); obj ๊ฐ์ฒด์ toString() ์ด๋ผ๋ ๋ฉ์๋๊ฐ ์์ง๋ง ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋ ์ด์ ๋, obj ๊ฐ์ฒด์ ํ๋กํ ํ์ ์ toString()์ด ์ด๋ฏธ ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. console.dir(obj)์ ์ถ๋ ฅ๋ฌผ์ ๋ณด๋ฉด _proto_ ์์ toString์ด ์ ์๋์ด ์์์ ํ์ธํ ์ ์๋ค. ๊ทธ ์ธ์๋ valueOf ๋ฑ ๊ธฐ๋ณธ ๋ด์ฅ ๋ฉ์๋๋ฅผ ๊ฐ.. POST ์ ๋ ฅ - ํ์ผ ์ ๋ก๋ form ํ๊ทธ์์ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ํน๋ณํ ์ง์ ํ์ง ์๋๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก POST ๋ฐฉ์์ผ๋ก "uid=newlec&name=dragon"์ฒ๋ผ &๋ก ๊ตฌ๋ถ๋ "ํค=๊ฐ"์ด ์ ์ก๋๋ค. url์ ์ฌ์ฉ๋๋ ์ฟผ๋ฆฌ์คํธ๋ง๊ณผ ๊ฐ์ ํ์์ด๋ค. ๋ฌธ์์ด๋ง ๋ณด๋ผ ๋๋ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๋ณด๋ด๋ ๋์ง๋ง ๋ฐ์ด๋๋ฆฌ ๊ฐ์ ๋ณด๋ผ ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฏ๋ก ํด๋ผ์ด์ธํธ์์ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๋ฌ๋ฆฌํด์ผ ํ๋ค. (=>multipart) multipart ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ๊ทธ๋ฆผ์ฒ๋ผ ํํธ๋ฅผ ๋๋์ด์ ์ ์กํ๊ฒ ๋๋ค. (์ฒซ ๋ฒ์งธ ํํธ๋ uid, ๋ ๋ฒ์งธ ํํธ๋ name, ์ธ ๋ฒ์งธ ํํธ๋ file...) ํด๋ผ์ด์ธํธ์์ ๊ฐ์ ์ ์กํ ๋์ ๊ธฐ๋ณธ ๋ฐฉ์์ด application/x-www-form-urlencoded ์ด๋ผ์ multipart ๋ฐฉ์์ ์ค์ ํด์ผ ํ๋ ๊ฒ์ฒ๋ผ, ์๋ฒ์์๋ .. POST ์ ๋ ฅ (ํ ์คํธ๋ฐ์ค, ์ฝค๋ณด๋ฐ์ค, ์ฒดํฌ๋ฐ์ค, ๋ผ๋์ค๋ฒํผ) / ํํฐ๋ฅผ ์ด์ฉํ ํ๊ธ ์ธ์ฝ๋ฉ * admin์ ์ํ ์ปจํธ๋กค๋ฌ ์ถ๊ฐ ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋ก์ด ์ปจํธ๋กค๋ฌ๋ฅผ ์ถ๊ฐํ๋ค. NoticeController.java (com.newlecture.web.controller.admin.board) @Controller("adminNoticeController") @RequestMapping("/admin/board/notice/") public class NoticeController { @RequestMapping("list") public String list() { return ""; } @RequestMapping("reg") @ResponseBody //์ ๋ ฅ๊ฐ์ ์ฌ์ฉ์์๊ฒ ๋ค์ ๋ณด์ฌ์ฃผ๊ธฐ๋ง ํ๊ธฐ ์ํด์ ์ฌ์ฉ public String reg() { return "reg"; } @Re.. ์ ๋ ฅ์ ์ข ๋ฅ / QueryString ์ ๋ ฅ ์ง๊ธ๊น์ง๋ ์คํ๋ง MVC๋ฅผ ์ด์ฉํ ๋งคํ, ์ถ๋ ฅ์ ์์๋ณด์๋ค. ์ด์ ๋ถํฐ๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ๋ค. * QueryString ์ ๋ ฅ ์ปจํธ๋กค๋ฌ์์ ์ ๋ ฅ ๋๊ตฌ์ธ HttpServletRequest๋ฅผ ์ป์ด์์ getParameter ๋ฉ์๋๋ฅผ ์ด์ฉํด ๊ฐ์ ์ ๋ ฅ๋ฐ์ ์ ์๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์ด์ ์ ์ฌ์ฉํ๋ ์๋ธ๋ฆฟ์์์ ๋ฐฉ๋ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค. ์คํ๋ง์์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ๋ ์กฐ๊ธ ๋ ๋์ ๋ฐฉ๋ฒ ์ญ์ ์ ๊ณตํ๋ค. ์ ๋ ฅ ๋๊ตฌ๊ฐ ์๋ ์ ๋ ฅ ๊ฐ์ ์ป์ด์ค๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ์ฉ์๊ฐ "p=1" ์ด๋ผ๋ ์ต์ ์ผ๋ก ์์ฒญ์ ๋ณด๋์ ๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ์์ ์์ฒญ์ ๋ฐ์ ํด๋นํ๋ ์ปจํธ๋กค๋ฌ์๋ "1"์ด๋ผ๋ ๊ฐ์ ๋๊ฒจ์ฃผ๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ปจํธ๋กค๋ฌ๋ "p"๋ผ๋ ๋ณ์๋ก ๊ฐ์ ์ป์ด์์ ์ฌ์ฉํ ์ ์๋ค. * HttpServletRequest ์ฌ์ฉ.. ๋ฐ์ดํฐ ํํ / JSON ์ถ๋ ฅํ๊ธฐ ์๋ฒ์์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ฉด ํด๋ผ์ด์ธํธ์์ ๊ทธ ๊ฐ์ฒด ๊ฐ์ ๋ฐ์ ์ ์๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋๋ฐ, ๊ฐ์ ๋ฐ๋ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ ๋ฐ๋ก ๋ฌธ์์ด๋ก ๋ฐ๋ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ ํํ๋ xml, csv, json ๋ฑ์ด ์๋ค. csv๋ ์ผํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๊ตฌ๋ถํ๋ ๋ฐ์ดํฐ์ด๋ค. ์๋ฅผ ๋ค์ด ์๋ฒ์์ ๊ณต์ง์ฌํญ์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค๊ณ ํ์ ๋๋ฅผ ๊ฐ์ ํด๋ณด์. csv ํ์ ์ ๊ตฌ๋ถ์๊ฐ ์ผํ ๋ฟ์ด๋ฏ๋ก ์ด๋ค ๊ฒ ์ ๋ชฉ์ด๊ณ ๋ด์ฉ์ธ์ง ๊ตฌ๋ถํ๊ธฐ๊ฐ ์ด๋ ต๋ค. csv์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด xml์ด๋ค. xml์ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ, ์ฆ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ค์ฒฉํด์ ๋ ํฐ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ ์ ์๋ค. ํ์ง๋ง ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋น๋ํด์ง๊ณ ์ฑ๋ฅ์ด ์ ์ข๋ค๋ ๋จ์ ์ด ์๋ค. ์์ฆ์๋ csv์ xml์ ์ฅ์ ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ jso.. @RestController์ ํ๊ธ ์ถ๋ ฅ ์ค์ * @RestController ์ปจํธ๋กค๋ฌ ํ๋๋ฅผ ์๋ก ์์ฑํ๋ค. NoticeController.java package com.newlecture.web.controller.api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; //RESTFULํ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐํํ๋ ํด๋์ค @RestController("apiNoticeController") @RequestMapping("/api/notice/") public class NoticeController { @RequestMapping("list") public String list(.. ์ด์ 1 2 3 4 5 ๋ค์