#18 JSP Model1, Model2 (MVC)
by JiwonDev# JavaBean์ด๋
์น์์ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ Java Bean๊ท์น์ ๋ง์ถฐ ์ค๊ณํ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค. Java Bean์ ๊ตฌํํ๋ฉด JSP์์ ํ๊ทธ ๋ชจ์ <jsp:userBean .../> ์ผ๋ก ์ฝ๊ฒ ์ฌ์ฉ๊ฐ๋ฅํ๊ณ , ๋คํธ์ํฌ ์ ์ก์ ํ์ํ ํด๋์ค ์ง๋ ฌํ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค.
Java Bean ํด๋์ค ๊ท์น์ ์๋์ ๊ฐ๋ค.
- ํจํค์ง - ์๋ฐ๋น์ ๊ธฐ๋ณธ(default)ํจํค์ง ์ด์ธ์ ํน์ ํจํค์ง์ ์ํด ์์ด์ผ ํ๋ค.
- ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์กด์ฌํด์ผ ํ๋ค.
- ๋ฉค๋ฒ๋ณ์์ ์ ๊ทผ์ ์ด์๋ private๋ก ์ ์ธ๋์ด์ผ ํ๋ค.
- ๋ฉค๋ฒ๋ณ์์ ์ ๊ทผ ๊ฐ๋ฅํ getter ์ setter ๋ฉ์๋๊ฐ ์กด์ฌํด์ผ ํ๋ค.
- getter ์ setter๋ ์ ๊ทผ์๊ฐ public์ผ๋ก ์ ์ธ๋์ด์ผ ํ๋ค.
- ์ง๋ ฌํ ๋์ด ์์ด์ผ ํ๋ค. (์ ํ์ฌํญ)
package com.dololak;
//default ํจํค์ง๊ฐ ์๋ com.dololak.servlet ํจํค์ง์ ์ํจ
public class User {
//๋ฉค๋ฒ ๋ณ์์ ์ ๊ทผ ์ ์ด์๋ private
private String name;
private Long age;
private String address;
//๊ธฐ๋ณธ ์์ฑ์๊ฐ ์กด์ฌํจ
public User() {}
/*
* ๋ฉค๋ฒ ๋ณ์์ ๋ํ getter setter๊ฐ ์กด์ฌํ๋ฉฐ,
* get ๋๋ set ์ดํ์ ์ฒซ๊ธ์๋ ๋ฉค๋ฒ๋ณ์๋ช
์ ๋๋ฌธ์๋ก
* ๊ทธ ์ดํ๋ ์๋ฌธ์๋ก ํจ
*/
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Long getAge() { return age; }
public void setAge(Long age) { this.age = age; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
}
# ๊ธฐ์กด์ Model1
๊ธฐ์กด์ ์น ๊ฐ๋ฐ์์๋ ๋ทฐ์ ๋ก์ง์ฝ๋๋ฅผ ๋ฐ๋ก ๊ตฌ๋ถํ์ง์๊ณ , JSP ํ์ด์ง ํ๋์์ ๋ชจ๋ ์ฒ๋ฆฌํ์๋ค.
๋ธ๋ผ์ฐ์ ์ ํ์ด์ง ์์ฒญ์ด ๋ค์ด์ค๋ฉด [JSP ํ์ด์ง]์์ ์ฌ์ฉ๋๋ JavaBean์ด๋ ๋ฐ๋ก ์์ฑํ ํด๋์ค๋ฅผ ์ด์ฉํ์ฌ WAS์์ ์๋ธ๋ฆฟ์ ์์ฑ, ๋ก์ง ์ฒ๋ฆฌ ํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ์กํ๋ค.
์ด์ ๊ฐ์ ๋ฐฉ์์ ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ ๊ฐ๋ฐ์ด ์ฝ์ง๋ง, ์ถ๋ ฅ์ ์ํ View ์ฝ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋น์ฆ๋์ค ๋ก์ง ์ฝ๋๊ฐ ํจ๊ป ์์ธ๋ค๋ ๋จ์ ์ด ์๋ค. ๋ฌด์๋ณด๋ค ํด๋น JSP ์ฝ๋๋ ๋์์ด๋์ ๊ฐ๋ฐ์๊ฐ ํ์ ํ๊ธฐ ์ด๋ ค์ ๊ณ ์ ์ง๋ณด์๊ฐ ๋ณต์กํด์ก๋ค.
# Model2
๊ทธ๋์ ๋์จ ๋ฐฉ๋ฒ์ด MVC (Model-View-Controller) ๊ฐ๋ ์ ๋์ ํ Model2์ด๋ค.
๋จ ํ๋์ ์๋ธ๋ฆฟ๋ง์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฐ ์ฝ๋๋ค๋ก ์ฒ๋ฆฌํ๊ณ , View ์ ํด๋นํ๋ ์ฝ๋๋ง JSP์ ๋จ๊ธด๋ค. ์ฝ๊ฒ ๋งํด [ ์๋ธ๋ฆฟ(Controller) ] - [ ์๋ฐ ํด๋์ค, JavaBean(Model) ] - [ JSP ํ์ด์ง(View) ]๋ฅผ ๋ถ๋ฆฌํด์ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ.
๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ถ๋ ฅ ์ฝ๋๊ฐ ๋ถ๋ฆฌ๋์ด ์ ์ง๋ณด์๊ฐ ์ฝ๊ณ , ํ์ ์ ์ข์ง๋ง ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๊ณ Model๊ณผ View๋ฅผ ๋๋๊ธฐ์ํด์ Java์ ๊ฐ์ฒด์งํฅ์ ๋ํ ๊น์ ์ดํด๊ฐ ํ์ํด ์ค๊ณํ๊ธฐ ์ด๋ ค์์ง๋ค๋ ๋จ์ ์ด ์๋ค.
- Model (์๋น์ค ํด๋์ค, ์๋ฐ ๋น)
๋น์ฆ๋์ค ๋ก์ง์ ํด๋นํ๋ ๋ชจ๋ ๊ฒ๋ค์ด ๋ชจ๋ธ์ ์ํ๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค View ์ฝ๋๋ฅผ ์ ์ธํ ๋ก์ง๋ค์ ์ํํ๊ณ ๊ฒฐ๊ณผ ๊ฐ์ ์ปจํธ๋กค๋ฌ์ ๋ฐํํ๋ค. ํ์ํ๋ค๋ฉด request ๊ฐ์ฒด๋ session ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. - View ( JSP ํ์ด์ง )
์ถ๋ ฅ์ ํด๋นํ๋ ์๋ฐ ์ฝ๋๋ฅผ JSP๋ก ์์ฑํ๋ค. ์์ ์ด ํ์ํ๋ค๋ฉด ์ปจํธ๋กค๋ฌ์ ์์ฒญ์ ๋ณด๋ด๊ณ , request ๋ session ๊ฐ์ฒด๋ฑ์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ํ ๋๋ก HTML ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ค. - Controller ( ์๋ธ๋ฆฟ )
๋ธ๋ผ์ฐ์ ์์ฒญ์ ๋ถ์ํ์ฌ ์ ์ ํ๊ฒ Model, View๋ฅผ ์คํ์์ผ Model๊ณผ View ์ฝ๋๋ฅผ ๋ถ๋ฆฌ์ํค๋ ์ญํ ์ ํ๋ค.
๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ์๋ธ๋ฆฟ์์ ์ด๋ค ์์ฒญ์ธ์ง ๋ถ์ํ์ฌ ํ์ํ Model์ ํธ์ถํ์ฌ ์ฒ๋ฆฌํ๋ค. Model์์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ์ผ๋ฉด request๋ session ๊ฐ์ฒด๋ฑ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ ๊ทธ๋๋ก View, ์ฆ JSP ์ ๋๊ธด๋ค. (foward๋ redirect) ๊ทธ๋ฆฌ๊ณ ์ต์ข ์ ์ผ๋ก JSP์์ ํด๋ผ์ด์ธํธ์ ์ถ๋ ฅํ๋๋ก ๋ง๋ ๋ค.
foward, redirect ๊ฐ ๋ญ์ฃ ?
WAS๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ(URL)์ ์ฒ๋ฆฌํ๋ค๊ฐ, ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ค๋ฅธ ์๋ธ๋ฆฟ์ด๋ JSP๋ก ์์ํ๋ ๊ฒ์ด๋ค.
Redirect๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๋ค๋ฅธ URL์ฃผ์๋ฅผ ๋๊ฒจ์ฃผ์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฃํ๋๋ก ๋์์ค๋ค. ์ฆ request, response ๊ฐ์ฒด๋ฅผ ๋ค์ ์์ฑํ์ฌ ์๋ธ๋ฆฟ์๊ฒ ์ ๋ฌํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ํ๋ฒ ๋ ์คํํ๋ค. ์คํํ ๋ค์๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ URL ์ฃผ์๊ฐ ๋ฌ๋ผ์ ธ์๋ค.
Foward๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฒ์์ ๋ค๋ฅธ ์๋ธ๋ฆฟ์๊ฒ ์์ํ๋ค. ์๋ฒ ๋ด๋ถ์ ์ผ๋ก๋ ๋ค๋ฅธ ์๋ธ๋ฆฟ์ด ์ผ์ ์ฒ๋ฆฌํ์ง๋ง, ํด๋ผ์ด์ธํธ ์ ์ฅ์์๋ ๋์ผํ URL์์ ์คํ๋์์ผ๋ฏ๋ก ํ ๊ณณ์์ ์ฒ๋ฆฌ๋ ๊ฒ์ฒ๋ผ ์ฌ๊ฒจ์ง๋ค. request, response๋ ๊ฐ์ฒด๋ก ์ ๋ฌ๋๊ธฐ๋๋ฌธ์ ์ฒ์์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ ๋ง๋ค์ง ์๋๋ค.
'๐ฑBackend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
#20 JDBC ํธ๋์ญ์ (Spring -@Transaction) (0) | 2021.07.21 |
---|---|
#19 JDBC (0) | 2021.07.21 |
#17 Servlet Filter (0) | 2021.07.18 |
#16 Servlet ์ดํด (1) | 2021.07.18 |
#15 JSP ์ฟ ํค์ ์ธ์ (0) | 2021.07.16 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev