åçãç¥ãã°æ žå¿ãèŠããïŒ
ãã ã»ãšã³ãã³ã®ã¹ããªã³ã°MVC掻çšç·š ðšâð»
ð åè¬åã«ã確èªãã ããïŒ
- æ¬è¬çŸ©ã¯ãJavaã¹ããªã³ã°å®å
šåŸæã·ãªãŒãºã®5çªç®ã®è¬çŸ©ã§ãããŠãŒã¯ã»ãã©ã¶ãŒãºïŒWoowa BrothersïŒæå¹Žå°æè¡çäºããã ã»ãšã³ãã³ã®ã¹ããªã³ã°å®å
šåŸæããŒããããããŸãã確èªãã ããã(ã·ã§ãŒãã«ãã)
æã人æ°ã®ãããŠã§ããã¬ãŒã ã¯ãŒã¯
çŸä»£ã®ã¢ããªã±ãŒã·ã§ã³ã¯ããã®ã»ãšãã©ããŠã§ãç°å¢ã§åäœãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã§ããJavaããã¯ãšã³ãéçºè
ã¯ããã®ãããªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãéçºããéããã®ã»ãšãã©ã§ã¹ããªã³ã°MVCã䜿çšããŸããã¹ããªã³ã°MVCã¯ãè€éãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãç°¡åãã€è¿
éã«éçºã§ãããããµããŒããããæã人æ°ã®ãããŠã§ããã¬ãŒã ã¯ãŒã¯ã§ãã
ããã¯ãšã³ãWebæè¡ã®åŠç¿ãé£ããçç±
Javaããã¯ãšã³ãïŒJava BackendïŒã®Webæè¡ã¯éåžžã«èšå€§ã§ãåŠç¿éãå€ãã§ããç¹ã«Spring MVCã¯æäŸããæ©èœãå€ããæ§é ãè€éã§ãããã®ãããªWebæè¡ãæ£ããåŠç¿ããããã«ã¯ãSpring MVCã®æ žå¿çãªåçãšæ§é ããŸãçè§£ãããã®åºç€ã®äžã«èšå€§ãªWebæŽ»çšæè¡ãäžã€ãã€æ»ç¥ããŠããå¿
èŠããããŸãã
â
åæç¥èã確èªããŠãã ããã
ååã®è¬çŸ©ã§ãã<ã¹ããªã³ã° MVC 1ç·š>ãéããŠãWebéçºã«å¿
èŠãªã¹ããªã³ã° MVCã®æ žå¿çãªåçãšæ§é ãçè§£ããŠããã確èªããŠãã ããã
1. JavaãŠã§ãæè¡ã®å§ãŸãããææ°ã®å®åæè¡ãŸã§
2. MVCãã¬ãŒã ã¯ãŒã¯ãçŽæ¥ã³ãŒãã§éçº
è¬çŸ©ã®ç®æš
ãããŸã§Javaããã¯ãšã³ãããã³ã¹ããªã³ã°MVCã®åºç€æè¡ãåŠç¿ããŠããŸãããä»åã®è¬çŸ©ã§ã¯ããããŸã§ã«åŠç¿ããåºç€ã®äžã«å®åã«äžå¯æ¬ ãªæŽ»çšæè¡ãåŠã³ãŸãã
<ã¹ããªã³ã°MVC 2ç·š> è¬çŸ©ã§ã¯
ã¹ããªã³ã°MVC 2ç·šã§ã¯ã1ç·šã§åŠç¿ããã¹ããªã³ã°MVCã®åºç€ã®äžã«ãå®åã«äžå¯æ¬ ãªãã¥ãŒãã³ãã¬ãŒããã¡ãã»ãŒãžãåœéåãããªããŒã·ã§ã³ãã¯ãããŒãã»ãã·ã§ã³ããã£ã«ã¿ãã€ã³ã¿ãŒã»ãã¿ãäŸå€åŠçãåã³ã³ããŒã¿ããã¡ã€ã«ã¢ããããŒããšãã£ãèšå€§ãªãŠã§ãæŽ»çšæè¡ããäŸé¡ãéããŠå®å
šã«ç¿åŸããããšãã§ããŸãã
ã¹ããªã³ã°MVCã®æ žå¿åçãšæ§é ã®äžã«ãèšå€§ãªãŠã§ãæŽ»çšæè¡ã宿ŠäŸé¡ã³ãŒããéããŠå®æãããããæ·±ã¿ã®ããããã¯ãšã³ããŠã§ãéçºè
ãžãšæé·ã§ãããããæäŒãããããŸãã
- ç®æš: å®åã®ããã¯ãšã³ãWebã¢ããªã±ãŒã·ã§ã³ãéçºããéã«å¿
èŠãªããã¹ãŠã®Webæè¡ã宿ãããããšããã®è¬çŸ©ã®ç®æšã§ãã
- ãŠã§ãã®åºç€ããå®åãŸã§: å®åéçºã®ããã®å
容ãå€ãã§ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºçµéšããªãéçºè
ã§ãé©å¿ã§ããããã«æ®µéçã«æ§æããŸããã(ã¹ããªã³ã°MVC 1ç·šãå
ã«åè¬ããŠãã2ç·šãåŠç¿ããå¿
èŠããããŸãã)
- æŠå¿µããæŽ»çšãŸã§: åã«æè¡ã®äœ¿ãæ¹ã説æããã®ã§ã¯ãªãããã®æè¡ããªãå¿
èŠã§ãã©ã®ããã«ããŠçãŸããã®ããšããæ žå¿çãªåçãšæŽ»çšæ¹æ³ã䜵ããŠèª¬æããŸãã
- å®åäŸé¡äžå¿: å®åã§Springã䜿çšããŠãŠã§ãã¢ããªã±ãŒã·ã§ã³ãéçºããéã«å¿
èŠãªãã¹ãŠã®éçšããäŸé¡ãéããŠèªç¶ã«åŠç¿ããå®åã®ãã¹ããã©ã¯ãã£ã¹ãäŒæããŸãã
- ç°¡æœã: å®åã§äœ¿çšãããªãå€ãSpring MVCã®æ©èœã¯æãåã£ãŠé€å€ããŸãããææ°ã®å®åã§äž»ã«äœ¿çšãããå
容ãäžå¿ã«èª¬æããŸãã
ããããã®åŠç¿è
ã¹ããªã³ã°MVCã
åããŠæ¥ããéçºè
ããã¯ãšã³ãéçºè
å°±è·æºåç
Spring MVCãæ·±ã
çè§£ãããçŸåœ¹ã®éçºè
ã¹ããªã³ã°ã§ãŠã§ãã¢ããªã
äœãããéçºè
æ±ãå
容
ã¿ã€ã ãªãŒã
ã¿ã€ã ãªãŒãïŒThymeleafïŒã¯ãããã¯ãšã³ãéçºè
ã®ããã®ãµãŒããŒãµã€ããã¥ãŒïŒServer-Side ViewïŒãã³ãã¬ãŒãã§ããã¿ã€ã ãªãŒãã䜿çšããã°ãå¥éããã³ããšã³ãéçºè
ãããªããŠããããã¯ãšã³ãéçºè
ã ãã§ç°¡åãã€è¿
éã«åçãªHTMLãäœæããããšãã§ããŸãã
è¬çŸ©ã§ã¯ãã¿ã€ã ãªãŒãã®åºæ¬æ©èœãããSpringãšã®çµ±åããã§ãã¯ããã¯ã¹ãã©ãžãªãã¿ã³ãã»ã¬ã¯ãããã¯ã¹ã®ãããªè€éãªãã©ãŒã ç®¡çæ©èœãŸã§ããã¹ãŠãäŸé¡ãéããŠäœããªããåŠç¿ããŸãã
ã¡ãã»ãŒãžãåœéå
ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã倧ããè€éã«ãªãã»ã©ã䜿çšãã倿§ãªã¡ãã»ãŒãžãäžè²«æ§ãæã£ãŠäžç®æã§ç®¡çããå¿
èŠããããŸããäŸãã°ããåååããšããåèªããååååããšããåèªã«çŽãã«ã¯ãæ°å€ãã®ãã¡ã€ã«ã®ãœãŒã¹ã³ãŒããä¿®æ£ããªããã°ãªããŸãããã¹ããªã³ã°ãæäŸããã¡ãã»ãŒãžæ©èœã䜿çšããã°ããã®ãããªããšãäžæ¬ã§ç®¡çããä¿®æ£ããããšãã§ããŸãã
åœéåã¯ãè±èªã䜿çšãã人ã«ã¯ãµã€ããè±èªã§è¡šç€ºãããéåœèªã䜿çšãã人ã«ã¯ãµã€ããéåœèªã§è¡šç€ºãããæ©èœã§ããã¹ããªã³ã°ã¯ãã§ã«ãã®ãããªåœéåæ©èœãæäŸããŠããŸããè¬çŸ©ã§ã¯ãã¹ããªã³ã°ãæäŸããã¡ãã»ãŒãžãšåœéåæ©èœããå®éã®äŸãéããŠæ®µéçã«åŠç¿ããŸãã
æ€èšŒ(Validation)
顧客ãäŒå¡ç»é²ãããéãå
¥åãã©ãŒã ã«èª€ã£ãå€ãå
¥åããŠãµãŒããŒã«éä¿¡ããå ŽåããµãŒããŒã¯ãã®å€ãæ€èšŒãã顧客ã«åã³å
¥åãã©ãŒã ã衚瀺ããªãããã©ã®éšåã誀ã£ãŠå
¥åãããã®ãã芪åã«æ¡å
ããªããã°ãªããŸããããã®ãããªæ¹åŒã¯ããã¹ãŠã®ãŠã§ããµãŒãã¹ã«ãããŠäžå¯æ¬ ãªæ©èœã§ãã
è¬çŸ©ã§ã¯ããŸããã®ãããªæ€èšŒæ©èœãçŽæ¥éçºããŠã¿ãŸãããããŠãSpringãæäŸããæ€èšŒæ©èœã䜿çšããŠã¿ãŠãããã«ã¯ã¢ãããŒã·ã§ã³ïŒAnnotationïŒäžã€ã§éåžžã«äŸ¿å©ã«æ€èšŒæ©èœãå®è¡ããBean Validationæ©èœãŸã§ãäŸé¡ãéããŠæ®µéçã«åŠç¿ããŸãã
ã¯ãããŒãã»ãã·ã§ã³
HTTPã¯ã¹ããŒãã¬ã¹ãªãããã³ã«ã§ãããããã£ãŠããã°ã€ã³æ©èœãç¶æããã«ã¯ã¯ãããŒãã»ãã·ã§ã³ãšãã£ãæŠå¿µãå¿
èŠã«ãªããŸããè¬çŸ©ã§ã¯ããŸãã¯ãããŒã ãã§ãã°ã€ã³æ©èœãäœã£ãŠã¿ãŸãããããŠãã©ã®ãããªã»ãã¥ãªãã£äžã®åé¡ããããã確èªããåŸã«ãã»ãã·ã§ã³ãçŽæ¥äœæããŠé©çšããŠã¿ãŸãã
ãã®ããã«ã»ãã·ã§ã³ãçŽæ¥äœãéçšãéããŠãã¯ãããŒãšã»ãã·ã§ã³ã®åäœæ¹åŒãæ·±ãçè§£ããããšãã§ããŸãããããŠè¿œå ã§ããµãŒãã¬ãããæäŸããã»ãã·ã§ã³ãåŠç¿ããé©çšããŠã¿ãŸãã
ãã£ã«ã¿ãŒãã€ã³ã¿ãŒã»ãã¿ãŒ
ãµãŒãã¬ãããæäŸãããã£ã«ã¿ãŒïŒFilterïŒãšãã¹ããªã³ã°ãæäŸããã€ã³ã¿ãŒã»ãã¿ãŒïŒInterceptorïŒããäŸé¡ãéããŠåŠç¿ããŸãã
ãŸããæãåçŽãªãã¹ãŠã®HTTPãªã¯ãšã¹ãããã°ã«æ®ãæ©èœããã£ã«ã¿ãšã€ã³ã¿ãŒã»ãã¿ãŒã§äœæãããã®åŸãèªèšŒåŠçã®ããã®æ©èœããã£ã«ã¿ãšã€ã³ã¿ãŒã»ãã¿ãŒã§äœæããŠã¿ãŸãããã®ããã«äž¡æ¹ãäžç·ã«äœ¿çšããŠã¿ãããšã§ãããããã®é·æãšçæãæç¢ºã«çè§£ããããšãã§ããŸãã
äŸå€åŠç
Webã¢ããªã±ãŒã·ã§ã³ãåŠç¿ããéãæãçè§£ãã«ããéšåããŸãã«ãã®äŸå€åŠçïŒException HandlingïŒã§ãããªããªãããµãŒãã¬ããã³ã³ããïŒWASïŒãšSpring MVCãããããç¬èªã®äŸå€åŠçæ¹æ³ãæäŸããŠããããã§ãããããŠå®éã«ã¯ããããäºã€ãæ··ããåã£ãŠè€éã«äŸå€åŠçã¡ã«ããºã ãåäœããŸãããã®ãããã³ã³ãããŒã©ãŒã§äŸå€ãçºçãããšãã«ãSpringãšãµãŒãã¬ããã³ã³ãããããããå
éšã§ã©ã®ããã«åäœããã®ããéçºè
ãæ£ç¢ºã«çè§£ããŠäœ¿çšããããšã¯éåžžã«å°é£ã§ãã
è¬çŸ©ã§ã¯ããµãŒãã¬ããã³ã³ããã®äŸå€åŠçããSpring MVCã®äŸå€åŠçãŸã§ãäžã€ãã€æ®µéçã«çŽè§£ããŠèª¬æããŸãããã®ãããè¬çŸ©ãçµããåŸã«ã¯ãå®éã«äŸå€ãçºçããéã«ãµãŒããŒå
éšã§ã©ã®ããã«åäœããã©ã®éšåã倿Žãã¹ãããæç¢ºã«çè§£ã§ããããã«ãªããŸããããã«ãAPIã䜿çšããéã®äŸå€åŠçã«ã€ããŠã䜵ããŠèª¬æããŸãã
ã¹ããªã³ã°ã¿ã€ãã³ã³ããŒã¿ãŒ
æåãæ°å€ã«å€æããããéã«æ°å€ãæåã«å€æããªããã°ãªããªãæã®ããã«ãã¢ããªã±ãŒã·ã§ã³ãéçºããŠãããšåã倿ããªããã°ãªããªãã±ãŒã¹ãå€ããããŸããäŸãã°ãHTTPãªã¯ãšã¹ãã§æåã® "10" ãæž¡ãããŠããã¹ããªã³ã°ã§ã¯ @RequestParam ã䜿ã£ãŠ Integer åã®æ°å€ 10 ãšããŠåãåãããšãã§ããŸããã¹ããªã³ã°ã¯åã³ã³ããŒã¿ãŒãšããæ©èœãæäŸããäžè²«æ§ã®ããå倿ããµããŒãããŠããŸãã
åã³ã³ããŒã¿ãŒã¯ã¹ããªã³ã°ãåŠç¿ãããšé »ç¹ã«èšåãããå
容ã§ãããå®éã«ã©ã®ããã«åäœããã®ããæ·±ãçè§£ããã®ã¯å®¹æã§ã¯ãããŸãããè¬çŸ©ãéããŠãåã³ã³ããŒã¿ãŒã®åºæ¬ããæŽ»çšãŸã§ãäŸé¡ãçšããŠæ®µéçã«çè§£ããããšãã§ããŸãã
ãã¡ã€ã«ã¢ããããŒã
ã€ã³ã¿ãŒãããã«ã¯æ°å€ãã®ãã¡ã€ã«ã¢ããããŒãã®äŸããããŸããè¬çŸ©ã§ã¯ãåã«ãã¡ã€ã«ã¢ããããŒãã®æ©èœã説æããã«ãšã©ãŸããããã¡ã€ã«ã¢ããããŒãã®ããã«äœ¿çšãããããã³ã«ãæ·±ã解説ããã©ã®ãããªåçã§HTTPã§ã®ãã¡ã€ã«ã¢ããããŒããå¯èœãªã®ãã説æããŸãããããŠããã¡ã€ã«ã¢ããããŒãæ©èœããµãŒãã¬ããããå§ããŠãã¹ããªã³ã°ãæäŸãã䟿å©ãªæ¹åŒã®ãã¡ã€ã«ã¢ããããŒããŸã§ãäŸé¡ãéããŠæ®µéçã«åŠç¿ããŸãã
Spring MVC è¬çŸ©ã®æ§æ
ã¹ããªã³ã°MVCè¬çŸ©ã¯2ç·šã«åãããŠããŸãã
æ¬è¬çŸ©ã¯ã¹ããªã³ã°MVC 2ç·š -
ããã¯ãšã³ãWebéçºæŽ»çšæè¡ã§ãã
JavaãŠã§ãæè¡ãšã¹ããªã³ã°MVCã®æ žå¿æŠå¿µãåºããã¹ããªã³ã°MVCã®åºæ¬æ©èœãçè§£ããŸãã
1ç·šã§ã¯ããŸãJavaããã¯ãšã³ããŠã§ãæè¡ã玹ä»ãããµãŒãã¬ãããJSPãMVCãã¿ãŒã³ãMVCãã¬ãŒã ã¯ãŒã¯ãŸã§ãŠã§ãæè¡å
šè¬ãåŠç¿ããŸãããã®ããã«ãŠã§ãæè¡ã®èæ¯ãçè§£ããäžã§ãã¹ããªã³ã°MVCã®æ žå¿æŠå¿µããã£ãããšåºããŸãããã®åŸãã¹ããªã³ã°MVCã®åºæ¬æ©èœãåŠç¿ããã¹ããªã³ã°MVCã䜿çšããŠåºæ¬çãªCRUDãå¯èœãªãŠã§ãããŒãžãéçºããŸãã
ã¹ããªã³ã°MVCã®å€æ§ãªæŽ»çšæè¡ãåŠç¿ããŸãã
2ç·šã§ã¯ãã¿ã€ã ãªãŒããã¡ãã»ãŒãžãåœéåãæ€èšŒ(Validation)ãã¯ãããŒãã»ãã·ã§ã³ããã£ã«ã¿ãã€ã³ã¿ãŒã»ãã¿ãŒãäŸå€åŠçãšå
±éæ©èœãæ¡åŒµãã€ã³ããªã©ãäžã€ã®äŸé¡ã段éçã«çºå±ãããªãããã¹ããªã³ã°MVCã®å€æ§ãªæŽ»çšæè¡ãã³ãŒãã§åŠç¿ããŸãã
ããããç¶ã
ã¹ããªã³ã°å®å
šåŸæã·ãªãŒãº
ã¹ããªã³ã°ãå®å
šã«ãã¹ã¿ãŒã§ããã·ãªãŒãºãæºåããŠããŸããå®éã®çŸå Žã§äœ¿çšããæ žå¿çãªã¹ããªã³ã°æ©èœãäžå¿ã«ãå®åã§äœ¿ãããªããã®ãå€ãæ©èœã¯æãåã£ãŠçç¥ããå®åããŠããŠãäŒæããäºå®ã§ãã
è¬çŸ©ã®é åº
é¢é£ããŒãããã