7.22(์›”)

1. WAS / Web Service

  • WAS
    ๐Ÿ‘‰ WAS์˜ ํ•œ๊ฐœ๊ฐ€ ๋งค์šฐ ๊ณ ๊ฐ€์ด๋ฏ€๋กœ ์ค‘๊ฐ„์— 1๋Œ€ ๋ชจ๋‹ˆํ„ฐ๋ง์œผ๋กœ ํ•ด๋†“๊ณ , ์—ฌ๋Ÿฌ๊ฐœ์˜
    web application์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์‹์ด๋‹ค. ์‚ผ์„ฑ๊ทธ๋ฃน์‚ฌ๊ฐ€ ์žˆ์œผ๋ฉด ์•„๋ž˜ ์˜ˆํ•˜ ๊ทธ๋ฃน์‚ฌ๊ฐ€ ์žˆ๋Š”๊ฒƒ์ฒ˜๋Ÿผ.

  • Servlet Context = Web Application

๐Ÿ‘‰ ์‚ฌ์ง„์„ ์„ค๋ช…ํ•˜์ž๋ฉด, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด JVM๋‚ด์— ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

๐Ÿ‘‰ ํ”„๋กœ์ ํŠธ ๋งˆ๋‹ค ํฐ ์›์ด ์ƒ๊ธฐ๋Š”๋ฐ, ํฐ ์›์ด Servlet Context์ด๋‹ค.

๐Ÿ‘‰ ํฐ ์›์€ ๊ฐ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ ์žˆ๊ณ  ๊ฐ์ž ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„˜์–ด์„ค์ˆ˜์—†๋‹ค.

๐Ÿ‘‰ ์—ฌ๊ธฐ์„œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ•˜๋‚˜๊ฐ€ ๋„๋ฉ”์ธ์ด๋‹ค.


1-1. web-Inf ํด๋”

๐Ÿ‘‰ ํ”„๋กœ์ ํŠธ๋‚ด์— web-lnf ํด๋”๋Š” web application๊ณผ ๊ด€๋ จ๋œ ํด๋” ์ด๋ฏ€๋กœ jspํŒŒ์ผ์„ ๋„ฃ์œผ๋ฉด ์•ˆ๋œ๋‹ค. ์ด๊ณณ์€ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ง์ ‘ ์ ‘๊ทผ์ด ์•ˆ๋œ๋‹ค. (์„ค์ •๊ด€๋ จ ํด๋”)



2. ServletContext์˜ ์ƒ๋ช…์ฃผ๊ธฐ

๐Ÿ‘‰ web application context ์ƒ์„ฑ โ†’ servelt ํ˜ธ์ถœ์‹œ ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ โ†’ init( ) โ†’
service( ) โ†’ destroy( )

๐Ÿ“Œ service : hello world ์ถœ๋ ฅํ•˜๋Š”๊ฒƒ, tomcat์—์„œ ์ด๋ฏธ ์ƒ์†์ด ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์ด๋ฏ€๋กœ override๋กœ Get์ด๋ฉด doGET, POST์ด๋ฉด doPost๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋จ.

๐Ÿ“Œ destory : context์˜ ๋‚ด๋ถ€ ์ •๋ณด๊ฐ€ ์—†์–ด์ง€๋Š”๊ฒƒ , ์„œ๋ฒ„์ข…๋ฃŒ์‹œ์— ์ž‘๋™๋จ

๐Ÿ“Œ Servlet = java์ฝ”๋“œ์ƒ์„ฑ, ์‹ค์‹œ๊ฐ„์ปดํŒŒ์ผ,์‹ค์‹œ๊ฐ„์‹คํ–‰

๐Ÿ“Œ Servlet์€ ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ง.

โ†’ ServletContext๋Š” ํŠน์ • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „์—ญ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ฐ์ฒด์ด๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ ์ƒ์„ฑ.



3. GET / POST

  • GET : ๊ณต๊ฐœ, ์กฐํšŒ, ๊ฒ€์ƒ‰, ๋ฆฌ์ŠคํŠธ
  • POST : ๊ฐœ์ธ์ ์ธ์šฉ๋„, ์ฒ˜๋ฆฌ

3-1. ์ฟผ๋ฆฌ์ŠคํŠธ๋ง

๐Ÿ‘‰ ? , = , &๊ณผ ๊ฐ™์€ key = valueํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋จ.
๐Ÿ‘‰ GET์˜ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง : HTTP ํ—ค๋”์— ๋ถ™์–ด์„œ GET / ?=
๐Ÿ‘‰ POST์˜ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง : ํ—ค๋”๊ฐ€ ๋๋‚˜๋ฉด \r\n\r\n ์ดํ›„ ๋ฐ‘(body)์— ๋งŒ๋“ค์–ด์ง„๋‹ค.


3-2. ๋ชจ๋ธ1๋ฐฉ์‹, ๋ชจ๋ธ2๋ฐฉ์‹

  • ๋ชจ๋ธ1๋ฐฉ์‹
    ๐Ÿ“Œ JSP๋Š” ํ™”๋ฉด์—์„œ ๊ฒฐ๊ณผ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์šฉ๋„์ผ ๋ฟ์ž„. ํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” JSP๋ฅผ ์ด์šฉํ•˜์—ฌ JSP์ž…๋ ฅํ•˜๊ณ , JSP์ž…๋ ฅ์ˆ˜์ง‘, ์ถœ๋ ฅ์„ ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ฐฐ์šฐ๋Š”์ค‘.


  • ๋ชจ๋ธ2๋ฐฉ์‹
    ๐Ÿ“Œ HTML๊ณผ JAVA์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  MVCํŒจํ„ด์„ ํฌํ•จ์‹œํ‚ด


3-3. URL์„ค๊ณ„ = ์›น์Šคํ† ๋ฆฌ๋ณด๋“œ

๐Ÿ‘‰ WEB์—์„œ ํ•ญ์ƒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ค๊ณ„

3-4. ์›น ์™€์ด์–ดํ”„๋ ˆ์ž„

๐Ÿ‘‰ ์–ดํ”Œ์„ค๊ณ„์‹œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์–ด๋А ํŽ˜์ด์ง€๋กœ๊ฐ€๋Š”์ง€ ์†์œผ๋กœ ๊ทธ๋ฆฐ๊ฒƒ ๊ฐ™์€ ๊ทธ๋ฆผ.

4. ํ‚ค์˜ค์Šคํฌ ๋งŒ๋“ค๊ธฐ

๐Ÿ“Œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ (ํด๋ž˜์Šค)
๐Ÿ“Œ ๊ฐ ์ƒํ’ˆ์„ ๋ฌถ์–ด์„œ ํ•œ๋ฒˆ์— ์ „๋‹ฌ => listํ™”๋ฉด
๐Ÿ“Œ ํŠน์ •ํ•œ ์ƒํ’ˆ์ •๋ณด๋ฅผ ์ „๋‹ฌ => ์กฐํšŒํ™”๋ฉด
๐Ÿ“Œ ์ƒํ’ˆ์˜ ๊ณ ์œ ํ•œ ์ •๋ณด = ์‹๋ณ„๋ฐ์ดํ„ฐ
๐Ÿ“Œ private Integer no; ๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š” int no์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด 0์ด๋ฏ€๋กœ ๊ธฐ๋ณธ๊ฐ’์ด null์ธ wrapper class๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ณ , ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋œ๋‹ค.


4-1. HttpServletRequest ์ฃผ์š”๋ฉ”์†Œ๋“œ

๐Ÿ‘‰ request ๋ฉ”์†Œ๋“œ๋Š” ๋‚ด์žฅ๊ฐ์ฒด๋กœ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ ธ์žˆ๋Š” ์ƒํƒœ๋ผ ๊ตณ์ด ๋งŒ๋“คํ•„์š”์—†์ด ์‚ฌ์šฉ๊ฐ€๋Šฅ

  • request.getMethod()
    ๐Ÿ‘‰ ์ด ๋ฉ”์†Œ๋“œ๊ฐ€ get์ธ์ง€ post์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ๋ฉ”์†Œ๋“œ

  • request.getParamether(name)
    ๐Ÿ‘‰ name์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์ฐพ์œผ๋ฉด ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค
    ๐Ÿ‘‰ ์˜ˆ์‹œ๋กœ ๋“ค์ž๋ฉด http://localhost:8080/menu/detail.jsp?no=1
    ๐Ÿ‘‰ request.getParamether(no) ๋ฅผ ํ•˜๋ฉด return ๊ฐ’์œผ๋กœ 1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


    ๐Ÿ“Œ no๋ฅผ ๊ฑฐ์ณ๊ฐ€์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฉ”๋‰ด๋ชฉ๋ก์„ ์•ˆ๊ฑฐ์น˜๊ณ  ์กฐํšŒํ™”๋ฉด์˜ ์ฃผ์†Œ๋กœ ๋ฐ”๋กœ ๋“ค์–ด๊ฐˆ์ˆ˜์žˆ๊ธฐ ๋•Œ๋ฌธ์—.



5. PRG ํŒจํ„ด (Post Redirect Get)

๐Ÿ‘‰ POST์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ Redirect๋ฅผ ํ†ตํ•ด GET์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹

๐Ÿ“Œ POST๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ฒฐ์„ฑ์ด ์žˆ์–ด์„œ ๊ธ€์„ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๊ฒŒ ๋œ ์ดํ›„์— ์ƒˆ๋กœ๊ณ ์นจ์„ ์—ฐ๋ฐœํ•˜๋ฉด ๊ทธ๋งŒํผ DB์™€ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ๋ง‰๊ธฐ์œ„ํ•ด Redirect๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์ž์ฒด๋ฅผ ์˜ฎ๊ฒจ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ post๋ฐฉ์‹์€ ์œ„ํ—˜ํ•˜๋ฏ€๋กœ post๊ฐ€ ๋๋‚˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋น ์ ธ๋‚˜๊ฐ€๊ฒŒ ์„ค๊ณ„ํ•œ๋‹ค.

์˜ˆ์‹œ)

```java
<form action = "/cart/addCart.jsp" method="post"> 
  //detail.jsp //๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด cart- addcart๋กœ ์ด๋™๋˜๋Š”๋ฐ
response.sendRedirect("/cart/showCart.jsp"); 
//addcart.jsp // addcart๋กœ ์ด๋™์ด ๋๋‹ค๊ฐ€(์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ƒํ’ˆ์„ ๋‹ด์•˜์Šต๋‹ˆ๋‹ค)๋œจ๊ณ  ๋ฐ”๋กœ showCart๋กœ ์ด๋™
```

๐Ÿ‘† ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•ด๋ณด์ž

๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ addCart(post) ๋“ค๋ €๋‹ค ๋ฐ”๋กœ showCart(get)๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๊ฒŒ ๋จ
-> post ์ƒํƒœ์—์„œ db์— ๋„๋ฐฐ๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก

6. DATABASE

6-1. Maria DB ๋‹ค์šด๋กœ๋“œ ๋ฐฉ๋ฒ•.

  1. https://mariadb.org/ โ†’ ๋‹ค์šด๋กœ๋“œ โ†’ ์„ค์น˜ํŒŒ์ผ ์—ด์–ด์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ • ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ next โ†’ ํŒจ์Šค์›Œ๋“œ12345678 โ†’ root ๋ฒ„ํŠผ ์ฒดํฌํ•ด์ œ โ†’

  2. utf-8 ์ฒดํฌ โ†’ tcp port 13306์œผ๋กœ ๋ณ€๊ฒฝ โ†’ ํ•˜์ด๋””sql์—ด๊ธฐ โ†’ ์‹ ๊ทœ โ†’
    ์•”ํ˜ธ์น˜๊ณ , ํฌํŠธ 13306 ํ•˜๊ณ  ์—ด๊ธฐ โ†’ ์•„๋ž˜ ์ฝ”๋“œ ํ•œ ๋‹จ์”ฉ (์„ ํƒ์‹คํ–‰)ํ•ด์ฃผ๊ธฐ โ†’ ์ข…๋ฃŒํ›„ ๋‹ค์‹œ์ผœ๊ธฐ โ†’
    ์‹ ๊ทœ โ†’ ์‚ฌ์šฉ์ž์ด๋ฆ„ : webdbuser, ์•”ํ˜ธ webdbuser, ํฌํŠธ 13306, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค webdb โ†’ ์—ด๊ธฐ

  3. ์ธํ…”๋ฆฌ์ œ์ด ๋“ค์–ด๊ฐ€์„œ ์˜ค๋ฅธ์ชฝ db๋ชจ์–‘ ๋ˆ„๋ฅด๊ธฐโ†’ ํ”Œ๋Ÿฌ์Šค ๋ˆŒ๋Ÿฌ์„œ datasource โ†’ mariadb โ†’
    user์ด๋ฆ„: webdbuser, ํŒจ์Šค์›Œ๋“œ: webdbuser, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: webdb, ํฌํŠธ๋ฒˆํ˜ธ: 13306,
    ์•„๋ž˜ ๋‹ค์šด๋กœ๋“œ ๋“œ๋ผ์ด๋ฒ„ ๋œจ๋ฉด ๋‹ค์šด๋กœ๋“œ โ†’ test connection โ†’ apply ok



6-2. ์ดํด๋ฆฝ์Šค ์„ค์น˜๋ฐฉ๋ฒ•

์ดํด๋ฆฝ์Šค ์ธ์Šคํ†จ๋Ÿฌ์—์„œ eclipse ide for enterprise ์„ค์น˜ โ†’ ์„ค์น˜ โ†’ ์—ด์–ด์„œ โ†’ window โ†’ preferences โ†’ workspace โ†’ utf-8 ํ™•์ธ โ†’ dynamic web project โ†’ ํ”„๋กœ์ ํŠธ๋ช…์ ๊ณ , new runtime, tomcat 10.1 โ†’ configuration์€ ํ˜„์žฌ ๊น”๋ ค์žˆ๋Š” ํ†ฐ์บฃ ์œ„์น˜ (default configuration for apache tomcat v10.1) โ†’ next โ†’ next โ†’ finish โ†’ ์™ผ์ชฝ ํด๋” ๋ชฉ๋ก์—์„œ webapp์—์„œ jspํŒŒ์ผ ์ƒ์„ฑ โ†’ run as โ†’ run on server โ†’ apache 10.1 โ†’ next ๋ˆŒ๋Ÿฌ์„œ ์ด๋ฆ„๋– ์žˆ๋‚˜ ๋ณด๊ณ  โ†’ finish



6-3. ์ดํด๋ฆฝ์Šค์—์„œ ์„œ๋ธ”๋ฆฟ

โ†’ main ๋ฐ‘์— java์—์„œ package ์ƒ์„ฑ โ†’ ํŒจํ‚ค์ง€ ์•ˆ์— servlet ์ƒ์„ฑ

  

0๊ฐœ์˜ ๋Œ“๊ธ€