IT/development205 [thyemeleaf] get ๋ฐฉ์ parameter๊ฐ ๋ถ์ด๊ธฐ ์ฝ๋๋ก ๋์ฒดํจ ์๋์ ๊ฐ์ URL์ด ์์ฑ๋๋ค.(empId, empSno๋ ์๋ฒ์์ ๊ฐ์ ธ์จ ๊ฐ) localhost:8080/user/view?empId=test&empSno=1(์์) IT/development 2023. 4. 26. [thyemeleaf] select option๊ฐ list loop ์์ฆ์ ์ ๋ฌด๊ฐ ๋๋ฌด ๋ฐ๋น ์ ์ฝ๋๋ก ๋์ฒดํจ controller //์ฝ๋๊ฐ ์กฐํ ํ ํ๋ฉด์ ๋ฐ์ดํฐ ์ ๋ฌ List tList = commonService.selectCommonDtlCodeList("T"); model.addAttribute("tList", tList); html ์ ์ฒด th:value๋ ์๋ฒ๋ก ์ ์กํ value๊ฐ์ด ์ธํ ๋๊ณ th:utext๋ ํ๋ฉด์ ๋ณด์ฌ์ง ํ ์คํธ๊ฐ ์ธํ ๋๋ค. IT/development 2023. 4. 26. INSERT/UPDATE template(feat. ์์ CONCATENATE) ์์ ์ CONCATENATE() ํจ์๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ UPDATE template์ ๋ง๋ค์๋ค. ๊ทธ๋ฅ ๋จ์ํ table๋ช ๊ณผ ์ ๋ฐ์ดํธ ์ key๊ฐ, ์ ๋ฐ์ดํธ ํ ์ปฌ๋ผ์ ์ ๋ ฅ ๋ฐ์์ ๋ฌธ์์ด์ ์ด์ด๋ถ์ฌ UPDATE๋ฌธ์ ์์ฑํ ๋ค SQL๋ฌธ ํ์ธ ํ DB ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์์ ์คํํ๋ฉด ๋๋ค. ์๋ ๋์์์ ๋ณด๋ฉด ๋ฐ๋ก ์ดํด๊ฐ ๋ ๋ฏ ํ๋ค. ์์ ๋ ์ ๋ฐ์ดํธ 1๊ฑด๋ง ์คํํ์ง๋ง ์ฌ๋ฌ๊ฐ ์ ๋ ฅํด์ SQL ๋๋๊ทธ ํ ๋ค๋์ ์ ๋ฐ์ดํธ๋ ๊ฐ๋ฅํ๋ค. ์ฌ์ค ๋ค๋ ์ ๋ฐ์ดํธ ๋๋ฌธ์ ๋ง๋ ๊ฑฐ๋ค. INSERT QUERY IT/development 2023. 3. 5. [java] list์ null ์ฒดํฌ(ObjectUtils.isEmpty()) ๋ชฉ์ฐจ NPE ๐ NPE(NullPointerException)๋ java ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์ ๋ง ๋ง์ด ๋ง๋๋ ์๋ฌ ์ค ํ๋์ด๊ณ Null๊ฐ์ธ ๋์์ ๊ฐ์ง๊ณ ๋ญ๊ฐ ํ๋ ค๊ณ ํ๋ฉด ๋ฐ์ํ๋ ์๋ฌ๋ค. ๋ฐฉ์ง๋ฒ์ ๊ณตํต๋ชจ๋์ ๋ง๋ค์ด ํญ์ null ์ฒดํฌ๋ฅผ ํ๊ฒ๋ ๊ฐ๋ฐํ๋๊ฒ ์ฝ์ง์ ์ค์ด๋ ๊ธธ์ผ ๋ฏ ์ถ๋ค. ์๋์ ๊ฐ์ ์ํฉ์์ NPE๊ฐ ๋ฐ์ํ๋ค. userList์ ์๋ฌด๊ฒ๋ ํ ๋น๋์ง ์์ ์ํ์ธ๋ฐ ์ฌ์ด์ฆ๋ฅผ ์ธก์ ํ๋ ค๊ณ ํ๋ค๋?(๋ฏธ์น๊ฑด๊ฐ?) List userList = null; log.info("userList => {}", userList.size()); ์คํ๋ง์ผ๋ก ๊ฐ๋ฐ ์ ๋ณดํต ๋ฐ์ดํฐ๋ฅผ list์ ๋ด์ ํ๋ฉด์ ๋ฟ๋ฆฌ๊ฑฐ๋ API ํ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ๋ด๋ฆฌ๊ฑฐ๋ ํ ํ ๋ฐ list๊ฐ null์ด๊ฑฐ๋ ๋น๊ฐ์ด ๋ด๊ธฐ๊ฑฐ๋ ์ฌ์ด์ฆ๊ฐ 0์ธ ๊ฒฝ์ฐ ๋ฑ๋ฑ .. IT/development 2023. 2. 12. [spring] vo์ multipartFile ๋์์ ์๋ฒ๋ก ์ ์ก(feat.@RequestPart) ํด๋ผ์ด์ธํธ์์ JSON ํ์ ์ ๋ฐ์ดํฐ์ ๋ฉํฐํํธ ํ์ ํ์ผ์ ๋์์ ์ ๋ฌ ๋ฐ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํ๋ค.Controller์์ JSONํ์ ์ ๋ฐ์ดํฐ๋ฅผ vo๋ก ๋ฐ๊ณ ๋ฉํฐํํธ ํ์ ํ์ผ์ ๋ฐ์์ ๋ก๊ทธ๋ง ์ฐ์ด๋ณด๊ฒ ๋ค.controllerpackage study.lsyrestapitest1.controller.api;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;imp.. IT/development 2023. 2. 8. [java] PKIX path building failed ํด๊ฒฐ๋ฐฉ๋ฒ(HTTPS ํต์ ์๋ฌ) ๋ชฉ์ฐจjava์์ ์ธ๋ถ ์ฌ์ดํธ์ HTTPS๋ก ํต์ ํ ๊ฒฝ์ฐ "PKIX path building failed"๊ฐ ๋ฐ์ํ ์ ์๋ค.์์ธ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ ์ ์์ง๋ง ๋ด ๊ฒฝ์ฐ๋ ํด๋น ์ฌ์ดํธ์ ์ธ์ฆ์๋ฅผ JVM์ ์ธ์ฆ์ ๋ชฉ๋ก์ ์ถ๊ฐํด ์ค์ ํด๊ฒฐ ํ๋ค.์๋ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์์ ์๋ ์ ์ฐจ๋๋ก ์งํํ๋ฉด ๋๋ค.(windows ๊ธฐ์ค)InstallCert.java ์ปดํ์ผ ๐๋ค์ด๋ก๋ ๋ฐ์ javaํ์ผ์ ์ปดํ์ผ ํ๋ค.๋น์ฐํ InstallCert.javaํ์ผ์ด ์๋ ๊ฒฝ๋ก๋ก ์ด๋ ํ ์ ๋ ฅํด์ผ ํ๋ค.javac InstallCert.java์ธ์ฆ์ ์ถ์ถ ๐์ปดํ์ผ ํ ํด๋์ค๊ฐ ์์ฑ๋์์ผ๋ฉด ์๋์ฒ๋ผ ์ธ์ฆ์๋ฅผ ์ถ์ถํ ์ฌ์ดํธ ๋๋ฉ์ธ์ parameter๋ก ๋ฃ๊ณ ์คํํ๋ค.java InstallCert xxx.xxx.com์๋์ฒ๋ผ ํ์๋๋ฉด ์ ์.. IT/development 2023. 2. 1. [devTool] postman์ผ๋ก ํ์ผ ์ ์ก ํ ์คํธ postman์ผ๋ก ํ์ผ ์ ์ก ํ ์คํธ(Rest API) ๐ postman์ ์ด์ฉํด์ ์คํ๋ง ํ์ผ ์ ๋ก๋ ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ์๊ฒ๋์ด ๊ธฐ๋กํ๋ค. ๊ทธ๋์์ html์ผ๋ก form์ ๋ง๋ค์ด์ ํ์๋๋ฐ.. ๐ ๋ฐฉ๋ฒ์ ์์ฃผ ์ฝ๋ค. ๋น์ฐํ ์ ์ก๋ฐฉ์์ POST๋ก ์ ํ Body > form-data > key > File๋ก ์ ํ > value์ Select Files ์ ํ ์ ํ์ผ ์ ๋ก๋๊ฐ ๊ฐ๋ฅํ๋ค. ์ค์ ๋ก ์๋ฒ์์ ์ ๋ฐ์์ง๋์ง ํ ์คํธ๋ฅผ ํด๋ณด๊ฒ ๋ค. ์ปจํธ๋กค๋ฌ ์์ฑ ํ ๋ก๊ทธ๋ฅผ ์ฐ์ด์ ์ ๋ค์ด์ค๋์ง๋ง ํ์ธ ํด๋ณด๊ฒ ๋ค. controller package study.lsyrestapitest1.controller.api; import lombok.RequiredArgsConstructor; import lombok.extern.sl.. IT/development 2023. 1. 30. [spring] @RequestBody String type ๋ฐ๊ธฐ ๋ชฉ์ฐจ spring์์ @RequestBody๋ก String type์ ๋ณ์ ๋ฐ๊ธฐ ์คํ๋ง RestFul๋ฐฉ์์ผ๋ก ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ๋ฐ์ ๋ ๋นํฉํ๋ ๊ฒฝํ์ด ์์ด ์ด๋ฅผ ๊ธฐ๋กํ๋ค. ๋ณดํต ์คํ๋ง์์ ํด๋ผ์ด์ธํธ์์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ Dto๋ Vo๋ฑ์ ๊ฐ์ฒด ํ์ ์ผ๋ก ๋ฐ์ธ๋ฉ ์ ์๋์ฒ๋ผ ๊ฐ์ฒด๋ก ์ ๋ฌ ๋ฐ๋๋ก ํ๋ฉด ๋๋ค. package study.lsyrestapitest1.controller.api; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotati.. IT/development 2023. 1. 24. [spring/mybatis] Rest API ๊ณ์ธต๊ตฌ์กฐ(1:N) ๊ฐ์ฒด ์กฐํ(feat .์ฌ์ด ์์ ) ๋ชฉ์ฐจ ์ญ์๋ ๋ฏธ๋์ ๋๋ฅผ ์ํด ๊ธฐ๋กํ๋ค. ๊ณ์ธต๊ตฌ์กฐ ์กฐํ๊ฐ ์ฒ์ ์ ํ๊ณ ์ต์ํด์ง๊ธฐ ์ ๊น์ง๋ ์ข ์ด๋ ต๋ค.(๋ฌผ๋ก ์ง๊ธ๋ ์ฌ์ด ๊ฑด ์๋๋ค.) ๋ชจ๋ ์ผ์ด ์ต์ํด์ง๋ฉด ์๋ฌด๊ฒ๋ ์๋ ๊ฒ ๊ทธ์ ๊น์ง๋ ์ด๋ ค์ด ๋ฒ์ด๋ค. Rest API ๊ณ์ธต๊ตฌ์กฐ ์กฐํ ๊ฐ๋จ ์์๋ค. ์ฌ์ฉ์(UserDto) ๊ฐ์ฒด๊ฐ ๋์ ๊ฐ์ฒด(BookDto)๋ฅผ list๋ก ๊ฐ์ง๊ณ ์๋ ๊ตฌ์กฐ๋ค. ํ์๊ณผ ๋์์ ๊ด๊ณ๋ฅผ 1:N์ผ๋ก ๋งคํํ๊ณ ํ์์ด ๋ถ๋ชจ๊ณ ์ฑ ์ด ์์์ด๋ค. ์๋์ฒ๋ผ ํ๋ช ์ ํ์์ด ์ฌ๋ฌ๊ฐ์ ์ฑ ์ ๋์ถํ ์ ์๋ ์กฐ๊ฑด ๊ทธ๋์ ํ์ ๊ฐ์ฒด๋ ๋์ ๊ฐ์ฒด๋ฅผ list๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค. ์๋ DB ํ ์ด๋ธ์ ๋ณด๋ฉด ํ์๋ฒํธ 1๋ฒ์ธ ์ฒ๋ฅ์ ์ ํ ๋ฅด๊ฐ ์ดํ๊ฐํธ 1๊ถ~5๊ถ๊น์ง ๊ฐ์ง๊ณ ์๋ค. API๋๊น ๋น์ฐํ ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ ๊ฐ์ฒด์ธ dto์ db ์กฐ์์ ์ฌ์ฉํ ๊ฐ์ฒด์ธ vo.. IT/development 2022. 12. 25. [springBoot/html] table๊ฐ ๋ณ๊ฒฝ ํ DB update(feat.contenteditable) ๋ชฉ์ฐจ ํ์ฌ ๋ด๋ถ ํ๋ก์ ํธ ์งํํ๊ณ ์๋ ๊ฒ ์ค ์๋์ ๊ฐ์ ์๊ตฌ์ฌํญ์ด ์์ด์ ๊ตฌํ์ ํ๊ณ ์ด๋ฅผ ๊ธฐ๋กํ๋ค. ํ์ฌ ๊ฐ๋ฐํ๋ฉฐ ๋์ด๋์ ์๊ด์์ด ๊ธฐ๋ก์ ํ๊ณ ์๋๋ฐ ์ด๋ ๋์ค์ ๋ถ๋ช ๋์ ์ข์ ์์ฐ์ด ๋ ๊ฑฐ๋ผ ๋ฏฟ๋๋ค. ๋๊ตฐ๊ฐ์๊ฒ ์ฌ์ด ์ผ์ด ๋ ๋๊ตฐ๊ฐ์๊ฒ ์ข์ ๊ฐ์ ์ค ์๋ ์๊ธฐ์ ์ข์ ์ ์ค์ด๊ณ ์์ ๊ฐ์ ๋๋ฆฌ๊ธฐ ์ํจ์ด๋ค. ์ฒ์๋ถํฐ ์ํ๋ ์ฌ๋๋ ๋ฌผ๋ก ์์ ์ ์๊ฒ ์ง๋ง ๊ทธ๋ฐ์ฌ๋์ด ๊ทธ๋ ๊ฒ ๋ง์ง ์๋ค๊ณ ๋ณธ๋ค. ์ฒ์์ ์ด๋ ค์ ๋ ๊ฒ ํด๋ณด๋ฉด ๋์ค์ ์ฌ์ด๊ฒ ๋๋ค. ๊ตฌ๊ธ์ ์กด์ฌํ๋ฉด ์ํด๋ด์ ์ด๋ ค์ด ๊ฒ์ด์ง ๋ชปํ ๊ฑด ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ตฌ๊ธ์ ์์ด๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์์ด์ผ ํ๋ก๋ค.(๊ตฌ๊ธ์ ์์ผ๋ฉด ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ์ง) ๋ ์์ง ๋ถ์กฑํ ์ง์ฅ์ธ ๊ฐ๋ฐ์์ด๊ธฐ์ ํ๋ฒํ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ์ํด ๋์์์ด ๊ธฐ๋กํ๊ณ ๊ณต๋ถํ ๊ฒ์ด๋ค. ์๊ตฌ์ฌํญ์ ๊ด๋ฆฌ์ํ์ด.. IT/development 2022. 12. 17. ์ด์ 1 ยทยทยท 9 10 11 12 13 14 15 ยทยทยท 21 ๋ค์