Language & Framework/Spring2023. 1. 21. 17:48[์Šคํ”„๋ง MVC] ์„œ๋ธ”๋ฆฟ

์Šคํ”„๋ง MVC 1ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. HttpServletRequest ์•ž์„  ํฌ์ŠคํŒ…์—์„œ ์„œ๋ธ”๋ฆฟ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์š”์ฒญ ๋ฐ ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋ฉฐ, ์ด๋Š” WAS๊ฐ€ HTTP ์š”์ฒญ ์‹œ ์š”์ฒญ ๋ฐ ์‘๋‹ต ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  ๋’ค ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜์˜€๋‹ค. ์„œ๋ธ”๋ฆฟ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ๋ฐœ์ž ๋Œ€์‹  ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ํŒŒ์‹ฑ ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HttpServletRequest๋ผ๋Š” ๊ฐ์ฒด์— ๋‹ด์•„์„œ ์ œ๊ณตํ•˜๋Š”๋ฐ, ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. 1. Start Line: HTTP ๋ฉ”์†Œ๋“œ, URL, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง, ํ”„๋กœํ† ์ฝœ 2. ํ—ค๋”: ํ—ค๋” ์กฐํšŒ 3. ๋ฐ”๋””: form ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜•์‹ ์กฐํšŒ, ๋ฉ”์‹œ์ง€ ๋ฐ”๋””..

Language & Framework/Spring2023. 1. 21. 16:18[์Šคํ”„๋ง MVC] ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด

์Šคํ”„๋ง MVC 1ํŽธ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์›น ์„œ๋ฒ„, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์›น ์„œ๋ฒ„ (Web Server) HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์ฃผ๋กœ ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Nginx๋‚˜ Apache๊ฐ€ ์›น ์„œ๋ฒ„์— ์†ํ•œ๋‹ค. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ (WAS - Web Application Server) HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•จ๊ณผ ๋™์‹œ์— ๋™์  HTML, HTTP API, JSP์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. Tomcat์ด ๋Œ€ํ‘œ์ ์œผ๋กœ WAS์— ์†ํ•œ๋‹ค. ์›น ์„œ๋ฒ„์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์›น ์„œ๋ฒ„๋Š” ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ฃผ๋กœ ๋‹ด๋‹นํ•œ๋‹ค๊ณ  ํ•˜์ง€๋งŒ, ์›น ์„œ๋ฒ„๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜..

Language & Framework/Spring2023. 1. 12. 20:58[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ๋นˆ ์Šค์ฝ”ํ”„

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋นˆ ์Šค์ฝ”ํ”„๋ž€? ๋ง ๊ทธ๋Œ€๋กœ ๋นˆ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋œปํ•œ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ์Šคํ”„๋ง ๋นˆ์ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘๊ณผ ํ•จ๊ป˜ ์ƒ์„ฑ๋˜์–ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค๊ณ  ํ•™์Šตํ•˜์˜€๋Š”๋ฐ, ์ด๊ฒƒ์€ ์Šคํ”„๋ง ๋นˆ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค ์Šค์ฝ”ํ”„๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์Šคํ”„๋ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์›ํ•œ๋‹ค. 1. ์‹ฑ๊ธ€ํ†ค: ๊ธฐ๋ณธ ์Šค์ฝ”ํ”„๋กœ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ๊ฐ€์žฅ ๋„“์€ ๋ฒ”์œ„์˜ ์Šค์ฝ”ํ”„์ด๋‹ค. 2. ํ”„๋กœํ† ํƒ€์ž…: ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋นˆ์˜ ์ƒ์„ฑ๊ณผ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…, ์ดˆ๊ธฐํ™”๊นŒ์ง€๋งŒ ๊ด€์—ฌํ•˜๊ณ  ๊ทธ ์ด์ƒ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ์งง์€ ๋ฒ”์œ„์˜ ์Šค์ฝ”ํ”„์ด๋‹ค. 3. ์›น ๊ด€๋ จ ์Šค์ฝ”ํ”„ 3-1 request: ์›น ์š”์ฒญ์ด ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐˆ ๋•Œ๊นŒ์ง€ ์œ ์ง€๋˜๋Š” ์Šค์ฝ”ํ”„์ด๋‹ค. 3-2 sess..

Language & Framework/Spring2023. 1. 10. 21:46[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ ์ฝœ๋ฐฑ

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ์‹œ์  ์†Œ์ผ“ ํ†ต์‹ ์ฒ˜๋Ÿผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘ ์ง€์ ์— ํ•„์š”ํ•œ ์—ฐ๊ฒฐ์„ ๋ฏธ๋ฆฌ ํ•ด๋‘๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ ์‹œ์ ์— ์—ฐ๊ฒฐ์„ ๋ชจ๋‘ ์ข…๋ฃŒํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ๊ฐ์ฒด์˜ ์ดˆ๊ธฐํ™”์™€ ์ข…๋ฃŒ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ์Šคํ”„๋ง์€ ์ด๋Ÿฌํ•œ ์ดˆ๊ธฐํ™”/์ข…๋ฃŒ ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ• ๊นŒ? ์Šคํ”„๋ง ๋นˆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ '๊ฐ์ฒด ์ƒ์„ฑ โ†’ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…'์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ฐ€์ง„๋‹ค. ๋นˆ์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด ๋ชจ๋‘ ๋๋‚œ ์ดํ›„์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ค€๋น„๊ฐ€ ๊ฐ–์ถฐ์ง€๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™” ์ž‘์—…์€ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๊ณ  ๋‚œ ๋‹ค์Œ์— ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ์‹ฑ๊ธ€ํ†ค ๋ฐฉ์‹์—์„œ ์Šคํ”„๋ง ๋นˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด๋ฒคํŠธ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๊ฐ€์ง„๋‹ค. (1) ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ โ†’ (2) ์Šคํ”„๋ง ๋นˆ ์ƒ์„ฑ โ†’ (3) ์˜์กด ..

Language & Framework/Spring2022. 12. 21. 17:41[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ์˜์กด๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž… (2)

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์กฐํšŒ ๋นˆ์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ ๋ฌธ์ œ์  @Autowired๋Š” ํƒ€์ž…์œผ๋กœ ๋นˆ์„ ์กฐํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ๋กœ๋Š” ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ac.getBean(DiscountPolicy.class)์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์ด๋•Œ DiscountPolicy์˜ ํ•˜์œ„ ํƒ€์ž…์ด ๋‘ ๊ฐœ ์ด์ƒ ์กด์žฌํ•  ๊ฒฝ์šฐ @Autowired๋Š” ํ•œ ๊ฐœ๊ฐ€ ์•„๋‹Œ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋œ ํ•˜์œ„ ํƒ€์ž… ํด๋ž˜์Šค์˜ ๊ฐœ์ˆ˜๋งŒํผ ์ค‘๋ณต๋œ ๋นˆ์„ ์ฐพ๊ฒŒ ๋˜๊ณ , NoUniqueBeanDefinitionException์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ํ•˜์œ„ ํƒ€์ž…์œผ๋กœ ๋นˆ์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•œ๋‹ค. 1. DIP๋ฅผ ์œ„๋ฐฐํ•จ๊ณผ ๋”๋ถˆ์–ด ์ฝ”๋“œ์˜ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. 2. ๋นˆ ์ด๋ฆ„์€ ๋‹ค๋ฅด์ง€๋งŒ ํƒ€์ž…์ด ๋™์ผํ•œ ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ..

Language & Framework/Spring2022. 12. 21. 17:31[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ์˜์กด๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž… (1)

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ๋ฐฉ๋ฒ• ์ƒ์„ฑ์ž ์ฃผ์ž… ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์˜์กด ๊ด€๊ณ„๋ฅผ ์ฃผ์ž…๋ฐ›๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์‹œ์ ์— ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋ฉฐ ๋ถˆ๋ณ€ ํ˜น์€ ํ•„์ˆ˜์ ์ธ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž… ์‹œ ์‚ฌ์šฉ๋œ๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ ํ•œ ๊ฐœ๋งŒ ์žˆ์„ ๊ฒฝ์šฐ ์Šคํ”„๋ง ๋นˆ์— ํ•œํ•ด์„œ @Autowired๋ฅผ ์ƒ๋žตํ•ด๋„ ์ž๋™์œผ๋กœ ์˜์กด ๊ด€๊ณ„๊ฐ€ ์ฃผ์ž…๋œ๋‹ค. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepositor..

Language & Framework/Spring2022. 12. 20. 01:29[์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ] ์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ

์Šคํ”„๋ง ํ•ต์‹ฌ ์›๋ฆฌ์˜ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ 1๊ฐœ๋งŒ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. ์Šคํ”„๋ง์ด ์—†๋Š” ์ˆœ์ˆ˜ํ•œ DI(Dependency Injection) ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. DI ์ปจํ…Œ์ด๋„ˆ์ธ AppConfig๋Š” ์ƒˆ๋กœ์šด ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ• ์ˆ˜๋ก ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋งŽ์•„์ง์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋„ ์‹ฌํ•ด์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์œผ๋กœ์จ ๊ฐ™์€ ๊ฐ์ฒด๋Š” ๋”ฑ 1๊ฐœ๋งŒ ์ƒ์„ฑ๋˜๋„๋ก ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ๋” ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ๋ฐฉ๋ฒ•์ด ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. public class SingletonService { private static final SingletonService ..

Etc2022. 12. 19. 21:09[Git] Another git process seems to be running in this repository ์—๋Ÿฌ

์ˆ˜์ •ํ•œ ํŒŒ์ผ์„ add ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. fatal: Unable to create 'ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ/.git/index.lock': File exists. Another git process seems to be running in this repository, e.g.an editor opened by 'git commit'. Please make sure all processes are terminated then try again. If it still fails, a git process remove the file manually to continue. ์ปค๋ฐ‹์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์—ด์–ด๋‘” ์—๋””ํ„ฐ๊ฐ€ ๋”ฐ๋กœ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜์˜€๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ ์ƒ์—..

image