当前位置:首页 > JavaServer Page > 正文内容

Struts 防止重复表单提交的工具包

canca18年前 (2007-12-08)JavaServer Page512

       今天,我位网友在烦这个东东。他说,怎样防止用户重复提交同一个表单呢?我跟他说用Token。过了一会儿,他说,用Token有点烦。

       由于,我的项目里都没有弄Token的。所以一直没有弄个工具包。呵呵。现在就让我们从烦琐的工作解脱出来吧!今晚我弄了个工具类。

Token.java

package org.canca.token.util;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class Token extends Action {
 public boolean validatorToken(HttpServletRequest request,
   HttpServletResponse response) {
  // 判断token是否有效,如果为假证明有重复提交
  if (!isTokenValid(request)) {
   saveToken(request);
   return false;
  } else { // 当用户首次提交时返!isTokenValid()返回true
   resetToken(request);
   return true;
  }
 }
 
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  String page = request.getParameter("page");
  if(null != page){
   //创建一个新的令牌
   saveToken(request);
   return mapping.findForward(page);
  }
  return null;
 }
}

以上是个工具类,使用时要配Struts-config.xml文件。

  <action path="/token"
   type="org.canca.token.util.Token" />

好了,现在是使用的时候了。

要用到Token的表单不能单单用条链接跳到那个表单。需要经过Action转过去。请看我以下使用方法:

<a href="/工程名/token.do?page=regist">注册表单</a>

注意:regist需要在Struts-config.xml文件里做好配置。配置如下:

<global-forwards>
  <forward name="regist" path="/regist.jsp"></forward>
 </global-forwards>

接着在Action里的execute方法里只需要一条语句就可以做好判断。

  Token token = new Token();
  if (!token.validatorToken(request, response)) {
          return mapping.findForward("registed");
  }

///////////-----这里就写自己的逻辑代码了--------

 

呵呵,简单吧!!如果使用Spring的AOP效果更好!

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/512.html

标签: JavaServer Page
分享给朋友:

“Struts 防止重复表单提交的工具包” 的相关文章

<html:select>设置默认值

在ActionFrom的reset方法里赋初值就可以,这样不管是调用的action或jsp都会先调用reset方法。...

struts,ajax乱码解决方案

乱码问题好像跟我们中国程序员特别有缘,一直困扰着我们,从开始的JSP乱码问题,STRUTS乱码问题,到现在的AJAX乱码问题,无一不是搞得许多程序员焦头烂额的,整天骂XXX产品对中文支持不了,UTF-8无法使用中文啊什么的,其实这里面被骂的产品中其实99%以上是对中文支持非常好的,而出现乱码的原...

FCKeditor的秘密

       哈哈。。由于项目的需要,这几天一直在搞FCKeditor。其实,FCKeditor配置很简单。但不知道怎么样。在我的项目里FCKeditor总不能在FireFox里显示。开始我还以为是我的配置有问题。但我从头到尾检查了配置文件...

session监听器

HttpSessionBindingListener:                     在把实现了...

用java把google和baidu的URL编码还原成明文字串ZT

因为在做链接来源统计的时候需要把 http://www.baidu.com/baidu?word= ... B%F7&tn=myie2dg  这类的URL编码还原成明文字串,一般大部分的网站都是用普通的URL编码形式,如上面链接中的badu,这种很容易转换和还原,Java...

JAVA截取HTML部分内容

超级晕死,昨天弄了整天截取HTML内容。由昨天中午2:00左右到零辰4:00钟都在弄。在网上搜了一些相关的资料。方法大概是以下几种: 1.将截取出来的不正规的HTML内容,经过递归过滤。把未闭合的HTML标签添加上。 2.用现有成熟的开源项目:Html Parser来解释处理HTML。 3.将HTM...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。