์ ์ฒด ๊ธ(210)
-
์ผํ๋ชฐ ํ๋ก์ ํธ - ์ฃผ๋ฌธ๊ด๋ฆฌ - ์ฃผ๋ฌธ๊ด๋ฆฌ ํ์ด์ง (3) ํ์ด์ง ์ฒ๋ฆฌ
์ฃผ๋ฌธ ๊ด๋ฆฌ ํ์ด์ง ํ์ด์ง ์ฒ๋ฆฌ ๊ฒ์ ๊ธฐ๋ฅ๊ณผ ๋ฐ๋ก ๋์ง ์์!! ์ฃผ๋ฌธ ๋ด์ญ ํ์ด์ง ์์ ์ ์ฒด ์ฃผ๋ฌธ ๋ด์ญ ๋์ฌ ๋, ๊ฒ์ ๊ธฐ๋ฅ ์ฌ์ฉํ์ ๋๋ ํ์ด์ง ์ฒ๋ฆฌ ์ ์ฉ๋จ. ex) ์ ์ฒด ๋ฐ์ดํฐ๊ฐ 101๊ฐ, ๊ฒ์ ์กฐ๊ฑด ํด๋น ๋ฐ์ดํฐ 51๊ฐ, ํ์ด์ง๋น ๋ฐ์ดํฐ 10๊ฐ๋ผ๊ณ ๊ฐ์ ํ๋ฉด ๋ ์ง์์ผ๋ก ๋๋ ์ ๋ 1p > ์ต๊ทผ ๋ ์ง 10๊ฐ ๋์์ผ ํจ. ๋ฐฉ๋ฒ1. ์ฟผ๋ฆฌ ์์ฑ ์ ROWNUM ์ฌ์ฉ ROWNUM : ์กฐํ๋! ๋ฐ์ดํฐ์ ํ ๋ฒํธ๋ฅผ ๋ถ์ฌ. ํ์ด์ง ์ฒ๋ฆฌํ ๋ ์ฟผ๋ฆฌ ์์ฑ ์ ๋จผ์ 1. ๋ฐ์ดํฐ๋ฅผ ์ํ๋ ์ปฌ๋ผ์ผ๋ก ์ ๋ ฌํ ํ์ ๋ค์ 2. SELECT์ ์ ๊ฐ์ธ์ ROWNUM์ ์ฌ์ฉํ์ฌ ํ๋ฒํธ๋ฅผ ๋ถ์ฌ์ผํจ. ๊ทธ๋ฆฌ๊ณ 3. ํ๋ฒํธ ๋ถ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ SELECT ์ ์ ๊ฐ์ธ์ 2์์ ๋ถ์ธ ROWNUM์ ์กฐํํ์ฌ ํด๋น ํ์ด์ง์ ๋์ฌ ํ ๋ฒํธ๋ฅผ WHER..
2023.05.02 -
Scroll bar
์คํฌ๋กค์ ์ฃผ๊ณ ์ถ์ ํด๋น ์์ญ์ class๋ฅผ ๋ถ์ฌ. table์ ์คํฌ๋กค์ ์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ table์ div์์ญ์ผ๋ก ๊ฐ์ธ์ ํด๋์ค๋ฅผ ๋ถ์ฌํ๋ฉด ๋จ. table์์ฒด์๋ ์คํฌ๋กค ํ๊ทธ ์ ์ฉ ๋ถ๊ฐ ์ด๋ค ์์ญ์ ์คํฌ๋กค๋ฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๊ฒฝ์ฐ ๋ณดํต ์๋ 3๊ฐ์ง ์์ฑ ๊ธฐ๋ณธ! @charset "UTF-8"; /* ์คํฌ๋กค๋ฐ ์ฌ์ฉ ์ ์์ญ ์ง์ ์ ๊ผญ ํด์ค์ผ ํจ. */ .my-scroll{ height: 100px; /*max-height: 14.7rem;*/ overflow: scroll; width: 200px; /*overflow-y: auto; y์ถ์๋ง ์คํฌ๋กค ์๊น, ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์คํฌ๋กค ์ ์ฉ */ } max-height ์ฌ์ฉํ๋ฉด ์๋ ์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ฒ๋ผ ๊ฐ ์ฃผ๋ฌธ์ํ ์์ญ์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ์ง์ ํ height๋งํผ ํฌ๊ธฐ..
2023.04.27 -
Shop ํ๋ก์ ํธ Security ์ ์ฉ
gradle์ security ์ฌ์ฉ์ ์ํด ์๋ ์ฝ๋ ์ถ๊ฐ implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6' testImplementation 'org.springframework.security:spring-security-test' Security์์ ์๋ ๋ก๊ทธ์ธ ํด์ฃผ๊ธฐ ์ํด memberController์ ์์ฑํ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ฝ๋ ์ญ์ Security๋ก ๋ก๊ทธ์ธ์ ๋ง์ถฐ์ ์ฟผ๋ฆฌ ์์ . SELECT MEM_ID , MEM_PW , MEM_ROLE FROM SHOP_MEMBER WHERE MEM_ID = ..
2023.04.25 -
โ โ Spring Security (2)
ํ๋ก์ ํธ ์์ฑ ํ๋ก์ ํธ ํ์ 6๊ฐ + ์ํ๋ฆฌํฐ ์ ํ db ์์ ํด์ฃผ๊ธฐ gradle ์ฟผ๋ฆฌ ์ฝ๋ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ mapper ๋ฐ ํ์ log ํ์ผ ๋ณต์ฌ MemberController ์์ฑ ๊ฐ ํ์ด์ง ์ด๋ controller ์์ฑ package com.study.test.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller public class MemberController { //์ฒซ ์์ ํ์ด์ง @GetMapping("/..
2023.04.20 -
๊ฐ์ฒด ๊ฐ์ ธ์ค๋ ์ด๋ ธํ ์ด์ ๋น๊ต
๋ง๋ค์ด์ง ๊ฐ์ฒด ๊ฐ์ ธ์ค๋ ์ด๋ ธํ ์ด์ 2๊ฐ 1. @Autowired : ๋ง๋ค์ด์ง ๊ฐ์ฒด ์ค ์๋ฃํ์ด ์ผ์นํ๋ ๊ฒ๋ง ๋ค๊ณ ์ด ์๋ฃํ์ด ์ผ์นํ๋ ๊ฐ์ฒด ์ฌ๋ฌ๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ค ๊ฐ์ฒด์ธ์ง ๋ชป ์ฐพ์ 2. @Resource : name ์ฝ๋ ์์ฑํ์ฌ ์ผ์นํ๋ name์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ด. interface Super {} @Service("aaa") class Aaa{} //์ด๋ ธํ ์ด์ ์ผ๋ก ๊ฐ์ฒด ์์ฑ Aaa aaa = new Aaa(); @Service("bbb") class Bbb implements Super {} //Bbb bbb = new Bbb(); @Service("ccc") class Ccc implements Super {} //Ccc ccc = new Ccc(); //๋ง๋ค์ด์ง ๊ฐ์ฒด ๊ฐ์ ธ์ค๋ ์ด๋ ธํ ์ด์ @Autow..
2023.04.20 -
โ โ Spring Security
Security ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ๊ณผ ์ธ๊ฐ(๊ถํ) ๊ธฐ๋ฅ์ ํ๋ค. ์ฝ๊ฒ ์ค๋ช ํ๋ฉด ์ธ์ฆ์ ์ ๊ทผ ์ ๋ถ์ด ํ์คํ์ง ํ์ธ ๊ฑฐ๋ฅด๋ ๊ฒ. ์ธ๊ฐ๋ ์ธ์ฆ์ผ๋ก ์ ๋ถ์ด ํ์คํด๋ ํน์ ํ ์ด๋ ๊ณณ์ ์ ๊ทผํ ์ ์๋์ง์ ๊ถํ ํ๋ก์ ํธ SecurityTest ์์ฑ DB ์ฐ๊ฒฐ ์์ ๋ฐ ๊ฐ์ ธ์ฌ ํ์ผ๋ค ๋ณต์ฌ(mapper ์ธ) SecurityController ์์ฑ @Controller @RequestMapping("/se") public class SecurityController { @Resource(name = "memberService") private MemberService memberservice; @GetMapping("/main") public String main() { return "main"; } @GetMapping(..
2023.04.19 -
์ผํ๋ชฐ ํ๋ก์ ํธ - ์ค๋ฅ ๋ณด์
๋ฉ๋ด ๋์ฐ๋ ๊ธฐ๋ฅํ๋ฉด์ ํ์ฌ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํฅ > ์ค๋ฅ ๋๋ ๋ถ๋ถ ์ก๊ณ ๊ฐ๊ธฐ 1. ์ํ ๋ฑ๋ก ํ adminSubMenuVO null ์ค๋ฅ ์๋ธ ๋ฉ๋ด ์กฐํํ ๋ ์ด๋ค ๋ฉ๋ด์ ์ํด์๋ ์๋ธ ๋ฉ๋ด์ธ์ง ๋ฉ๋ด์ฝ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์์ผ ํจ(์ฟผ๋ฆฌ ๋น ๊ฐ) ๋ฉ๋ด์ธํฐ์ ํฐ์์ ์๋ธ์ ๋ฉ๋ด์ ๋ชฉ๋ก์ ์กฐํํ ๋ ๋ฉ๋ด ์ฝ๋ ๋์ง๋๋ฐ ์ด ๋ฉ๋ด ์ฝ๋๋ controller์์ html ๊ฐ๊ธฐ ์ ์ ๋ค๋ ค์(? ์๋ธ๋ฉ๋ดVO(์ปค๋งจ๋๊ฐ์ฒด)๋ก ๋ฉ๋ด ์ฝ๋ ๋ฐ์์ ์ฟผ๋ฆฌ ๋น ๊ฐ ์ฑ์ ํ์ฌ ์ํ ๋ฑ๋ก ํ ๋ฉ๋ด์ธํฐ์ ํฐ๊ฐ ์คํ๋จ. ์ธํฐ์ ํฐ๊ฐ ์คํ๋๋ฉด ์๋ธ๋ฉ๋ดVO์์ ๋ฉ๋ด ์ฝ๋๋ฅผ ์ฐพ๋๋ฐ ์ํ ๋ฑ๋ก ๋๋ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ. ์ปค๋งจ๋ ๊ฐ์ฒด ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ์ฃผ๋ฉด ๊ฐ๋ฅ? ใดใด ์ง๊ธ ์ํ ๋ฑ๋ก ํ redirect๋ก controller ์ด๋ํ๋๋ฐ re..
2023.04.19 -
์ผํ๋ชฐ ํ๋ก์ ํธ(14) ๊ด๋ฆฌ์ ๋ฉ๋ด - ์ฃผ๋ฌธ ๊ด๋ฆฌ - ์นดํ ๊ณ ๋ฆฌ๋ณ ํ๋งค ์ถ์ด Chart/ํ ๊ทธ๋ฆฌ๊ธฐ
DB์ ์ฃผ๋ฌธ๊ด๋ฆฌ์ ์๋ธ๋ฉ๋ด ์ถ๊ฐ INSERT INTO ADMIN_SUB_MENU VALUES ('SUB_MENU_008', '์นดํ ๊ณ ๋ฆฌ๋ณ ํ๋งค ์ถ์ด', '/saleStatusByCategory', 'MENU_003'); ์ด์ ์ ๊ด๋ฆฌ์ ๋ฉ๋ด, ์๋ธ ๋ฉ๋ด ์ฟผ๋ฆฌ์ ๋ฉ๋ด ์ฝ๋ ๋ณ๋ก ์ ๋ ฌํ๋ ์กฐ๊ฑด์ ์ถ๊ฐํด์ฃผ๊ธฐ SELECT MENU_CODE , MENU_NAME , MENU_URL FROM ADMIN_MENU ORDER BY MENU_CODE SELECT SUB_MENU_CODE , SUB_MENU_NAME , SUB_MENU_URL , MENU_CODE FROM ADMIN_SUB_MENU WHERE MENU_CODE = #{menuCode} ORDER BY SUB_MENU_CODE sale_status_by_cat..
2023.04.18 -
์ผํ๋ชฐ ํ๋ก์ ํธ(14) ๊ด๋ฆฌ์ ๋ฉ๋ด - ์ฃผ๋ฌธ ๊ด๋ฆฌ - ์๋ณ ๋งค์ถ ํํฉ(3) ํํฉ Chart ๊ทธ๋ฆฌ๊ธฐ
https://www.chartjs.org/ Vertical Bar Chart | Chart.js Last Updated: 2/10/2023, 6:33:01 AM www.chartjs.org Bar Charts ํญ์์ Vertical Bar Chart ์ฌ์ฉํ์ฌ ์๋ณ๋งค์ถํํฉ์ ์ฐจํธ๋ก ๊ตฌํ ์ฐจํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์ค์! ์ฐจํธ ์ฐ๊ฒฐ ์์ค ๋ถ์ฌ๋ฃ๊ธฐ ์ฐจํธ ์์ค js ์์ฑํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐ const ctx = document.getElementById('myChart'); new Chart(ctx, { type: 'bar', data: { labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'], datasets: [{ label: '# of Vo..
2023.04.17