๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ243 (23.01.20)React ํ๋ ์์ํฌ : ๋ฒํผ ์ด๋ฒคํธ๋ฆฌ์ค๋ ๋ง๋ค๊ธฐ ๋ฒํธ์ ๋๋ฅด๋ฉด ๋์ ์ผ๋ก ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ ์ด๋ฒคํธ ๋ง๋ค๊ธฐ ํฐ๋ฏธ๋์ ํตํด์ react-router-dom ์ค์นํ๊ธฐ App.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import { useState } from 'react'; import { Route, Routes, Link } from 'react-router-dom'; import './App.css'; import Hello from './comp/Hello.js'; import Test from './comp/Test'; function App() { //์ํ ๋ณ์ const [num, setNum] = useState(0); //let num =0; //.. Framework/React Framework 2023. 1. 24. (23.01.19) React ํ๋ ์์ํฌ - ๋ค์ด๋ก๋ ๋ฐ ์ค์น React Framework Front-End SPA(Single Page Application) > ๋ฐ์ดํฐ ๋น์ฉ์ ๊ฐ, ๋ฐ์์๋ ํฅ์ ๋ฐ๋ณต ์ฌ์ฉ๋๋ ํ์ด์ง์ ์ผ๋ถ๋ถ์ ๋ชจ๋คํ(์ปดํฌํดํธ)ํ์ฌ ์ฌ์ฌ์ฉ > ๊ฐ๋ฐ์๊ฐ ๋จ์ธก, ์ ์ง๋ณด์์ ํจ์จ์ฑ ํฅ์jQuery๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ฉด์ ๋ถ๋ถ๋ถ๋ถ์ ๋ฐ๊ฟ ๋๋ง๋ค ํ๊ทธ๋ฅผ ํ๋ํ๋ ๋ค ๋ฃ์ด์ค์ผํ๋๋ฐ react๋ฅผ ์ฐ๋ฉด ๋ง๋ ํ ์ปดํฌ๋ํธ๋ฅผ ๋ผ์ ๋ฃ์ ์ ์๋ค. html, css, javascript ๊ฐ๋ฐ ํธ์๋ฅผ ์ํด Nodejs ๊ธฐ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ์ฌ์ฉ Node.js: Server side Javascript JSX ์คํฌ๋ฆฝํธ : Javascript + XML - ํ๋ก์ ํธ ์์ฑ์ ๋ก์ปฌ ์น์๋ฒ๋ ๋ด์ฅ(ํฌํธ 3000) ๊ฐ๋ฐ์๋ฃ > Build > ์นํ์ค ํ์ผ ์์ฑ > ๊ฐ๋ฐํ๊ฒฝ ์ด์ธ์์ ์ฌ์ฉ JSP.. Framework/React Framework 2023. 1. 24. (23.01.18)Spring ํ๋ ์์ํฌ + Thymeleaf ๋ก FullCalendar ์ด๋ฏธ์ง ๋ํ๋ด๊ธฐ ๋ฐ ์ด๋ฒคํธ ์จํด๋ฆญ(onClick)์ฒ๋ฆฌํ๊ธฐ Spring + Thymeleaf ๋ก FullCalendar ์ด๋ฏธ์ง ๋ํ๋ด๊ธฐ ๋ฐ ์ด๋ฒคํธ ์จํด๋ฆญ(onClick)์ฒ๋ฆฌํ๊ธฐ ๋ฌ๋ ฅ์ ๋ทฐ๋ก ๋์ธ ๋ ๋ง์ด ์ฐ๋ ๋ฌ๋ ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. ๋ฐ๋ก fullcalendar์ธ๋ฐ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๋ฌ๋ ฅ์ ๋ง๋๋ ๊ฒ์ด๋ค. fullcalendar์ ์ผ์ ์ ๋ํ๋ด๋ ๋ฌ๋ ฅ์ ์นํ์ ์ธ๋ฐ ์ด๋ฅผ ์กฐ๊ธ ์์ฉํ์ฌ ์ผ๊ธฐ ๋ฌ๋ ฅ์ผ๋ก ๋ง๋ค์๋ค. ์ผ๊ธฐ๋ฅผ ์ฐ๋ฉด ํด๋น ๋ ์ง์ ํ๋กํ ์ฌ์ง์ด ๋จ๊ณ ํ๋กํ์ ๋๋ฅด๋ฉด ์ผ๊ธฐ ์์ธ ํ์ด์ง๋ก ๋์ด๊ฐ๊ฒ ๋ง๋ค์๋ค. https://fullcalendar.io/ FullCalendar - JavaScript Event Calendar Open Source... With over 10 years of open source and over 120 contributors,.. Framework/Spring Framework 2023. 1. 23. (23.01.17.)Spring ํ๋ ์์ํฌ : AOP(Aspect Oriented Programming) ๊ด๊ณ์งํฅ ํ๋ก๊ทธ๋๋ฐ AOP(Aspect Oriented Programming) ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ Core Concerns : ๋ฉ์ธ ๋ก์ง Cross-Cutting Concerns : ๋ถ๊ฐ์ ์ธ ๋ก์ง(๋ก๊ทธ์ธ ๊ฒ์ฌ, ๋ณด์, ๋ก๊น ….) ๋ฐ๋ณต๋๋ ๋ถ๊ฐ ๋ก์ง์ ์ฌ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ(๋ถ๊ฐ๋ก์ง ์ค๋ณต๋ฐฉ์ง) OOP(Object Oriented Progrramming) ๋ฐฉ์์ผ๋ก๋ ์๋จ AOP ๋ฐฉ์์ ์ฌ์ฉํ์ฌ OOP๋ฅผ ๋ณด์ํ ์ ์์ Adivce : ๋ถ๊ฐ์ ์ธ ๋ก์ง์ ๋ฉ์๋๋ก ์ ์ธํ ๊ฒ Pointcut : ๋ถ๊ฐ๋ก์ง์ธ ์คํ๋ ๋ฉ์ธ ๋ก์ง์ ์์ ํ ๊ฒฝ๋ก ํํ Aspect : ๋ถ๊ฐ๋ก์ง์ ๋ฉ์๋๋ก ์ ์ธํ ํด๋์ค JoinPoint : ๋ถ๊ฐ๋ก์ง์ ์ด์ด์ ์คํ๋ ์ฃผ ๋ก์ง์ ๋ฉ์๋ ์ ๋ณด @Before, @After, @Around, @AfterReturning.. Framework/Spring Framework 2023. 1. 18. (23.01.16.)Spring ํ๋ ์์ํฌ : ์ด๋ฉ์ผ ์ธ์ฆ ๋ณด์ - ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ธ์ฆ์ ์ธ์ ์ด ๋ฌ๋ผ ์ธ์ฆ ์ค๋ฅ ๊ณ ์น๊ธฐ ์ด๋ฉ์ผ ์ธ์ฆ ๋ณด์ -์ธ์ฆ์ ์ ์ฒญํ ๊ธฐ๊ธฐ ์ด์ธ์ ๊ธฐ๊ธฐ์์๋ ์ธ์ฆ ๋ต๋ณ ๋ฉ์ผ ํ์ธ -์ด๋ฉ์ผ์ ์ธ์ฆ์ฉ ์ํธ ๋ฌธ์์ด์ ์ ๋ฌ -์ด๋ฉ์ผ ์์ ์๊ฐ ๋ฉ์ผ์ ์ด๊ณ ๋งํฌ ํด๋ฆญ > ์ํธ๋ฌธ์์ด์ ๋ค์ ์๋ฒ๋ก ๋ณด๋ด์ค๋ค. -์ด๋ฉ์ผ์ ๋ณด๋ผ๋์ ์๋ฒ์ธก ๋ฉ์๋์ ์ํธ๋ฌธ์์ด์ ๋ค์ ๋ฐ์ ๋์ ๋ฉ์๋๋ ๋ค๋ฅด๋ค. -์ด์ฉ์์ ์ธ์ ์ ์ํธ๋ฌธ์์ด์ ๊ธฐ์ต์์ผ๋๊ณ ๋์์์ ๋์ ์ํธ ๋ฌธ์์ด์ ๋น๊ตํ๋ค. -์์ ์ ์ฐจ๊ฐ ๋ชจ๋ ๋์ผ ์์คํ ์์ ์คํ๋๋ค๋ฉด ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค. -ํ์ง๋ง ๋ค๋ฅธ ๊ธฐ๊ธฐ์์ ์ธ์ฆ์ ์๋ต์ ๋๋ฅด๋ฉด ์ธ์ ์ด ๋ค๋ฅธ ์ธ์ ์ผ๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ด ์๋ํ์ง ์๋๋ค. ๋ฐ๋ผ์ ์ธ์ฆ ๋งํฌ๋ฅผ ๋๋ฅผ ๋ ์ธ์ id๊น์ง ๊ฐ์ด ์ค์ ํด๋น ์ธ์ id์ ์๋ ๋ฌธ์์ด๊ณผ ํจ๊ป ๋น๊ตํ๊ฒ๋ ํด์ผํ๋ค. ๋จผ์ ๋ฉ์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ @ServletComponentScan์.. Framework/Spring Framework 2023. 1. 18. (23.01.14.)Spring ํ๋ ์ ์ํฌ : ์๋ฌ ํ์ด์ง ๋ง๋ค๊ธฐ ์๋ฌ๊ฐ ๋จ๊ฒ ๋๋ฉด ์น์ ์ ๋ชจ๋ฅด๋ ์ด์ฉ์๋ ๋นํฉํ ์ ์๋ค. ๋ฐ๋ผ์ ์๋ฌ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ์๋ฌํ์ด์ง๋ฅผ ๊พธ๋ฉฐ์ ์ด์ฉ์์๊ฒ ์ ์ค๋ช ํ ์ ์๋ค. ErrorHandler.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import javax.servlet.RequestDispatcher; import javax.servlet.http.HttpServletRequest; import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.http.HttpStatus; i.. Framework/Spring Framework 2023. 1. 17. (23.01.13)Spring ํ๋ ์์ํฌ : ์ ๋ก๋๋ ์ด๋ฏธ์ง๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ๋ณด๊ธฐ(์ด๋ฏธ์ง ํ๊ทธ, Thymeleaf์์ ์ด๋ฏธ์ง ๊ฐ์ ธ์ค๊ธฐ) ์ ๋ก๋๋ ์ด๋ฏธ์ง๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ๋ณด๊ธฐ โ -WEB-INF ์๋์ ๋๋ ํ ๋ฆฌ๋ ์น๋ธ๋ผ์ฐ์ ์์ ์ ๊ทผ ๋ถ๊ฐ(WEB-INF/files/) -์๋ฒ์ธก์์ WEB-INF ์๋์ ์ด๋ฏธ์ง๋ฅผ ์ ํด์ค ์๋ ์์ - -์์ ํ๊ทธ๊ฐ ์น๋ธ๋ผ์ฐ์ ์ ๋ก๋๋๋ฉด ์น๋ธ๋ผ์ฐ์ ๋ ํด๋น ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์ ์์ฒญํ๊ฒ ๋จ -์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ ๋ฉ์๋๊ฐ ์๋ค๋ฉด ์ด ๋ ๊ทธ ๋ฉ์๋๊ฐ ์คํ๋จ -์ปจํธ๋กค๋ฌ์์๋ @ResponseBody๋ฅผ ์ฌ์ฉํ์ฌ byte[ ]์ด ๋ธ๋ผ์ฐ์ ๋ก ๋ฆฌํด๋๋๋ก ํจ -์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํ๊ทธ๋ ์ด๋ฏธ์ง๋ฅผ ํ๋ฉด์ ํ์ํ ์ ์์ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42.. Framework/Spring Framework 2023. 1. 16. (23.01.12) Spring ํ๋ ์ ์ํฌ : CRSF(Cross Site Request Forgery) CRSF(Cross Site Request Forgery) ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ์ฌ๊ธฐ ์๋ ์ฌ์ดํธ์์ ๋ฐ์์ค์ง ์์ ์กฐ์ํ ์นํ์ด์ง๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ ์์ ์์ฒญ url์ ์๊ณ ์๋ชป๋ ์์ฒญ์ ๋ณด๋ด๋ ค ํ ์ ์๋ค. CsrfTestConrtroller.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.spri.. Framework/Spring Framework 2023. 1. 13. (23.01.11.)Spring ํ๋ ์์ํฌ : Spring Security -JDBC Authentication Spring Security -JDBC Authentication ์คํ๋ง ์ํ๋ฆฌํฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๋ํ์ฌ ์ธ๊ฐ, ์ธ์ฆ ๋ณด์์ ํ๋ ค๋ฉด 3๊ฐ์ง๊ฐ ์์ด์ผ ํ๋ค. -config ํด๋์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ์ ๋ณด๊ฐ ์์ด์ผํ๋ค. (Datasource) -users์ authorities ํ ์ด๋ธ์ด ์์ด์ผ ํ๋ค. -๊ธฐ์กด์ ํ๋ In Memory Authentication ์ค์ ์ ๊ฑฐํด์ค์ผํ๋ค. users์ authorities ํ ์ด๋ธ ์์ฑ CREATE TABLE users ( username VARCHAR2(50) NOT NULL, password VARCHAR2(120) NOT NULL, enabled CHAR(1) NOT NULL, CONSTRAINT check_users_enabled CHECK(enabled .. Framework/Spring Framework 2023. 1. 11. (23.01.10)Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค : on update cascade ๊ธฐ๋ฅ trigger๋ก ๊ตฌํํ โโon update cascade ๊ธฐ๋ฅ trigger๋ก ๊ตฌํํ๊ธฐโโ ์ค๋ผํด๊ณผ MS-SQL์ FK ์ ์ฝ์ ๊ฑธ๋ ON DELETE CASCADE ๋ฅผ ์ง์ํ์ง๋ง, ON UPDATE CASCADE๋ MS-SQL ๋ง ์ง์ํ๋ค. ์ค๋ผํด์์๋ ON UPDATE CASCADE๊ฐ ๋ง์ด ํ์ ํ๊ธฐ์ ์กฐ๊ธ ๋ถํธํ์ง๋ง Trigger๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ํธ๋ฆฌ๊ฑฐ ํน์ง - AFTER, BEFORE๋ฅผ ํตํด TRIGGER๊ฐ ์ธ์ ์คํ๋ ์ง ๊ฒฐ์ - FOR EACH ROW, ์ฆ ๋ชจ๋ ํ ์ด๋ธ์ ๋ฐ๋ณตํ๋ฉด์ ์คํ๋๋ค - BEGIN๊ณผ END ์ฌ์ด์ SQL๋ฌธ ์ฝ์ ๊ฐ๋ฅ, ์ด๋ ๋ฐ๋์ ; ๋ก ๋์ ๋ด์ฃผ์ด์ผ ํ๋ค!! CREATE TRIGGER ํธ๋ฆฌ๊ฑฐ๋ช AFTER UPDATE OF ๋ถ๋ชจํ ์ด๋ธ์ PK ์ปฌ๋ผ๋ช ON ๋ถ๋ชจํ ์ด๋ธ๋ช FOR EAC.. Database 2023. 1. 11. (23.01.09.) Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค : on delete cascade ์ค์ ํ๊ธฐ โโon delete cascadeโโ ๊ฒ์๊ธ๊ณผ ๋๊ธ ๊ฐ์ด ์ข ์ ๊ด๊ณ๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ฉด ๋ถ๋ชจ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ฉด ์์๋ฐ์ดํฐ๋ ์๋์ ์ผ๋ก ์ญ์ ๋์ด์ผํ๋ค. ์ค๋ผํด์์ ์ด ๊ธฐ๋ฅ์ด ๋ฐ๋ก on delete cascade ์ด๋ค. ๊ฒ์๊ธ์ ์ญ์ ํ๋ ค๊ณ ํ๋ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ์๋ฐฐ๋ก ์ญ์ ๊ฐ ์๋๊ณ 500์๋ฌ๊ฐ ๋์๋ค. ์ฐพ์๋ณด๋ delete cascade ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํด๋์ผ ๋ถ๋ชจํ ์ด๋ธ ์ญ์ ์ ์์ํ ์ด๋ธ๋ ๊ฐ์ด ์ญ์ ๋๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ค. alter table ์์ํ ์ด๋ธ๋ช add constraint ์ค์ ํ ์ ์ฝ์กฐ๊ฑด๋ช foreign key (์ธ๋ํค๋ก ์ค์ ํ ํค) references ๋ถ๋ชจํ ์ด๋ธ๋ช (์ธ๋ํค๋ก ์ค์ ํ ํค) on delete cascade; !!์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํ๊ธฐ ์ํด์ ๊ธฐ์กด์ ์ ์ฝ์กฐ๊ฑด์ ์ญ์ ํ, ๋ค์ ๋ฑ๋กํด์ค.. Database 2023. 1. 11. (23.01.06)Spring ํ๋ ์์ํฌ : thymeleaf๋ฅผ ์ด์ฉํ ๋ณด์ ๋ก๊ทธ์ธ - ๋ก๊ทธ์ธ ์๋ฌ ๋ก๊ทธ์ธ ์๋ฌ ๋ฉ์์ง ๋์ฐ๊ธฐ pom.xml ์ค์ ์ (23.01.05)๊ฒ์๊ธ ์ฐธ๊ณ ! SimpleSecurityConfig.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 import org.springframework.beans.factory.annotation.Autowired; import org.s.. Framework/Spring Framework 2023. 1. 9. ์ด์ 1 ยทยทยท 10 11 12 13 14 15 16 ยทยทยท 21 ๋ค์