使用拦截器
<action name="pro" class="action.Pro">
<!-- 使用系统默认的拦截器栈 -->
<interceptor-ref name="defaultStack"/>
<!-- 使用防刷新的token拦截器 -->
<interceptor-ref name="token"/>
<!-- 定义重复提交转向的视图,该逻辑视图名必须是invalid.token -->
<result name="invalid.token">/refresh.jsp</result>
<!-- 如果处理结果返回success,对应/show.jsp视图资源 -->
<result name="success">/show.jsp</result>
</action>
表单页面
<body>
<h3>使用s:token防止重复提交</h3>
<s:form action="pro">
<!-- 普通表单域 -->
<s:textfield name="userName" key="book"/>
<!-- 用于防刷新的token -->
<s:token/>
<s:submit value="提交"/>
</s:form>
</bod
refresh.jsp
<body>
您的请求已被处理!请不要刷新页面
</body>y>
show.jsp
<body>
成功提交.${uname}
</body>
action.Pro
package action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Pro extends ActionSupport{
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String execute() throws Exception {
ActionContext.getContext().put("uname", getUserName());
return SUCCESS;
}
}