๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป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(..