[JSP] JSP와 μžλ°” λΉˆμ¦ˆμ— λŒ€ν•˜μ—¬

κ°œμš”


λΉˆμ¦ˆλž€, νŠΉμ •ν•œ 일을 λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. μ›λž˜ μžλ°”μ—μ„œλŠ” GUIλ₯Ό μ œμž‘ν•˜κΈ° μœ„ν•΄ 빈즈λ₯Ό λ§Œλ“€μ—ˆμ§€λ§Œ ν˜„μž¬λŠ” J2EEκ°€ λ°œν‘œλ˜λ©΄μ„œ JSPμ—μ„œ μ‚¬μš©λ˜λŠ” JSP λΉˆμ¦ˆμ™€ μ—”ν„°ν”„λΌμ΄μ¦ˆ μžλ°” 빈즈둜 λ‚˜λ‰˜μ–΄ κ°œλ…μ΄ ν™•μž₯λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λ“€μ˜ μš©λ„λŠ” λ‹€λ₯΄μ§€λ§Œ ν”„λ‘œκ·Έλž¨ λͺ¨λ“ˆν™”λ₯Ό μœ„ν•œ μ»΄ν¬λ„ŒνŠΈλΌλŠ” κΈ°λ³Έ μ „μ œλŠ” κ°™μŠ΅λ‹ˆλ‹€.

 

JSP 빈즈


JSP λΉˆμ¦ˆλŠ” JSP와 μ—°λ™ν•˜λ €κ³  λ§Œλ“€μ–΄μ§„ μ»΄ν¬λ„ŒνŠΈ 클래슀λ₯Ό λ§ν•©λ‹ˆλ‹€. JSP λΉˆμ¦ˆλŠ” μ»¨ν…Œμ΄λ„ˆμ— μœ„μΉ˜ν•˜λ©°, JSP에 λ°μ΄ν„°λ² μ΄μŠ€ 연동 λ“± ν”„λ‘œκ·Έλž¨μ  μš”μ†Œλ₯Ό λͺ¨λ“ˆν™”ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€. λ”°λΌμ„œ 빈즈λ₯Ό 잘 ν™œμš©ν•œλ‹€λ©΄ ν”„λ‘œκ·Έλž¨μ˜ 쀑볡을 쀄이고 더 μ›ν™œν•˜κ²Œ μœ μ§€ λ³΄μˆ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ΅œλŒ€ν•œ μŠ€ν¬λ¦½νŠΈλ¦Ώμ„ μ‚¬μš©ν•˜λŠ” 것보닀 빈즈λ₯Ό λ§Œλ“€μ–΄ ν™œμš©ν•˜λŠ” 것이 쒋은 μ½”λ“œλ₯Ό λ§Œλ“€ 수 μžˆλŠ” 방법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

 

보톡 JSP 빈즈λ₯Ό κ°€μž₯ 많이 μ΄μš©ν•˜λŠ” κ²½μš°λŠ” HTML 폼을 μ²˜λ¦¬ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€μ™€ 연동할 λ•Œ 주둜 μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€.

MVC νŒ¨ν„΄μ—μ„œλŠ” 빈즈 클래슀λ₯Ό κ°œλ³„ JSPμ—μ„œ μ‚¬μš©ν•˜κΈ°λ³΄λ‹€λŠ” μ»¨νŠΈλ‘€λŸ¬μ—μ„œ μ‚¬μš©ν•˜κ³  뷰에 ν•„μš”ν•œ 객체듀을 λ§Œλ“€μ–΄ κ³΅κΈ‰ν•˜λŠ” ν˜•νƒœλ‘œ κ΅¬ν˜„ν•˜κ²Œ λ©λ‹ˆλ‹€.

 

MVC νŒ¨ν„΄μ„ μ μš©ν•œ κ²½μš°μ—μ„œμ˜ 빈즈 μ‚¬μš©

 

  1. μ‚¬μš©μž μž…λ ₯을 λ°›κΈ° μœ„ν•œ HTML 폼 μž…λ ₯값은 jsp둜 μ „λ‹¬λœλ‹€.
  2. jspμ—μ„œ useBean μ•‘μ…˜μ„ 톡해 빈즈 클래슀λ₯Ό 뢈러였고 setPropertyλ₯Ό 톡해 νΌμœΌλ‘œλΆ€ν„° 전달받은 값을 빈즈 클래슀의 λ©€λ²„λ³€μˆ˜μ˜ κ°’μœΌλ‘œ μ „λ‹¬ν•œλ‹€.
  3. μ΄λ•Œ 빈즈 클래슀의 setter λ©”μ„œλ“œλ“€μ΄ μžλ™μœΌλ‘œ ν˜ΈμΆœλœλ‹€. 
  4. 빈즈 ν΄λž˜μŠ€λŠ” μ–»μ–΄λ‚Έ 데이터듀을 μ΄μš©ν•˜μ—¬ 데이터 베이슀 둜직 처리λ₯Ό ν•˜κ³ , κ²°κ³Όλ₯Ό jsp둜 μ „λ‹¬ν•œλ‹€. 
  5. jspλŠ” μ μ ˆν•œ 뷰둜 ν¬μ›Œλ”©μ„ ν•˜μ—¬ μ–»μ–΄λ‚Έ κ²°κ³Όλ₯Ό μ‚¬μš©μžμ—κ²Œ 보여쀀닀.

 

JSPμ—μ„œμ˜ 빈즈 κ΅¬ν˜„ 


일반적으둜 JSPμ—μ„œμ˜ 빈즈 κ΅¬ν˜„μ€ μ„Έ 가지 ν˜•νƒœλ‘œ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ°μ΄ν„°λ² μ΄μŠ€ 연동을 ν¬ν•¨ν•΄μ„œ 데이터와 μ—¬λŸ¬ κΈ°λŠ₯을 ν•¨κ»˜ κ΅¬ν˜„ν•˜λŠ” 방법(DO + DAO 클래슀의 톡합 ν˜•νƒœ) 

빈즈 내뢀에 λ°μ΄ν„°λ² μ΄μŠ€ 접속과 κ΄€λ ¨λœ 정보λ₯Ό ν¬ν•¨ν•˜μ—¬ μž…λ ₯,좜λ ₯,μ‚­μ œμ™€ 같은 λͺ¨λ“  λ°μ΄ν„°λ² μ΄μŠ€ 처리 λ‘œμ§μ„ κ°–λŠ” ν˜•νƒœ. 쉽고 λΉ λ₯΄κ²Œ κ΅¬ν˜„ν•  수 있음 

데이터 맀핑과 λ°μ΄ν„°λ² μ΄μŠ€ 접속,μž…λ ₯,좜λ ₯,μ‚­μ œμ™€ νŠΈλžœμž­μ…˜ 처리λ₯Ό λΆ„λ¦¬ν•˜μ—¬ κ΅¬ν˜„ν•˜λŠ” 방법(DO, DAO 클래슀 뢄리) 

DataObject와 DataAccess Objectλ₯Ό λΆ„λ¦¬ν•œ ν˜•νƒœλ‘œ, DO ν΄λž˜μŠ€μ—λŠ” ν…Œμ΄λΈ”κ³Ό λŒ€μ‘ν•  수 μžˆλŠ” ν•„λ“œ κ΄€λ ¨ κΈ°λŠ₯만 쑴재. λ°μ΄ν„°λ² μ΄μŠ€ 접속과 κ΄€λ ¨ν•œ 정보와 μž…λ ₯, 좜λ ₯, μ‚­μ œμ™€ 같은 κΈ°λŠ₯은 DAOλΌλŠ” 별도 ν΄λž˜μŠ€μ— κ΅¬ν˜„ν•œλ‹€. 톡합 ν˜•νƒœλ³΄λ‹€ κ΅¬ν˜„μ΄ μ–΄λ ΅μ§€λ§Œ, μœ μ§€λ³΄μˆ˜μ— μœ λ¦¬ν•˜λ‹€. 이 방법은 DAO νŒ¨ν„΄μ΄λΌ 뢈리며 보톡 MVC νŒ¨ν„΄κ³Ό ν•¨κ»˜ μ‚¬μš©λœλ‹€.

λ³„λ„μ˜ O-R 맀핑 ν”„λ ˆμž„μ›Œν¬ μ‚¬μš© 

DO,DAO 뢄리 λ°©λ²•μ—μ„œ μ‹€μ§ˆμ μΈ λ°μ΄ν„°λ² μ΄μŠ€ 처리λ₯Ό λ‹΄λ‹Ήν•˜λŠ” DAO λŒ€μ‹  O-R 맀핑 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜λŠ” 방식. O-R λ§€ν•‘μ΄λž€ 빈즈 객체와 λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ˜ μΉΌλŸΌμ„ μžλ™μœΌλ‘œ μ—°κ²°ν•˜κ³ , μ΄λ“€μ˜ 값을 λ™κΈ°ν™”ν•˜λ©° μƒνƒœλ₯Ό μœ μ§€ν•˜λŠ” λ§€μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•¨μœΌλ‘œμ¨ 개발의 생산성과 μ•ˆμ •μ„±μ„ 높일 수 μžˆλŠ” 방법이닀.

 

빈즈 클래슀 ꡬ쑰 및 κ·œμΉ™


기본적으둜 λΉˆμ¦ˆν΄λž˜μŠ€λŠ” μžλ°” ν΄λž˜μŠ€μ΄λ―€λ‘œ, μžλ°” 클래슀 ꡬ성을 λ”°λ₯΄κ²Œ λ©λ‹ˆλ‹€. λ‹€λ§Œ JSP μ•‘μ…˜κ³Ό μ—°λ™ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λͺ‡ 가지 ν•„μˆ˜ κ΅¬μ„±μ˜ μ°¨μ΄λŠ” μ‘΄μž¬ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ΄λŠ” 문법적인 μ œμ•½μ€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— λ”°λ‘œ 컴파일 였λ₯˜κ°€ λ”°λ₯΄μ§„ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ! 일반적인 λΉˆμ¦ˆλŠ” λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” κΈ°λ³Έ μƒμ„±μžλ₯Ό μš”κ΅¬ν•˜λ―€λ‘œ 만일 λ§€κ°œλ³€μˆ˜κ°€ μ‘΄μž¬ν•˜λŠ” μƒμ„±μžλ₯Ό κ΅¬ν˜„ν•˜λŠ” κ²½μš°μ—λŠ” λ°˜λ“œμ‹œ κΈ°λ³Έ μƒμ„±μžλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•΄μ£Όμ–΄μ•Όλ§Œ λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·œμΉ™μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 

λ©€λ²„λ³€μˆ˜ 

λ©€λ²„λ³€μˆ˜λŠ” private둜 μ„ μ–Έν•΄μ„œ 클래슀 μ™ΈλΆ€μ—μ„œμ˜ 접근을 λ§‰μ•„μ•Όν•©λ‹ˆλ‹€. λ”°λΌμ„œ λ©€λ²„λ³€μˆ˜μ— μ ‘κ·Όν•˜λ €λ©΄ 빈즈 클래슀의 λ‚΄λΆ€ λ©”μ„œλ“œλ₯Ό μ΄μš©ν•΄μ•Όλ§Œ ν•˜λ©°, 이것이 λ°”λ‘œ getXxx, setXxx와 같은 λ©”μ„œλ“œλ“€μž…λ‹ˆλ‹€.

 

getter, setter λ©”μ„œλ“œ 

JSP μ•‘μ…˜μΈ setProperty와 getProperty에 μ˜ν•΄μ„œ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œλ“€μž…λ‹ˆλ‹€. λ°˜λ“œμ‹œ JSP μ•‘μ…˜μ—μ„œ μ§€μ •ν•œ property μ΄λ¦„μ˜ 첫 κΈ€μžλ₯Ό λŒ€λ¬Έμžλ‘œ ν•˜λŠ” setXxx,getXxx ν˜•μ‹μ˜ λ©”μ„œλ“œμ—¬μ•Ό ν•œλ‹€λŠ” κ·œμΉ™μ΄ μžˆμŠ΅λ‹ˆλ‹€.