|
WEB³«È¯¤Çɬ¤º¤Ä¤¤¤Æ²ó¤ë¤Î¤¬¡¢Submit¥Ü¥¿¥óÆóÅÙ²¡¤·¤äÌá¤ë¥Ü¥¿¥ó¤ò²¡¤µ¤ì¤ë¤Ê¤É¡¢¾¡¼ê¤Ê²èÌÌÁ«°Ü¤ò¤µ¤ì¤Ê¤¤¤è¤¦¤ÊÇÛθ¤Ç¤¹¡£Struts¤Ç¤ÏƱ´ü¥È¡¼¥¯¥ó¤È¤¤¤¦µ¡Ç½¤Ç¤³¤ì¤é¤Î¹Íθ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¯¤ì¤Þ¤¹¡£ ¼ÂºÝ¤Ë¥µ¥ó¥×¥ë¤Ç¡¢¤¢¤ë²èÌ̤ÇSubmit¤òÆóÅÙ²¡¤·¤·¤¿¤È¤¡¢¤½¤ì¤ò¸¡ÃΤ·¤ÆÆó¤ÄÌܤΥꥯ¥¨¥¹¥È¤ò¥¨¥é¡¼¤Ç¤Ï¤¸¤¯¤È¤¤¤¦»ö¤ò¹Í¤¨¤Æ¤ß¤Þ¤¹¡£ Ʊ´ü¥È¡¼¥¯¥ó¤È¤Ï †Æ±´ü¥È¡¼¥¯¥ó¤Îµ¡Ç½¤È¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¤³¤ÎÃæ¤Ç¡¢¥È¡¼¥¯¥ó¤ÎÀ¸À®¡¢¥È¡¼¥¯¥ó¥Á¥§¥Ã¥¯¡¢hidden¤Ë¥È¡¼¥¯¥ó¤ò½ñ¤½Ð¤¹¡¢¤Ê¤É¤ÏStruts¤¬¼«Æ°¤Ç¤ä¤Ã¤Æ¤¯¤ì¤Þ¤¹¤Î¤Ç¡¢»È¤¦Â¦¤Ï¥È¡¼¥¯¥ó¤ò¥Á¥§¥Ã¥¯¤¹¤ë¥á¥½¥Ã¥É¤ò¥¢¥¯¥·¥ç¥ó¥¯¥é¥¹¤Ëµ½Ò¤·¤¿¤ê¡¢¥¨¥é¡¼½èÍý¤À¤±¤ò¤ä¤Ã¤Æ¤ª¤±¤Ð¤è¤¤¤È¸À¤¦¤³¤È¤Ç¤¹¤Í¡£¥é¥¯¥Á¥ó¤Ç¤¹¡£ ¤ä¤Ã¤Æ¤ß¤ë †Î®¤ì †index.do -> IndexAction -> index.jsp -> double.do -> DoubleAction -> success.jsp ¤È¤¤¤¦Î®¤ì¤Î¥µ¥ó¥×¥ë¤Ç¤¹¡£ ¥½¡¼¥¹ †
¥»¥Ã¥·¥ç¥ó¤Ë¥È¡¼¥¯¥ó¤ò¥»¥Ã¥È †IndexAction?¤ÇSession¤Ë¥È¡¼¥¯¥ó¤ò¥»¥Ã¥È¤·¤Æ¤¤¤Þ¤¹¡£¥È¡¼¥¯¥ó¤òÀ¸À®¤·¤ÆSession¤Ë¥»¥Ã¥È¤¹¤ë¥á¥½¥Ã¥É¤Ï org.apache.struts.action.Action#saveToken JSP¤Îhidden¤Ë¥È¡¼¥¯¥ó¤ò¥»¥Ã¥È †index.jsp¤Ç¤Ïform¤ò»È¤Ã¤ÆSubmit¤·¤Æ¤¤¤Þ¤¹¤¬¡¢½ÐÎϤµ¤ì¤ëhtml¤Ë¤Ï¼«Æ°Åª¤Ëhidden¥¿¥°¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤ÏSubmit¤Îform¤Ï <html:form method="post" action="/double" > <html:submit /> </html:form> ¤È¤·¤Æ¤¤¤ë¤À¤±¤Ê¤Î¤Ç¤¹¤¬½ÐÎϤµ¤ì¤ëhtml¤Ï <form id="hogeForm" method="post" action="/strutsExamples/double.do">
<div><input type="hidden" name="org.apache.struts.taglib.html.TOKEN"
value="612326e14b3ce599284543e2246f170b" /></div>
<input type="submit" value="Submit" />
</form>
¤È¤Ê¤ê¤Þ¤¹¡£¤¢¤ë¥¡¼ÃͤÇhidden¤Ë¥È¡¼¥¯¥ó¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤¹*3¡£ ¼¡¤Î¥ê¥¯¥¨¥¹¥È¤Ç¡¢¥µ¡¼¥Ð¤Ç¥È¡¼¥¯¥ó¤Î¥Á¥§¥Ã¥¯ †¤µ¤Æ¤³¤ì¤Çsession¤Ë¥È¡¼¥¯¥ó¤¬¥»¥Ã¥È¤µ¤ì¡¢¤µ¤é¤Ëhtml¤Îhidden¤Ë¥È¡¼¥¯¥ó¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤·¤¿¡£¼¡¤Î¥ê¥¯¥¨¥¹¥È¤ò¼õ¤±¤ë¥¢¥¯¥·¥ç¥ó(DoubleAction?)¤Ç¤Ï synchronized (session) {
tokenValid = isTokenValid(request);
saveToken(request);
}
if (!tokenValid) {
StringBuffer buffer = new StringBuffer();
buffer.append("token¥Á¥§¥Ã¥¯¥¨¥é¡¼");
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
new String(buffer), false));
saveErrors(request, errors);
}
¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ isTokenValid(request); ¤¬Session¤Î¥È¡¼¥¯¥ó¤Èhidden¤Î¥È¡¼¥¯¥ó¤ò¥Á¥§¥Ã¥¯¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£¤Ç¡¢¼¡¤Î saveToken(request); ¤ÇºÆÅ٥ȡ¼¥¯¥ó¤ò½ñ¤´¹¤¨¤Æ¤¤¤Þ¤¹¡£ isTokenValid?(request)¤Ï¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤¹¤¬¡¢¥È¡¼¥¯¥ó¤òÊѹ¹¤¹¤ë¤Þ¤Ç¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤Ê¤¯¤Æ¤Ï¤¤¤±¤Ê¤¤¤Î¤Ç¡¢session¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥â¥Ë¥¿¤ò¼èÆÀ¤·¤Æ½èÍý¤·¤Æ¤¤¤Þ¤¹*4¡£ Form¤Ç¤Ê¤¯<html:link />¤Î¾ì¹ç †¾å¤ÎÎã¤Î¤è¤¦¤Ë<html:form />¥¿¥°¤Î¾ì¹ç¤Ï¼«Æ°¤Çhidden¥¿¥°¤¬ÁÞÆþ¤µ¤ì¥È¡¼¥¯¥ó¤¬Post¤µ¤ì¤Þ¤·¤¿¤¬¡¢<html:link />¥¿¥°¤Ê¤É¤Î¾ì¹ç¤Ï <html:link action="/double" transaction="true">¥ê¥ó¥¯</html:link> ¤È¤·¤Ætransaction°À¤òtrue¤Ë»ØÄꤷ¤Þ¤¹¡£transaction°À¤ò»ØÄꤹ¤ë¤È http://localhost:8080/strutsExamples/double.do ?org.apache.struts.taglib.html.TOKEN=f8e8901ab4cc126a148fe3d46d5596e7 ¤È¥Ñ¥é¥á¥¿¤Ë¥È¡¼¥¯¥ó¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£¤Á¤Ê¤ß¤Ë¤³¤Îtransaction°À¤Ï¥Ç¥Õ¥©¥ë¥È¤Ïfalse¤Ê¤Î¤Ç¡¢¥È¡¼¥¯¥ó¤òÁ÷¿®¤·¤¿¤¤¾ì¹ç¤ÏÌÀ¼¨Åª¤Ë»ØÄꤷ¤Æ¤¢¤²¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¥µ¥ó¥×¥ë¡£ †¤³¤Îµ»ö¤Ï
¸½ºß¤Î¥¢¥¯¥»¥¹:56329 |