์ž๋Š” ์”จ์•—
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๐Ÿฃ ๊ธฐ์ดˆ ๊ฐœ๋…
    • ๐Ÿ“Ž ์œ ํŠœ๋ธŒ
    • ๐Ÿ’พ ์กฐ๊ฐ๋ชจ์Œ
    • ๐Ÿ‘ฉ‍๐Ÿ’ป Error
    • โ„ React
    • ๐ŸฅPython
    • ๐Ÿ€ Spring
    • ๐Ÿฅž JS
    • ๐Ÿ‹ Docker
    • ๐Ÿงญ WSO2
    • ๐Ÿง Linux
    • ๐Ÿ”— SQL
    • ๐Ÿข C#
    • ๐Ÿ“‘ ์ฝ์„๊ฑฐ๋ฆฌ
    • ๐Ÿ‘€์งˆ๋ฌธ๋“ค
    • ๐Ÿ‘ฉ‍๐Ÿ’ป ๊ตญ๋น„ ์ˆ˜์—…
      • Java ์ž๋ฐ”
      • Oracle ์˜ค๋ผํด
      • JDBC
      • HTML & CSS
      • JavaScript
      • JSP
      • Servlet
      • Spring
      • MyBatis
    • ๐Ÿ“• ๊ฐœ๋ฐœ ํ˜ผ๊ณต
      • ์ž๋ฐ”์˜ ์ •์„
      • ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ
hELLO ยท Designed By ์ •์ƒ์šฐ.
์ž๋Š” ์”จ์•—

๐ŸŒฑ

0501 Servlet MVC๊ตฌ์กฐ Model2(MVC2)๋ฐฉ์‹์˜ ๊ฐœ๋ฐœ Controller interface์™€ Map ์‚ฌ์šฉ๋ฒ• ํŽ˜์ด์ง€ ์ด๋™(forward) Servlet
๐Ÿ‘ฉ‍๐Ÿ’ป ๊ตญ๋น„ ์ˆ˜์—…/Servlet

0501 Servlet MVC๊ตฌ์กฐ Model2(MVC2)๋ฐฉ์‹์˜ ๊ฐœ๋ฐœ Controller interface์™€ Map ์‚ฌ์šฉ๋ฒ• ํŽ˜์ด์ง€ ์ด๋™(forward) Servlet

2023. 5. 14. 22:53

*MVC๊ตฌ์กฐ

  • Model : class –DB์ž‘์—… ์ฒ˜๋ฆฌ
                  DAO, VO๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DB์ž‘์—… ์ˆ˜ํ–‰
  • View : JSP – ์—…๋ฌด๋กœ์ง์„ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ Action์ด ๋ฐ˜ํ™˜ํ•˜๋ฉด ํ™”๋ฉด์„ ๋งŒ๋“ค๊ณ  ์‘๋‹ตํ•˜๋Š” ์ผ
  • Controller : Servlet- ์ง„์ž…์ , Action์„ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋ฌด์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›๊ณ  JSP๋กœ ์ด๋™ํ•˜๋Š” ์ผ
                       -Actionํด๋ž˜์Šค ์ž‘์„ฑ : Web Parameter์ฒ˜๋ฆฌ, ๊ด€๊ณ„์œ ์ง€์ฒ˜๋ฆฌ, ViewํŽ˜์ด์ง€์„ค์ •
                       -Service(Process)ํด๋ž˜์Šค์ž‘์„ฑ : ์—…๋ฌด๋กœ์ง ์ฒ˜๋ฆฌ

 

 

Controller(์ง„์ž…์ ) Model(DB์™€์˜ ์—ฐ๋™) view
Servlet 
-๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›๋Š” ํ•˜๋‚˜์˜ ์ง„์ž…์ 
-ํ‚ค๊ฐ€ ์žˆ์Œ
-map์„ ์จ์„œ action์„ ์‹คํ–‰
-action ์•ˆ์—์„œ model๋กœ ๊ฐ€์„œ db์™€ ์—ฐ๋™ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์™€์„œ process๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด action์—์„œ viewํŽ˜์ด์ง€๋ช…๊ณผ ์ด๋™๋ฐฉ์‹์„ ๋„ฃ์–ด์ค˜์„œ ์ด๋™ํ•จ
-์ ‘์†์ž์—๊ฒŒ ์‘๋‹ต๋จ
  ์—…๋ฌด ๋กœ์ง ๊ฒฐ๊ณผ๋ฅผ Action์ด ๋ฐ˜ํ™˜ํ•˜๋ฉด
(Scope๊ฐ์ฒด์— ๋„ฃ์œผ๋ฉด)
(Scope์ด ๊ฐ’์„ ์ „๋‹ฌํ•ด์คŒ)
ํ™”๋ฉด(view page)์„ ๋งŒ๋“ค์–ด ์‘๋‹ต
๋‹จ์ˆœ ํŽ˜์ด์ง€ ์ด๋™: DB๊ฐ€ ์—ฐ๋™๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€
์ ‘์†์ž ์š”์ฒญ > map์œผ๋กœ ๊ฐ€์„œ Action ์‹คํ–‰ํ•ด์„œ ์—ฐ์‚ฐ๋„ ์•ˆํ•˜๊ณ  ํŽ˜์ด์ง€ ์ด๋™ํ•ด์„œ JSP๊ฐ€ ์‘๋‹ต๋จ
DB์‚ฌ์šฉ ์—†์ด ์—…๋ฌด๋งŒ ์ฒ˜๋ฆฌ:
์ ‘์†์ž ์š”์ฒญ > ์•ก์…˜์„ ํƒ€๊ณ  ํ”„๋กœ์„ธ์Šค๋ฅผ ํƒ€๊ณ  ์—ฐ์‚ฐํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ์•ก์…˜์ด ๋ฐ›์•„์„œ ์„œ๋ธ”๋ฆฟํ•œํ…Œ ์ฃผ๊ณ  ๋ทฐํ•  jsp, ์ด๋™๋ฐฉ์‹, ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ณ  jsp๋กœ ์‘๋‹ต๋จ
DB์‚ฌ์šฉํ•˜๋Š” ์—…๋ฌด
์š”์ฒญ > ์ง„์ž…์  > ๋งต > ํ”„๋กœ์„ธ์Šค > db์“ฐ๊ธฐ ์œ„ํ•ด ๋ชจ๋ธ๋กœ ๊ฐ > DB์จ์„œ ๋‚˜์˜จ ๊ฒฐ๊ณผ(int, VO, LIst<VO>)๋ฅผ ๋ฐ›์•„ ํ”„๋กœ์„ธ์Šค>์•ก์…˜์œผ๋กœ ๊ฐ€์„œ ์•ก์…˜์—์„œ ์กฐํšŒํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ  servlet์œผ๋กœ ์˜ค๋ฉด ์ด๋™ํ•  ํŽ˜์ด์ง€, ์ด๋™๋ฐฉ์‹์„ ๋ฐ›์•„ jsp๋กœ ๊ฐ„ ๋’ค ์‘๋‹ต๋จ

 


*Model2(MVC2)๋ฐฉ์‹์˜ ๊ฐœ๋ฐœ

 - MVCํŒจํ„ด์„ Web์— ์ ์šฉํ•œ ๊ฐœ๋ฐœ pattern

  • Model  : ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ(DB์ž‘์—…)        - ์ผ๋ฐ˜  class
  • View    : ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ์ž‘์—… - JSP
  • Controller : ์—…๋ฌด๋กœ์ง ์ฒ˜๋ฆฌ.            - Servlet

 

 - ์žฅ์  : ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํ–ฅ์ƒ๋จ
            (์—…๋ฌด์— ๋”ฐ๋ผ ํŒŒ์ผ์ด ๋ถ„๋ฆฌ๋˜์–ด ์ž‘์„ฑ๋จ)

 - ๋‹จ์  : ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง (ํŒŒ์ผ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›€)
           ๊ฐ’ ๋„˜๊ธฐ๊ธฐ๊ฐ€ ๋ถˆํŽธํ•จ
           ์—๋Ÿฌ์žก๊ธฐ๊ฐ€ ๋ถˆํŽธํ•จ => ์‚ฐ์ถœ๋ฌผ์„ ๋งŒ๋“œ๋Š” ์†๋„๊ฐ€ ๋‹ค์†Œ ๋А๋ฆผ


 - ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•œ ๊ตฌ์กฐ
   (์—…๋ฌด๋ณ„๋กœ ๋‚˜๋ˆ  ์ž‘์—…ํ•˜๊ธฐ ์ข‹์Œ)

 


*Software์˜ ์ƒ๋ช…์ด ๋๋‚˜๋Š” ๋•Œ๋Š” “๋” ์ด์ƒ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋˜์ง€ ์•Š์„ ๋•Œ”
  ๊ฐœ๋ฐœ ๋น„์šฉ์ด ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ๋ณด๋‹ค ์ ์„ ๋•Œ


*Model1๋ฐฉ์‹์˜ ๊ฐœ๋ฐœ

 -JSP : ํ™”๋ฉด๊ตฌํ˜„, ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ, ์—…๋ฌด๋กœ์ง์ฒ˜๋ฆฌ

 -JSP+class :
  JSP : ํ™”๋ฉด๊ตฌํ˜„, ์—…๋ฌด๋กœ์ง์ฒ˜๋ฆฌ
  class : ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ

 

์žฅ์  : ํŒŒ์ผ ๊ฐœ์ˆ˜๊ฐ€ ์ ์Œ (ํŒŒ์ผ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•จ)
        ๊ฐ’ ๋„˜๊ธฐ๊ธฐ๊ฐ€ ํŽธํ•จ
        ์—๋Ÿฌ์žก๊ธฐ ํŽธํ•จ => ์‚ฐ์ถœ๋ฌผ์„ ๋งŒ๋“œ๋Š” ์†๋„๊ฐ€ ๋น ๋ฆ„


๋‹จ์  : ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€
     (์—…๋ฌด๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์ด ํ•˜๋‚˜์˜ JSP์— ์ •์˜ )


1.Controller

-Servlet์€ ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์•„์•ผ ํ•จ ( ์ง„์ž…์  ์„ค์ • )

๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›๊ณ 
์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  XxxAction์„ ์ฐพ์•„์„œ ์‹คํ–‰
XxxAction์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™

 

 -DD์„ค์ •
   ์ด๋ฆ„์ด ๋‹ค๋ฅด๋”๋ผ๋„ ํ™•์žฅ์ž๋ฅผ ๊ฐ™๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

  <servet>
   <servlet-name>๊ฐ์ฒด๋ช…</servlet-name>
   <servlet-class>ํŒจํ‚ค์ง€๋ช….ํด๋ž˜์Šค๋ช…</servlet-class>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>๊ฐ์ฒด๋ช…</servlet-name>
     <url-pattern>*.do</url-pattern>
  </servlet-mapping>

 


2. interface์™€ java.util.Map ์‚ฌ์šฉ๋ฒ•

*๊ฐ์ฒด ๋‹คํ˜•์„ฑ
  -๊ฐ™์€ ์ด๋ฆ„์˜ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

*java.util.Map

  -ํ‚ค์™€ ๊ฐ’์„ ์Œ์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ ํ˜•
  -ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๊ฒ€์ƒ‰

 

 

 

3. ์„œ๋ธ”๋ฆฟ์—์„œ JSP ๋กœ ํŽ˜์ด์ง€์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

 forward์™€ redirect๋ฅผ ์‚ฌ์šฉํ•œ ํŽ˜์ด์ง€ ์ด๋™ //response.sendRedirect(“URL”);

 

1.์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด scope๊ฐ์ฒด์— ํ• ๋‹น
request.setAttribute(“์ด๋ฆ„”,๊ฐ’);

2.์ด๋™ํ•  ํŽ˜์ด์ง€ ์„ค์ •
RequestDispatcher rd=request.getRequestDispatcher(“URI”);

3. ํŽ˜์ด์ง€ ์ด๋™
rd.forward(request,response);


ํด๋ž˜์Šค๋ฅผ Map์— ๋„ฃ์–ด ์‚ฌ์šฉ

1.Map์ƒ์„ฑ
Map map=new HashMap();

2.Map ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํด๋ž˜์Šค๋ฅผ ํ• ๋‹น
 map.put(“a”,new A());
 map.put(“b”,new B());
 map.put(“c”,new C());

3.์‚ฌ์šฉ (Key๋ฅผ ๋„ฃ์–ด ๊ฐ’์„ ์–ป์Œ)
String key=“a”; // || b || c

 

//๊ฐ์ฒด๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ค‘๋ณต์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•จ

if( “a”.equals(key”) ){
A a=(A)map.get( key );
 a.execute();
}
if( “b”.equals(key”) ){
B b=(B)map.get( key );
 b.execute();
}
if( “c”.equals(key”) ){
C c=(C)map.get( key );
 c.execute();
}

ํด๋ž˜์Šค๋ฅผ Map์— ๋„ฃ์–ด ์‚ฌ์šฉ

1.Map์ƒ์„ฑ
Map<String,SuperInterface> map=new HashMap<String,SuperInterface>();

2.Map ๊ฐ์ฒด ์ƒ์„ฑํ•˜์—ฌ ํ• ๋‹น
 map.put(“a”,new A());
 map.put(“b”,new B());
 map.put(“c”,new C());

3.์‚ฌ์šฉ (Key๋ฅผ ๋„ฃ์–ด ๊ฐ’์„ ์–ป์Œ)

๊ฐ์ฒด ๋‹คํ˜•์„ฑ- ๊ฐ’์„ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ค„์–ด๋“ ๋‹ค
String key=“a”; // ||b||c
SuperInterface si=map.get( key );

// ๊ฐ’์„ ๊บผ๋‚ผ ๋•Œ ํ‚ค๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์ž์‹์ด ๋‚˜์˜ด,

 

//์ž์‹์ด ๋ถ€๋ชจ์— ํ• ๋‹น๋œ ๋’ค ๋ถ€๋ชจ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ž์‹์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋จ

 String value=si.execute(); //override ๋œ method๊ฐ€ ์ตœ์šฐ์„ ์ ์œผ๋กœ ํ˜ธ์ถœ๋จ

 


*์ผ๋ฐ˜ ํด๋ž˜์Šค์—์„œ Web Parameter ์ฒ˜๋ฆฌ

  - Servlet์ด๋‚˜ JSP๊ฐ€ ์š”์ฒญ๋˜๋ฉด HttpServletRequest ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ฐ์ฒด๋ฅผ WAS๋กœ ๋ถ€ํ„ฐ ํ• ๋‹น ๋ฐ›์Œ
Servlet์ด๋‚˜ JSP์—์„œ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  request๋‚˜ response๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ผ๋ฐ˜ํด๋ž˜์Šค์—์„œ ์›น ํŒŒ๋ผ๋ฉ”ํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

 


*Servlet

 - ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›๊ธฐ  ( web.xml  ์„ค์ •)
 - ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” Map์„ ๊ฐ€์ง
 - Map์—์„œ Action์„ ์ฐพ์Œ
 - Action์˜ method๋ฅผ ํ˜ธ์ถœ ( ์›น ํŒŒ๋ผ๋ฉ”ํ„ฐ์ฒ˜๋ฆฌ, ๊ด€๊ณ„์œ ์ง€, ํŽ˜์ด์ง€ ์ด๋™๋ฐฉ์‹ ์„ค์ •, ์ด๋™ํ• ํŽ˜์ด์ง€ URL์„ค์ •)
 - Action์—์„œ ์ด๋™ํ•  ํŽ˜์ด์ง€์™€, ์ด๋™๋ฐฉ์‹์„ ๋ฐ›์•„์™€์„œ JSP๋กœ ์ด๋™

 

 

 

*XxxAction : ๊ฐ์ฒด๋‹คํ˜•์„ฑ์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์•ผ ์œ ๋ฆฌ
 - ์›น ํŒŒ๋ผ๋ฉ”ํ„ฐ ๋ฐ›๊ธฐ, ๊ด€๊ณ„์œ ์ง€์ˆ˜ํ–‰(session,cookie), ํŽ˜์ด์ง€์ด๋™๋ฐฉ์„ค์ •, ์ด๋™ํ•  ํŽ˜์ด์ง€ URL์„ค์ • 

 -XxxService๋ฅผ ์‚ฌ์šฉ


*XxxService 
  - ์—…๋ฌด๋กœ์ง์„ ๊ตฌํ˜„,  DAO๋‹จ์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉ

*XxxDAO
 -DB์ž‘์—…์ˆ˜ํ–‰

*XxxVO : 
-DB์— ๊ฐ’์„ ์ž…๋ ฅํ•  ์šฉ๋„๋กœ ์‚ฌ์šฉ

*XxxDomain :
 - ์กฐํšŒ๋œ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•  ์šฉ๋„๋กœ ์‚ฌ์šฉ

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ‘ฉโ€๐Ÿ’ป ๊ตญ๋น„ ์ˆ˜์—… > Servlet' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Servlet 0426 DD์— ์„œ๋ธ”๋ฆฟ ์„ค์ • Servlet Life Cycle redirect forward ๊ด€๊ณ„์œ ์ง€(session, cookie) DD๊ฐ’ ์‚ฌ์šฉ(init-param, context-param)  (0) 2023.05.01
    '๐Ÿ‘ฉ‍๐Ÿ’ป ๊ตญ๋น„ ์ˆ˜์—…/Servlet' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • Servlet 0426 DD์— ์„œ๋ธ”๋ฆฟ ์„ค์ • Servlet Life Cycle redirect forward ๊ด€๊ณ„์œ ์ง€(session, cookie) DD๊ฐ’ ์‚ฌ์šฉ(init-param, context-param)

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”