注:这个说的挺全面,考虑到了两种情况,一个是超连接,一个是表单
						
				
		
		
				
						
								原文是这里
						
				
		
		
				
						
								
										
								
						
				
		
		
				
						
								Struts
						
						的
						
								Token
						
						机制可以解决这个问题。
						
								
								
						
				
		
		
				
						
								
										1.
										  
								
						
				
				
						防止通过超链接重复访问
						
								Struts Action
						
						。
						
								
								
						
				
		
		
				
						如果我们要防止
						
								A
						
						的默认页面
						
								J
						
						中指向
						
								K
						
						的超链接重复提交数据,按照下列步骤即可:
						
								
								
						
				
		
		
				
						
								
										a.
										  
								
						
				
				
						如果
						
								J
						
						是从
						
								Struts Action
						
						转发而来,我们要在该
						
								Struts Action
						
						的
						
								execute
						
						方法中添加下面的一行:
						
								
								
						
				
		
		
				
						
								
										    
										saveToken(request);
								
						
				
		
		
				
						
								
										b.
										  
								
						
				
				
						如果
						
								J
						
						不是从
						
								Struts Action
						
						转发而来,那么新建一个
						
								Struts Action
						
						,在该
						
								Struts Action
						
						的
						
								excute
						
						方法中增加上面的一行,然后再从该
						
								action
						
						转到
						
								J
						
						页面。
						
								
								
						
				
		
		
				
						
								
										c.
										  
								
						
				
				
						在
						
								J
						
						页面中使用
						
								Struts
						
						标签生成指向
						
								K
						
						的超链接,如:
						
								
								
						
				
		
		
				
						
								   
						
				
				<html:link action="/deleteLayoutAction?layoutId=0" 
				transaction="true"
				>delete</html:link>
		
		
				
						   
				
				注意红色字体部分。
				
						
						
				
		
		
				
						
								
										d.
										  
								
						
				
				
						在
						
								<html:link>
						
						标签指向的
						
								action
						
						的
						
								excute
						
						方法中加入下面的代码:
						
								
								
						
				
		
		
				
						
								
										   
										if (!isTokenValid(request)) {
								
						
				
		
		
				
						
								
										                     return mapping.findForward("
						
						这种情况下就是重复提交,转到相应的页面
						
								");
						
				
		
		
				
						
								
										              }
						
				
		
		
				
						
								e
						
						.
						
								All Done.
						
				
		
		
				
						
								
										2.
										  
								
						
				
				
						防止通过表单重复提交数据。
						
								
								
						
				
		
		
				
						
								
										a.
										  
								
						
				
				
						如果
						
								J
						
						是从
						
								Struts Action
						
						转发而来,我们要在该
						
								Struts Action
						
						的
						
								execute
						
						方法中添加下面的一行:
						
								
								
						
				
		
		
				
						
								
										    
										saveToken(request);
								
						
				
		
		
				
						
								
										b.
										  
								
						
				
				
						如果
						
								J
						
						不是从
						
								Struts Action
						
						转发而来,那么新建一个
						
								Struts Action
						
						,在该
						
								Struts Action
						
						的
						
								excute
						
						方法中增加上面的一行,然后再从该
						
								action
						
						转到
						
								J
						
						页面。
						
								
								
						
				
		
		
				
						
								
										c.
										  
								
						
				
				
						在
						
								J
						
						页面中表单
						
								Action
						
						属性指向的
						
								Struts action
						
						的
						
								excute
						
						方法中加入下面的代码:
						
								
								
						
				
		
		
				
						
								
										   
										if (!isTokenValid(request)) {
								
						
				
		
		
				
						
								
										           saveToken(request);
						
				
		
		
				
						
								
										                     return mapping.findForward("
						
						这种情况下就是重复提交,转到相应的页面
						
								");
						
				
		
		
				
						
								
										   saveToken(request);
						
				
		
		
				
						
								
										              }
						
				
		
		
				
						e
				
				.
				
						All Done.