struts分发action下用Token解决重复提交问题
来源:互联网 发布:金蝶软件用户名 编辑:程序博客网 时间:2024/06/05 03:48
一、写跳转用的发帖链接页面,点击后,对应的action中会对该次提交加上一个Token令牌
二、Action中的forTopic方法给该提交加令牌Token
三、发帖内容填写页面publishTopic.jsp
四、提交后成功时显示的页面publishshow.jsp
五、后退浏览器重复提交后显示的页面error.jsp
六、struts-config.xml中对应的配置
<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %><%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><html:html lang="true"> <head> <html:base /> <title>forum.jsp</title> </head> <body> <html:link action="/publish.do?status=forTopic">我要发帖</html:link> </body></html:html>
二、Action中的forTopic方法给该提交加令牌Token
package com.test.struts.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import com.test.struts.form.PublishForm;public class PublishAction extends DispatchAction {//这个方法给publishTopic-1.jsp的链接加上令牌public ActionForward forTopic(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {PublishForm publishForm = (PublishForm) form;// TODO Auto-generated method stubSystem.out.println("forTopic...");this.saveToken(request);return mapping.findForward("publishTopic");}//用于检查令牌是否过时,并做出相应处理public ActionForward toTopic(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {PublishForm publishForm = (PublishForm) form;// TODO Auto-generated method stubif(isTokenValid(request)){ //如果两个Token相匹配的话System.out.println("toTopic...");String title = request.getParameter("title");String content = request.getParameter("content");request.setAttribute("title", title);request.setAttribute("content", content);this.resetToken(request);return mapping.findForward("publishshow");}else{System.out.println("for resubmit error...");return mapping.findForward("error");}}}
三、发帖内容填写页面publishTopic.jsp
<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %><%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html lang="true"> <head> <html:base /> <title>publishTopic.jsp</title> </head> <body> <html:form action="/publish.do?status=toTopic" method="post"> <input type="text" name="title"/><br> <input type="text" name="content"/><br> <input type="submit" value="发表"/> <input type="reset" value="重置"/> </html:form> <h1>good!!</h1> </body></html:html>
四、提交后成功时显示的页面publishshow.jsp
<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %><%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html lang="true"> <head> <html:base /> <title>publishshow.jsp</title> </head> <body> <h1>发表后的文章信息:</h1> <input type="text" value="<%=request.getAttribute("title") %>"/><br> <input type="text" value="<%=request.getAttribute("content") %>"/> </body></html:html>
五、后退浏览器重复提交后显示的页面error.jsp
<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %><%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %><%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html lang="true"> <head> <html:base /> <title>error.jsp</title> </head> <body> <h1>重复提交了!!!</h1> </body></html:html>
六、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> <data-sources /> <form-beans > <form-bean name="publishForm" type="com.test.struts.form.PublishForm" /> <form-bean name="tokenActionForm" type="com.test.struts.form.TokenActionForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action attribute="publishForm" input="/error.jsp" name="publishForm" parameter="status" path="/publish" scope="request" type="com.test.struts.action.PublishAction"> <forward name="publishTopic" path="/publishTopic.jsp"></forward> <forward name="error" path="/error.jsp"></forward> <forward name="publishshow" path="/publishshow.jsp"></forward> </action> <action attribute="tokenActionForm" parameter="status" input="/error.jsp" path="/tokenAction" scope="request" name="tokenActionForm" type="com.test.struts.action.TokenActionAction"> <forward name="strutsToken1" path="/strutsToken1.jsp"></forward> </action> </action-mappings> <message-resources parameter="com.test.struts.ApplicationResources" /></struts-config>
阅读全文
0 0
- struts分发action下用Token解决重复提交问题
- Struts用Token解决重复提交
- Struts用Token解决重复提交
- struts中的Token(令牌)解决重复提交问题
- 用Struts的Token机制解决表单重复提交
- 用Struts的Token机制解决表单重复提交
- 用Struts的Token机制解决表单重复提交
- 用Struts的Token机制解决表单重复提交
- Struts -- Token机制(解决表单重复提交)
- struts Token解决重复提交介绍
- Struts-利用Token解决重复提交
- Struts解决重复提交问题
- Struts解决重复提交问题
- Struts解决重复提交问题
- struts (Token)解决重复提交 刷新也重复提交,多次单击提交按钮也重复提交
- Struts2解决重复提交问题(Token)
- Token(解决重复提交的问题)
- STRUTS中利用同步令牌(Token)解决重复提交的问题(转载)
- Cookie/Session机制详解
- 验证码在页面的使用
- JSP编码过滤器的配置和使用
- Servlet+JSP下重复提交问题的解决
- jsonp
- struts分发action下用Token解决重复提交问题
- 如何下载谷歌百度高德大字体地图并打印
- Servlet+AJAX实现数据处理显示
- Mybatis 打印SQL语句
- AJAX读取XML内容并按排列显示
- 深入理解AJAX系列第二篇--GET请求和POST请求的区别
- SQL Server2005练习记录
- 通过jdbcTemplate如何返回自定义的对象集合,以及在java中如何遍历这个集合
- 概要