参考各位老大的经验,测试代码如下:
input.jsp:
引用
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<html:html>
<head><title>Test</title></head>
<body>
<html:form action="/testAction.do" method="post">
<br>
<html:text property="name"/>
<br>
<html:text property="pass"/>
<br>
<html:submit property="submit" value="Submit"/><br>
</html:form>
</body>
</html:html>
success.jsp:
引用
<%@ page contentType="text/html; charset=GBK" %>
<html><head><title>success</title></head>
<body bgcolor="#ffffff">
success!
</body>
</html>
TestForm:
引用
package test;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class TestForm extends ActionForm {
private String name;
private String pass;
public void setPass(String pass) {
this.pass = pass;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getPass() {
return pass;
}
public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
/** @todo: finish this method, this is just the skeleton.*/
return null;
}
public void reset(ActionMapping actionMapping,
HttpServletRequest servletRequest) {
}
}
TestAction:
引用
package test;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import org.apache.log4j.Logger;
public class TestAction extends Action {
private static final transient Logger log = Logger.getLogger(TestAction.class);
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
TestForm testForm = (TestForm) form;
if (testForm.getName() == null) {
saveToken(request);
return mapping.getInputForward();
}
if (!isTokenValid(request)) {
saveToken(request);
log.debug("不能重复提交!");
return mapping.getInputForward();
}
log.debug("添加成功!");
resetToken(request);
return mapping.findForward("success");
}
}
struts-config.xml:
引用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="testActionForm" type="test.TestForm"/>
</form-beans>
<action-mappings>
<action name="testActionForm" path="/testAction" type="test.TestAction" scope="request" input="/index.jsp" validate="false">
<forward name="success" path="/success.jsp"/>
</action>
</action-mappings>
<message-resources parameter="ApplicationResources"/>
</struts-config>
编写完上边的代码后:
http://localhost:8080/test/testAction.do可以进行测试!
分享到:
相关推荐
总的来说,Struts2的Token机制是一种有效防止表单重复提交的方法,它通过生成和验证唯一标识来确保每个请求的唯一性,从而保护了业务的正确性和数据的一致性。在实际开发中,根据项目需求和安全策略,我们可以灵活...
总的来说,Struts 1.2的Token机制提供了一种简单但有效的防止重复提交的解决方案。通过理解和实践这一机制,开发者可以更好地保护Web应用程序的数据一致性。同时,深入研究源码有助于加深对Struts工作原理的理解,...
Token机制是一种防止重复提交的有效方法,它通过在客户端(通常是浏览器)存储一个唯一的标识符(Token),并在服务器端进行验证,确保每次请求都是唯一的。当用户尝试重复提交表单时,由于Token已经过期或者不匹配...
Token机制是为了防止重复提交问题,确保每个表单提交都是唯一的。当用户点击多次提交按钮时,重复的请求会被框架自动拦截。 8. **lookup**:可能与Struts的查找机制相关,例如动态方法调用(Dynamic Method ...
5. **防止表单重复提交**:在Web应用中,为避免用户意外或恶意重复提交表单,通常会采用Token机制或者Session来防止这种情况。 6. **使用复选框和下拉列表框的技巧**:Struts提供了HTML标签库,如和,用于方便地在...
Struts 支持使用 Token 来防止重复提交表单数据。在页面中可以通过 `<a href="mytoken.do"></a>` 的方式指向一个 Action,在该 Action 中保存一个 Token(如 `this.saveToken(request)`),然后在提交表单时验证 ...
Struts提供了一种机制来防止表单重复提交,即通过生成唯一的Token并在每次表单提交时检查该Token的有效性。 ##### 2.Struts应用的国际化 Struts支持通过配置资源文件实现国际化,使应用能够适应不同语言环境。 ##...
4. **Token防止重复提交**:为了防止用户意外或恶意的重复提交,项目中使用了Token拦截器。每个请求会生成一个唯一的Token,如果同一请求再次提交,系统会检查Token的有效性,从而避免重复操作。 5. **页面设计与...
3. **Token防止表单重复提交**:为避免用户因误操作导致的重复数据提交,可以采用Token机制。在用户提交表单时生成一个唯一的Token值,将其存储在服务器端(如Session)和客户端(如隐藏字段)。再次提交时,服务器...
- **防止重复提交**:Struts 1.x中使用Token机制,保存一个唯一的Token,如果提交时Token未改变,则认为是重复提交。Struts 2使用内置的Token拦截器实现类似功能。 - **请求验证失败后变量丢失**:可以将ActionForm...
例如,使用session来跟踪用户状态,防止重复投票,或者使用JWT(JSON Web Token)进行安全的身份验证。 6. **前端技术**:项目可能使用HTML、CSS和JavaScript构建用户界面,Bootstrap或jQuery等库可以加速开发进程...