์๋ ์ฝ๋๋ ์ ๋๋ฆ๋๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ ์ฝ๋ ์
๋๋ค.
MemberDAO์์ ์ค๋ณต ์์ธ๋ฅผ ๋ฐ์ ์์ผ Controller์์ ์ฒ๋ฆฌ๋ฅผ ํฉ๋๋ค.
DuplicateMemberException๋ DuplicateKeyException์ ์๋ฏธ ์๋ uncheck
exception ์ผ๋ก ์ ํ ํ๊ธฐ ์ํด ๋ง๋ Exception์
๋๋ค.
๋จผ์ Member๊ฐ ์ค๋ณต์ธ์ง ์๋์ง select๋ก ๊ฒ์ฌ ํ ์ ์์ง๋ง ์ ๋ ์ค๋ณต์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ค๊ณ ํ์ต๋๋ค.
์ฆ, ์ค๋ณต Member๋ ์กด์ฌํ์ง ์๋๋ค๋ ๋น์ฆ๋์ค ๋ก์ง์ ์์ธ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์
๋๋ค.
๊ถ๊ธํ ์ ์ controller์์ ๋น์ง๋์ค ๋ก์ง์ ์ธ ๊ฒ์ controller์์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋์ง
MemberService์์ ๋ try catch๋ฌธ์ผ๋ก ์์ธ๋ฅผ ์ก์์ ์ฒ๋ฆฌํ์ฌ ์๋ฏธ ์๋ ์์ธ๋ฅผ controller๋ก
throws ํ๊ฑฐ๋
์๋๋ฉด return value๋ฅผ true/fase ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฑด์ง ๊ถ๊ธํฉ๋๋ค.
์ ์๊ฐ์ controller์์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด MemberService ์ชฝ์ด ๊น๋ํ(๋์ด์ค)ํ ์ฝ๋๊ฐ ๋์ด ์ข์ ๋ณด์ ๋๋ค.
๋ค๋ฅธ ์์ธ ์ ๋ต(์ฒ๋ฆฌ)๊ฐ ์๋ค๋ฉด ๋ต๋ณ ๋ถํ ๋๋ฆฝ๋๋ค.
============== Controller ์์ ์์ธ์ฒ๋ฆฌ ====================
========== MemberDAO =============================
@Override
public void insertMember(Member member) throws
DuplicateMemberException {
try {
sqlMapClientTemplate.insert("member.insertMember", member);
} catch (DuplicateKeyException e) {
throw new DuplicateMemberException(e);
}
}
========== MemberService =============================
@Override
public void registMember(Member member) {
memberDAO.insertMember(member);
}
========== MemberController =============================
@RequestMapping("/member/registmember.do")
public String registMember(Member member) {
try {
memberService.registMember(member);
return "main"
} catch (DuplicateMemberException e) {
return "/member/viewregistmemberform";
}
}
============== service์์ ์์ธ์ฒ๋ฆฌ ====================
========== MemberService =============================
@Override
public boolean registMember(Member member) {
try {
memberDAO.insertMember(member);
return true;
} catch (DuplicateMemberException e) {
return false
}
}
========== MemberController =============================
@RequestMapping("/member/registmember.do")
public String registMember(Member member) {
if(memberService.registMember(member) {
return "main";
} else {
return "viewregistmemberform";
}
}
Validation์ ๊ฐ(value)๊ฒ์ฆ๋ง ํ๋ ๊ฒ์ด๋ผ ์๊ฐํ๋๋ฐ
Exception ์ฒ๋ฆฌ๋ ํ๋๊ฑฐ ๊ตฐ์.
view(jsp)์ controller ์ฌ์ด์ ๊ฐ ๊ฒ์ฆ๋ง ํด๋ด์ ํ ์๋ฟ์ง ์์์ ๊ทธ๋ฐ๋ฐ
Validator๋ก Exception ์ฒ๋ฆฌํ๋ ์ฐธ์กฐ ์ฌ์ดํธ๋ ๊ฐ ์ฒ๋ฆฌํ๋ ํ๋ฆ๋ง ์ข ์๋ ค์ฃผ ์ฃผ์๋ฉด ์ ๋ง ๊ฐ์ฌ ํ๊ฒ ์ต๋๋ค.
MemberDAO์์๋ DB Access ๊ด๋ จ ์์ธ์ธ DuplicateKeyException๋ฅผ ๋๋ฉ์ธ ์
์ธ์ธ DuplicateMemberException๋ก ์ ๋ฐ๊ฟ์ ์๋น์ค์์ ๋๊ฒผ๋๋ฐ
DuplicateKeyException ์์ฒด๊ฐ ์ด๋ฏธ ๊ตฌํ ๊ธฐ์ ์์กด์ฑ์ ์จ๊ธด ์ถ์ํํ ๋ ์
์ธ์ด๋ ๋๋ฉ์ธ์ ์คํ๋ง ์์กด์ฑ๋ ์ค์ธ๋ค๋ ๊ด์ ์์๋ ์๋ฏธ ์๋ ์์
๊ฐ์ต๋๋ค.
MemberService์์ ๋ฉ์๋ ์๊ทธ๋์ฒ์ throws DuplicateMemberException๋ฅผ ์ถ
๊ฐํด์ ๋ช
๋ฌธํํ์ผ๋ฉด ์ข์๊ฒ ์ต๋๋ค.
MemberController์ try-catch๋ ํ๋ ์์ํฌ ์ฐจ์์์๋ ์ฒ๋ฆฌํ ์ ์์ง๋ง ๊ณต
ํต์ฌํญ์ด ์๋๋ผ ํน์ ์
๋ฌด์ ์ํฌํ๋ก์ ํด๋นํ๋ฏ๋ก ์ปจํธ๋กค๋ฌ์์ ํ๋ฆ์ ์
์ดํ๋ ํธ์ด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ ์ ๋ ๊ฒฝ์ฐ๋ฅผ ๋๊ณ ๊ณ ๋ฏผํ์๋์ง ์ดํดํ์ง ๋ชปํ๊ฒ ๋ค์. ์๋น์ค์์ ์ฒ๋ฆฌ
ํ๋ฉด ์ด๋ค ์ด๋์ด ์๋ ๊ฑฐ์ฃ ? ์ฝ๋๋์ด ๋์์ ๋ฟ ์๋๋ผ ์๋น์ค์ ๋ฐํ๊ฐ์ด
์ด๋ค ์๋ฏธ์ธ์ง ์๋ ค๋ฉด javadoc ๊ฐ์ ๋ฌธ์๋ฅผ ๋ด์ผ๋ง ๋ถ๋ช
ํด์ง๋ ๋ฒ๊ฑฐ๋ก์๊น์ง
์๊ฒผ๋๋ฐ์.
--
Google ๊ทธ๋ฃน์ค 'Korea Spring User Group' ๊ทธ๋ฃน์ ๊ฐ์ ํ์ผ๋ฏ๋ก ๋ณธ ๋ฉ์ผ์ด ์ ์ก๋์์ต๋๋ค.
์ด ๊ทธ๋ฃน์ ๊ฒ์ํ๋ ค๋ฉด ks...@googlegroups.com(์ผ)๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด์ธ์.
๊ทธ๋ฃน์์ ํํดํ๋ ค๋ฉด ksug+unsubscribe@googlegroups.com๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์.
๋ ๋ง์ ์ต์ ์ ๋ณด๋ ค๋ฉด http://groups.google.com/group/ksug?hl=ko์์ ๊ทธ๋ฃน์ ๋ฐฉ๋ฌธํ์ธ์.
> ์ ๊ฒฝ์ฐ์๋
> View - Controller - Validation Logic- Business Logic - DAO
>
Validation Logic์ด ํ๋ ์ญํ ์ ๋ฌด์์ธ๊ฐ์?
์์ธ๋ ์์ธ์ํฉ๋ณ๋ก runtime ์ต์ ์ ์ ์์๋ฐ์ ์ ์ํ์๊ตฌ์.
ํค๋ํ์ (Accept)์ ๋ฐ๋ผ ๊ฒฐ๊ณผ(์์ธ์ฝ๋ ๋ฐ ์ค๋ฅ ๋ฉ์์ง)์ฒ๋ฆฌ๋ฅผ ํ์์ต๋๋ค. (html, json, xml)
๊ฐํน ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ checked exception์ ๋ฐ์ํ๋ ๋ฉ์๋ ๊ฐ์ ๊ฒฝ์ฐ๋ wrappingํ์ฌ runtime์ต์
์
์
๋ฐ์ํ๋๋ก ํ์์ต๋๋ค.
์๊ตฌ์กฐ์์๋ Controller์์๋ try{} catch{} ๋ฌธ์ด ํ์์๊ตฌ์. ์๋น์ค๋ ๋ค์ค ๋ ์ด์ด์์๋ ์ํฉ์ ๋ฐ๋ผ ์์
์ ์์ง๋ง public method์์๋ ๊ฐ๋
์ฑ์ ์ํด์ ์ง์ํ๊ณ ์์ต๋๋ค.
๋ฌผ๋ก ์์ธ๊ฐ ์๋ ์ ์ํ๋ก์ฐ๋ก ์งํ์์ผ์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์ปจํธ๋กค๋ฌ์์ try catch๊ฐ ํ์ํ ์๋์๊ฒ ์ผ๋ ์์ง๊น์ง ๊ทธ๋ฐ ๊ฒฝ์ฐ๋
์์์ต๋๋ค.(์ด ๊ฒฝ์ฐ๋ controller ๋ณด๋ค๋ ์๋น์ค ๋ ์ด์ด์์ ์ฒ๋ฆฌํ๋๊ฒ ๋ซ์ง ์์๊น ์๊ฐํฉ๋๋ค.
2012๋
3์ 19์ผ ์คํ 3:39, ์ด์ฑํ(kemuel) <kemu...@gmail.com>๋์ ๋ง:
> --
> Google ๊ทธ๋ฃน์ค 'Korea Spring User Group' ๊ทธ๋ฃน์ ๊ฐ์
ํ์ผ๋ฏ๋ก ๋ณธ ๋ฉ์ผ์ด ์ ์ก๋์์ต๋๋ค.
> ์ด ๊ทธ๋ฃน์ ๊ฒ์ํ๋ ค๋ฉด ks...@googlegroups.com(์ผ)๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด์ธ์.
> ๊ทธ๋ฃน์์ ํํดํ๋ ค๋ฉด ksug+uns...@googlegroups.com๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์.
์ ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ด๋์ ๋์ด์ผ ํ๋, (์ปจํธ๋กค๋ฌ?, ์๋น์ค?, ์ปจํธ๋กค๋ฌ + ์๋น์ค?) ๊ณ ๋ฏผ์ด ๋ง์์ต๋๋ค.
ํ์ฌ๋ ์ฌ์ดํธ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ์ข ๋ฌ๋ผ์ง์ ์๋ค๊ณ ์๊ฐํ์ฌ ๊ทธ๋ถ๋ถ์์๋ ์์ ๋๋ฅผ ๋๊ณ ์์ต๋๋ค.
ํ์ง๋ง ๋์ผํ ์ฌ์ดํธ์์๋ ์ผ๊ด์ฑ์์ด์ผ ๊ฒ ์ฃ .
2012๋
3์ 20์ผ ์ค์ 8:09, Jihwan Kim <jhki...@gmail.com>๋์ ๋ง:
--
Google ๊ทธ๋ฃน์ค 'Korea Spring User Group' ๊ทธ๋ฃน์ ๊ฐ์ ํ์ผ๋ฏ๋ก ๋ณธ ๋ฉ์ผ์ด ์ ์ก๋์์ต๋๋ค.
์ด ๊ทธ๋ฃน์ ๊ฒ์ํ๋ ค๋ฉด ks...@googlegroups.com(์ผ)๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด์ธ์.
๊ทธ๋ฃน์์ ํํดํ๋ ค๋ฉด ksug+unsubscribe@googlegroups.com๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์.
๊ทธ๋ฃน์์ ํํดํ๋ ค๋ฉด ksug+uns...@googlegroups.com๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์.