IT/development205 [springBoot] springBoot Interceptor ๋ก๊ทธ์ธ ์ฒดํฌ LoginInterceptor package study.thboard2.common.interceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @Slf4j //๋ก๊ทธ์ธ ์ธํฐ์ ํฐ public class LoginInterceptor implements HandlerInterceptor { //์๋์ฒ๋ผ ์์กด์ฑ ์ฃผ์ ํ๋ ค๋ฉด config์์ @Bean์ผ๋ก.. IT/development 2023. 5. 13. [springBoot] spring boot jarํ์ผ ๋ฐฐํฌ ์ฝ์ง(feat. ๋ฆฌ๋ ์ค) ์คํ๋ง๋ถํธ์์ jarํ์ผ ์คํ ์ ์ต์ ์ผ๋ก profile๋ฑ์ ์ค์ ํ ์ ์๋๋ฐ ์ด๊ฒ ๋๋ฌธ์ ์ดํ์ ์ฝ์งํด์ ๋ฉ๋ชจํจ ์๋ฒ์์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ ๊ฐ์ด ์์ฑ(์ต์ ์ ๋ณ์ํ), ์คํ ์ ๊ณ์ profile์ ์ฐพ์ง ๋ชปํ์๋ค. #์ด์ ๋ช ๋ น์ด๋๋ก ํ๋ฉด ๊ณ์ ์๋๋ค. java -jar -์ต์ -์ต์ .. deploy.jar ์์๊ฐ ์ด๋ฐ์์ด ๋์ด์ผ ๋๋ค. #์ด์ ๋ช ๋ น์ด๋ java -jar deploy.jar -์ต์ -์ต์ ์ด ์์๋๊น ๊ณ์ ์๋๋ ๊ฑฐ์๋ค. ๋ค์์ ์ ๋ ๊ฐ์ ์ค์ํ์ง ๋ง์ IT/development 2023. 5. 13. [springBoot] ์ธ์ ์ธ์ฆ ๋ก๊ทธ์ธ/๋ก๊ทธ์์ table CREATE TABLE USER_INFO" ("USER_NO" NUMBER(10,0) NOT NULL ENABLE, "ID" VARCHAR2(20) NOT NULL ENABLE, "PASSWORD" VARCHAR2(50) NOT NULL ENABLE, "NAME" VARCHAR2(20) NOT NULL ENABLE, "EMAIL" VARCHAR2(50) NOT NULL ENABLE, "CREATE_DATE" DATE NOT NULL ENABLE, "UPDATE_DATE" DATE DEFAULT SYSDATE, CONSTRAINT "USER_PK" PRIMARY KEY ("USER_NO", "ID") ); COMMENT ON COLUMN USER_INFO.USER_NO IS '์ฌ์ฉ์ ์๋ฒ(์ํ์ค.. IT/development 2023. 5. 8. [springBoot] ํ์ด์ง๋ค์ด์ ์ฒ๋ฆฌ(feat. Oracle) xml /* ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ */ (#{pageNum} -1) * #{amount} ]]> SELECT COUNT(*) FROM BOARD ์ค๋ผํด ํ์ด์ง๋ค์ด์ ์ฟผ๋ฆฌ ํต์ฌ ๋๋ณด๊ธฐ /* ์ํ SQL */ SELECT T2.rn , T2.id , T2.name , T2.email , TO_CHAR(T2.create_date, 'YYYY-MM-DD') AS createDate /* ์ฟผ๋ฆฌ์ ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ์์ ๋ ์ง -> ๋ฌธ์์ด ๋ณํ์ ํด์ฃผ๋๊ฒ ์ฑ๋ฅ์ ์ข๋ค๊ณ ํ๋ค. */ FROM ( SELECT ROWNUM as rn , T1.id , T1.name , T1.email , T1.create_date FROM ( /* 1์ฐจ ์๋ธ์ฟผ๋ฆฌ์์ ๋ฑ๋ก์ผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ */ * ํน์ ROW_NUMBER() OVER(ORDER .. IT/development 2023. 5. 7. [springBoot] ์ฒจ๋ถํ์ผ ์ /๋ค์ด๋ก๋(Oracle) CREATE TABLE "FILE_INFO" ("FILE_NO" NUMBER(10,0) NOT NULL ENABLE, "BOARD_NO" NUMBER(10,0) NOT NULL ENABLE, "ORG_FILE_NAME" VARCHAR2(50) NOT NULL ENABLE, "FILE_PATH" VARCHAR2(200) NOT NULL ENABLE, "FILE_SIZE" NUMBER(20,0) NOT NULL ENABLE, "CREATE_DATE" DATE NOT NULL ENABLE, "UPDATE_DATE" DATE DEFAULT SYSDATE, "DEL_YN" CHAR(1) DEFAULT 'N' NOT NULL ENABLE, CONSTRAINT "FILE_PK" PRIMARY KEY ("FILE_NO.. IT/development 2023. 5. 7. [springBoot] UrlResource ์ฌ์ฉ ์ ๊ฒฝ๋ก ์๋ฌ ์ฒจ๋ถํ์ผ ์ ๋ก๋ ์ application.yml์ ์ค์ ํด ๋ ๋ฌผ๋ฆฌ ๊ฒฝ๋ก์๋ ์ ์์ ์ผ๋ก ์ ์ฅ๋๊ณ DB ํ ์ด๋ธ์๋ ์ ์ ์ฅ๋๋ ์ํ ์ด ์ํ์์ ํ์ผ ๋ค์ด๋ก๋ ํ๊ธฐ ์ํ ์ฝ๋์์ ์ด๋ฏธ์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ ํ์ผ ๋ค์ด๋ก๋ ์ cannot be resolved in the file system for checking its content length ์๋ฌ๊ฐ ๋ฐ์ ํ์๋ค. "D:/upload/49379d4a-3e79-4dc4-b844-bd47c62c723d.jpg"๋ก ํ์๊ธฐ์์ ์ด์ด๋ ํ์ผ์ด ์ ์ด๋ฆผ. ๊ทธ๋ฐ๋ฐ ๊ณ์ UrlResource์์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ง ๋ชปํ๋ค. ํ์ฐธ์ ์ฝ์ง ๋์ ํด๊ฒฐ๋จ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ฝ๋๋ ์์ด๊ณ ์๋๋ ์ ์์ ์ผ๋ก ์๋๋๋ ์ฝ๋์ด๋ค. UrlResource ๊ฐ์ฒด์ ์ธ์๊ฐ์ผ๋ก "file:" + ํ์ผ๊ฒฝ๋ก๋ฅผ ์ .. IT/development 2023. 5. 7. [mybatis] selectkey๊ฐ return(Oracle) SELECT BOARD_NO_SEQ.NEXTVAL FROM DUAL /* ๊ฒ์๊ธ ์์ฑ */ INSERT INTO BOARD ( BOARD_NO , TITLE , CONTENT , WRITER , CREATE_DATE ) VALUES ( #{boardNo} , #{title} , #{content} , #{writer} , SYSDATE ) /* ๊ฒ์๊ธ ๋ฑ๋ก(mapper interface) */ void insertBoard(BoardVo boardVo); /** * ๊ฒ์๊ธ ๋ฑ๋ก(service) * @param boardVo * @throws Exception */ public void regBoard(BoardVo boardVo) throws Exception{ boardMapper.insertBoard.. IT/development 2023. 5. 6. [mybatis] ๊ฒ์(Oracle) /* ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ */ SELECT ROWNUM AS no , T1.boardNo , T1.title , T1.content , T1.writer , T1.createDate , T1.updateDate FROM (SELECT BOARD_NO AS boardNo , TITLE AS title , CONTENT AS content , WRITER AS writer , TO_CHAR(CREATE_DATE, 'YYYY-MM-DD') AS createDate , TO_CHAR(UPDATE_DATE, 'YYYY-MM-DD') AS updateDate FROM BOARD WHERE 1=1 AND USE_YN = 'Y' ORDER BY CREATE_DATE DESC )T1 WHERE 1=1 AND TITLE L.. IT/development 2023. 5. 6. [JavaScript] ๋ ์ง ์ฌ์ด ์ผ์ ๊ณ์ฐ //์์์ผ, ์ข ๋ฃ์ผ ์ฌ์ด ์ผ์ ๊ณ์ฐ(yyyymmdd ํ์) function calDiffDays(startDate, endDate) { //์์์ผ const strDt = new Date(startDate.substring(0,4), startDate.substring(4,6), startDate.substring(6,8)); //์ข ๋ฃ์ผ const endDt = new Date(endDate.substring(0,4), endDate.substring(4,6), endDate.substring(6,8)); //์ผ์ ์ฐจ์ด(์ ๋๊ฐ) let diffDays = Math.abs(endDt.getTime() - strDt.getTime()); //ํ๋ฃจ(๋ฐ๋ฆฌ์ธ์ปจ๋)๋ก ๋๋ ๋ค ๋ฐ์ฌ๋ฆผ return Math.floor.. IT/development 2023. 4. 29. [thyemeleaf] form ๊ฒ์๊ฐ ์ ์ง ์ฝ๋๋ก ๋์ฒดํจ formํ๊ทธ์ th:object๋ก ์๋ฒ์์ form ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ Vo ์ ๋ ฅ controller์์๋ UserVo๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ก ์ค์ @GetMapping(value = "list") public Object testList(@ModelAttribute("userVo") UserVo userVo) { ... ์๋ต } ๊ทธ ํ ํ๋ฉด์ input๊ณผ ๊ฐ์ ์๋ฆฌ๋จผํธ ํ๊ทธ์ th:field="*{vo์ ๋ด๊ธด ํ๋๋ช }"์ ์ ์ธํ๋ฉด ๋๋ค. IT/development 2023. 4. 26. ์ด์ 1 ยทยทยท 8 9 10 11 12 13 14 ยทยทยท 21 ๋ค์