๐ป ๊ณต๋ถ ๊ธฐ๋ก/๐ Spring
-
redirect ์ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ RedirectAttributes ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌ RedirectAttributes ํด๋์ค๋ Spring 3.1 ๋ฒ์ ์ ์ถ๊ฐ๋จ RedirectAttributes ํด๋์ค๋ฅผ ํตํด String ํํ๋ฅผ ํฌํจํ map, list, vo ๋ฑ์ Object ํํ๋ก ์ ๋ฌ ๊ฐ๋ฅ ๋์ ์ค์ต | addAttribute @Controller public class TestAttributes { @RequestMapping(value="/aaa") public String insertA(ModelMap model, RedirectAttributes rttr) throws Exception{ String message ="๋ฑ๋ก๋์์ต๋๋ค."; rttr.addAttribute("messa..
Spring | RedirectAttributesredirect ์ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ RedirectAttributes ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌ RedirectAttributes ํด๋์ค๋ Spring 3.1 ๋ฒ์ ์ ์ถ๊ฐ๋จ RedirectAttributes ํด๋์ค๋ฅผ ํตํด String ํํ๋ฅผ ํฌํจํ map, list, vo ๋ฑ์ Object ํํ๋ก ์ ๋ฌ ๊ฐ๋ฅ ๋์ ์ค์ต | addAttribute @Controller public class TestAttributes { @RequestMapping(value="/aaa") public String insertA(ModelMap model, RedirectAttributes rttr) throws Exception{ String message ="๋ฑ๋ก๋์์ต๋๋ค."; rttr.addAttribute("messa..
2023.01.17 -
KAKAO open REST API ๋ฅผ Java ๋ก ๋ค๋ค๋ณด๊ธฐ ์ํ ๊ณต๋ถ ๋ด์ฉ์ ๋๋ค. ์ผ๋ถ ๋ด์ฉ์๋ ๊ฐ์๋ก ๊ณต๋ถ ์ค์ด์๋ ๋ด์ฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. (ํจ์คํธ์บ ํผ์ค) ๊ฐ์ ์ฑ ๊ฒ์ API ๋ฅผ ์ด์ฉํด์ ํค์๋ ์ ๋ ฅ ์ ๊ฒ์ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ ๊ตฌ์ฑ bookHome.jsp BookController.java "/book" | GET @ModelAttribute ๋๋ณด๊ธฐ @Controller public class BookController extends HttpServlet { /** * @param model * @param result * @return * @throws IOException */ @RequestMapping(value = "/book", method = RequestMethod.GET) public ..
Spring | REST API ์์ KAKAO open REST API ๋ฅผ Java ๋ก ๋ค๋ค๋ณด๊ธฐ ์ํ ๊ณต๋ถ ๋ด์ฉ์ ๋๋ค. ์ผ๋ถ ๋ด์ฉ์๋ ๊ฐ์๋ก ๊ณต๋ถ ์ค์ด์๋ ๋ด์ฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. (ํจ์คํธ์บ ํผ์ค) ๊ฐ์ ์ฑ ๊ฒ์ API ๋ฅผ ์ด์ฉํด์ ํค์๋ ์ ๋ ฅ ์ ๊ฒ์ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ ๊ตฌ์ฑ bookHome.jsp BookController.java "/book" | GET @ModelAttribute ๋๋ณด๊ธฐ @Controller public class BookController extends HttpServlet { /** * @param model * @param result * @return * @throws IOException */ @RequestMapping(value = "/book", method = RequestMethod.GET) public ..
2023.01.16 -
Web Application(์น ์ ํ๋ฆฌ์ผ์ด์ ) ์์ฉ ์ํํธ์จ์ด SNS, ์น ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ์ ๊ณต ๋์ URL ๊ธฐ๋ฐ HTTP ์์ฒญ ์๋ฒ ์์ฒญ ์ฒ๋ฆฌ ํ ์ปจํ ์ธ HTTP ์๋ต HTTP ์์ฒญ " GET, POST %3C/p|CDM|1.3|{"originWidth":0,"originHeight":0,"style":"\""}_##] HTTP(Hyper Text Transfer Protocol)
Spring MVC | Web ApplicationWeb Application(์น ์ ํ๋ฆฌ์ผ์ด์ ) ์์ฉ ์ํํธ์จ์ด SNS, ์น ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ์ ๊ณต ๋์ URL ๊ธฐ๋ฐ HTTP ์์ฒญ ์๋ฒ ์์ฒญ ์ฒ๋ฆฌ ํ ์ปจํ ์ธ HTTP ์๋ต HTTP ์์ฒญ " GET, POST %3C/p|CDM|1.3|{"originWidth":0,"originHeight":0,"style":"\""}_##] HTTP(Hyper Text Transfer Protocol)
2023.01.13 -
Java ๋ฅผ ๋ฐฐ์ฐ๋ ์ค ์ฌ๋ฌ๊ฐ์ง IDE ๋ฅผ ๊ฒฝํํ๊ณ VSC(Visual Studio Code) ์๋ Java/Spring ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ํด์ ์ฌ์ฉํด๋ดค๋ค. VSC ์ค์น Java/Spring Boot in Visual Studio Code Spring Boot support in Visual Studio Code Spring Boot extensions for Java developer using Visual Studio Code editor. code.visualstudio.com ์ ๋งํฌ๋ฅผ ํ๊ณ ๊ฐ๋ฉด ํ์ํ ์ค์นํฉ๊ณผ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ ๋ฑ ์์๊ณผ ํจ๊ป ์ค๋ช ์ด ๋์ด์๋ค. (๋์ถฉ ์๋ตํ๊ฒ ๋ค๋ ์๋ฆฌ) ์คํ | ๊ธฐ๋ณธ๊ฐ ํ๋ฉด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋จํ ์คํํ ์ ์๋ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ..
Spring Boot/VSC | New ProjectJava ๋ฅผ ๋ฐฐ์ฐ๋ ์ค ์ฌ๋ฌ๊ฐ์ง IDE ๋ฅผ ๊ฒฝํํ๊ณ VSC(Visual Studio Code) ์๋ Java/Spring ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ํด์ ์ฌ์ฉํด๋ดค๋ค. VSC ์ค์น Java/Spring Boot in Visual Studio Code Spring Boot support in Visual Studio Code Spring Boot extensions for Java developer using Visual Studio Code editor. code.visualstudio.com ์ ๋งํฌ๋ฅผ ํ๊ณ ๊ฐ๋ฉด ํ์ํ ์ค์นํฉ๊ณผ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ ๋ฑ ์์๊ณผ ํจ๊ป ์ค๋ช ์ด ๋์ด์๋ค. (๋์ถฉ ์๋ตํ๊ฒ ๋ค๋ ์๋ฆฌ) ์คํ | ๊ธฐ๋ณธ๊ฐ ํ๋ฉด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋จํ ์คํํ ์ ์๋ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ..
2023.01.10 -
์ฌ๋ฌ๊ฐ๋ฅผ insert ํ๊ฑฐ๋ delete ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ. ์ฟผ๋ฆฌ๋ฅผ ๋จ์ผ๋ก ๋ณด๋ด์ง ๋ง๊ณ ํ ๋ฒ์ ๋์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. (Bulk Insert ์ฟผ๋ฆฌ ์ฌ์ฉ) ํํ #{item} collection : ์ ๋ฌ๋ฐ์ ์ธ์๊ฐ item : ์ ๋ฌ๋ฐ์ ์ธ์ ๊ฐ์ ์ฌ์ฉํ alias๋ช open : ํด๋น ๊ตฌ๋ฌธ์ด ์์๋ ๋ ์ฝ์ ํ ๋ฌธ์์ด close : ํด๋น ๊ตฌ๋ฌธ์ด ์ข ๋ฃ๋ ๋ ์ฝ์ ํ ๋ฌธ์์ด separator : ๋ฐ๋ณต๋๋ ๊ตฌ๋ฌธ์ฌ์ด์ ๊ตฌ๋ถ๊ฐ index : ๋ฐ๋ณต๋๋ ๊ตฌ๋ฌธ ๋ฒํธ (0๋ถํฐ์์) ์ฌ์ฉ์์ INSERT INTO TABLE_NAME VALUES ( #{item.number} #{item.name} #{item.age} #{item.addr} #{item.desc} #{i} ... )
Spring/Mybatis | foreach(bulk insert)์ฌ๋ฌ๊ฐ๋ฅผ insert ํ๊ฑฐ๋ delete ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ. ์ฟผ๋ฆฌ๋ฅผ ๋จ์ผ๋ก ๋ณด๋ด์ง ๋ง๊ณ ํ ๋ฒ์ ๋์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. (Bulk Insert ์ฟผ๋ฆฌ ์ฌ์ฉ) ํํ #{item} collection : ์ ๋ฌ๋ฐ์ ์ธ์๊ฐ item : ์ ๋ฌ๋ฐ์ ์ธ์ ๊ฐ์ ์ฌ์ฉํ alias๋ช open : ํด๋น ๊ตฌ๋ฌธ์ด ์์๋ ๋ ์ฝ์ ํ ๋ฌธ์์ด close : ํด๋น ๊ตฌ๋ฌธ์ด ์ข ๋ฃ๋ ๋ ์ฝ์ ํ ๋ฌธ์์ด separator : ๋ฐ๋ณต๋๋ ๊ตฌ๋ฌธ์ฌ์ด์ ๊ตฌ๋ถ๊ฐ index : ๋ฐ๋ณต๋๋ ๊ตฌ๋ฌธ ๋ฒํธ (0๋ถํฐ์์) ์ฌ์ฉ์์ INSERT INTO TABLE_NAME VALUES ( #{item.number} #{item.name} #{item.age} #{item.addr} #{item.desc} #{i} ... )
2023.01.09 -
ํ๋์ Unique Value ๋ฅผ ์ฌ๋ฌ ํ ์ด๋ธ์ INSERT ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์๊ธ์ ๋ฑ๋กํ๊ณ , ๊ฒ์๊ธ๊ณผ ํจ๊ป ์ฒจ๋ถ๋ ํ์ผ๋ ๋ฑ๋กํ๋ค. ๊ฒ์๊ธ ๋ฑ๋ก ๊ณผ์ ์์ ๊ฒ์๊ธ์ด ์ ์ฅ๋๋ table(๊ฒ์๊ธ1) ๊ณผ ์ฒจ๋ถ๋๋ ํ์ผ์ table(์ฒจ๋ถํ์ผ1) ์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ๊ฒ์๊ธ1์ Unique key ๋ฅผ ์ฒจ๋ถํ์ผ1๊ณผ ํจ๊ป ์ ์ฅํด์ผ ์ ์ผํ ์ฒจ๋ถํ์ผ์ด ๋๋ค. (์ ์ ํ ์์๊ฐ ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์ :3) ๋๋ฌธ์ key ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ Mybatis ์ keyProperty ๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ table insert ... ... ... SELECT Table colum ์ด๋ฆ FROM Table ์ด๋ฆ (+ order by reg_date desc limit 1) keyProperty selectK..
Spring/Mybatis | keyPropertyํ๋์ Unique Value ๋ฅผ ์ฌ๋ฌ ํ ์ด๋ธ์ INSERT ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์๊ธ์ ๋ฑ๋กํ๊ณ , ๊ฒ์๊ธ๊ณผ ํจ๊ป ์ฒจ๋ถ๋ ํ์ผ๋ ๋ฑ๋กํ๋ค. ๊ฒ์๊ธ ๋ฑ๋ก ๊ณผ์ ์์ ๊ฒ์๊ธ์ด ์ ์ฅ๋๋ table(๊ฒ์๊ธ1) ๊ณผ ์ฒจ๋ถ๋๋ ํ์ผ์ table(์ฒจ๋ถํ์ผ1) ์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ๊ฒ์๊ธ1์ Unique key ๋ฅผ ์ฒจ๋ถํ์ผ1๊ณผ ํจ๊ป ์ ์ฅํด์ผ ์ ์ผํ ์ฒจ๋ถํ์ผ์ด ๋๋ค. (์ ์ ํ ์์๊ฐ ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์ :3) ๋๋ฌธ์ key ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ Mybatis ์ keyProperty ๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ table insert ... ... ... SELECT Table colum ์ด๋ฆ FROM Table ์ด๋ฆ (+ order by reg_date desc limit 1) keyProperty selectK..
2023.01.09 -
${} ํ๋ผ๋ฏธํฐ๊ฐ ๋ฐ๋ก ์ถ๋ ฅ๋จ. ํด๋น ์ปฌ๋ผ์ ์๋ฃํ์ ๋ง์ถ์ด ํ๋ผ๋ฏธํฐ์ ์๋ฃํ์ด ๋ณ๊ฒฝ. ์ฟผ๋ฆฌ ์ฃผ์ ์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ๋ถ๋ฆฌ. ๊ทธ๋ก๋ฏ๋ก, ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ ๋ฌํ ๋๋ ์ฌ์ฉํ์ง ์๋ ํธ ํ ์ด๋ธ์ด๋ ์ปฌ๋ผ๋ช ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉ. #{}์ ์๋์ผ๋ก "๊ฐ ๋ถ์ด์ ์ด ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์์. #{} ํ๋ผ๋ฏธํฐ๊ฐ String ํํ๋ก ๋ค์ด์ ์๋์ ์ผ๋ก ํ๋ผ๋ฏธํฐ ํํ๊ฐ ๋จ. ์) #{user_id] ์ user_id ์ ๊ฐ์ด abc ๋ผ๋ฉด ์ฟผ๋ฆฌ๋ฌธ์๋ USER_ID = 'abc' ์ ํํ๊ฐ ๋จ. ์ฟผ๋ฆฌ ์ฃผ์ ์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ์ ๋ฆฌ. ๊ฐํ ๋งํ ์ ์๋๋ฐ ์๋ฐ ์ฝ๋ฉํ ๋๋ ์ ๋์ ์ผ๋ก ํํ๋ฅผ ์ ๊ฒฝ์ฐ๋๋ก ํ์.. ์ ๊ธฐ " " ์ ํํ๋ก ์ธํด์ ๋ ๋ ค๋จน์ ์๊ฐ์ด ์๊น์ ์ ์ํ๋ค. ์ถ์ฒ | ๋ ผ๋ฆฌ..
Spring/Mybatis | ๊ณ ์ฐฐ #{}${} ํ๋ผ๋ฏธํฐ๊ฐ ๋ฐ๋ก ์ถ๋ ฅ๋จ. ํด๋น ์ปฌ๋ผ์ ์๋ฃํ์ ๋ง์ถ์ด ํ๋ผ๋ฏธํฐ์ ์๋ฃํ์ด ๋ณ๊ฒฝ. ์ฟผ๋ฆฌ ์ฃผ์ ์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ๋ถ๋ฆฌ. ๊ทธ๋ก๋ฏ๋ก, ์ฌ์ฉ์์ ์ ๋ ฅ์ ์ ๋ฌํ ๋๋ ์ฌ์ฉํ์ง ์๋ ํธ ํ ์ด๋ธ์ด๋ ์ปฌ๋ผ๋ช ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๊ณ ์ถ์ ๋ ์ฌ์ฉ. #{}์ ์๋์ผ๋ก "๊ฐ ๋ถ์ด์ ์ด ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์์. #{} ํ๋ผ๋ฏธํฐ๊ฐ String ํํ๋ก ๋ค์ด์ ์๋์ ์ผ๋ก ํ๋ผ๋ฏธํฐ ํํ๊ฐ ๋จ. ์) #{user_id] ์ user_id ์ ๊ฐ์ด abc ๋ผ๋ฉด ์ฟผ๋ฆฌ๋ฌธ์๋ USER_ID = 'abc' ์ ํํ๊ฐ ๋จ. ์ฟผ๋ฆฌ ์ฃผ์ ์ ์๋ฐฉํ ์ ์์ด ๋ณด์ ์ธก๋ฉด์์ ์ ๋ฆฌ. ๊ฐํ ๋งํ ์ ์๋๋ฐ ์๋ฐ ์ฝ๋ฉํ ๋๋ ์ ๋์ ์ผ๋ก ํํ๋ฅผ ์ ๊ฒฝ์ฐ๋๋ก ํ์.. ์ ๊ธฐ " " ์ ํํ๋ก ์ธํด์ ๋ ๋ ค๋จน์ ์๊ฐ์ด ์๊น์ ์ ์ํ๋ค. ์ถ์ฒ | ๋ ผ๋ฆฌ..
2023.01.03 -
RequestMapping ์์ฒญ์ด ์์ ๋ ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ํธ์ถ์ด ๋์ด์ผ ํ๋์ง ์๋ ค์ฃผ๋ ์งํ @RequestMapping์ value๋ฅผ "/hello"๋ก ์ ์ํด์ฃผ๋ฉด localhost:8080/hello ์ฃผ์ ์ ๋ ฅ์ /hello์ ๋ฉ์๋ ์คํ @RequestMapping(value="/hello") @RequestMapping์ ๋ค์ค ์์ฒญ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ๋จ ๋ฐฐ์ด๋ก ๋ฌถ์ด์ ์ฌ์ฉ. ๋ค์ค ์์ฒญ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ค์ค url ์ค ์ด๋ค url์ ์ฌ์ฉํด๋ ๋ฉ์๋๊ฐ ์คํ๋๋ค. @RequestMapping(value={"/hello", "/hello-world"}) @RequestMapping๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง ์ฌ์ฉํ๋๋ฐ ์์ด์ ํจ์จ์ ์ด์ง ๋ชปํ๋ค. @RestController ..
Spring | @RequestMappingRequestMapping ์์ฒญ์ด ์์ ๋ ์ด๋ค ์ปจํธ๋กค๋ฌ๊ฐ ํธ์ถ์ด ๋์ด์ผ ํ๋์ง ์๋ ค์ฃผ๋ ์งํ @RequestMapping์ value๋ฅผ "/hello"๋ก ์ ์ํด์ฃผ๋ฉด localhost:8080/hello ์ฃผ์ ์ ๋ ฅ์ /hello์ ๋ฉ์๋ ์คํ @RequestMapping(value="/hello") @RequestMapping์ ๋ค์ค ์์ฒญ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ๋จ ๋ฐฐ์ด๋ก ๋ฌถ์ด์ ์ฌ์ฉ. ๋ค์ค ์์ฒญ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ค์ค url ์ค ์ด๋ค url์ ์ฌ์ฉํด๋ ๋ฉ์๋๊ฐ ์คํ๋๋ค. @RequestMapping(value={"/hello", "/hello-world"}) @RequestMapping๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง ์ฌ์ฉํ๋๋ฐ ์์ด์ ํจ์จ์ ์ด์ง ๋ชปํ๋ค. @RestController ..
2023.01.02