2007-01-30
使用Struts的Token机制防止重复提交的问题的简单测试!
参考各位老大的经验,测试代码如下:
input.jsp:
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可以进行测试!
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>
<%@ 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可以进行测试!
- 浏览: 49711 次

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
收藏:在eclipse的环境下 ...
[align=left][/align]
-- by gmizr -
jbuilder 2006 enterprise ...
谢了.
-- by FRESHET -
收藏:Hibernate---Criteri ...
是不是Criteria只能查询该表中的全部列,是否能过滤掉不需要的列呢?
-- by wubaodan -
收藏:Hibernate---Criteri ...
楼主你好,看了您的以上关于Criteria的查询例子,我觉得写的很全面,我有个问 ...
-- by wubaodan -
收藏:struts spring hiber ...
显示分面的页面在脚本是什么啊..
-- by dupx






评论排行榜