struts中token的使用方法

很多时候要防止重复提交,比如论坛在发表提问的时候,要是不控制那就可以一直提交~

使用方法:论坛为例

ask.do :为跳到提问页面的action

ask.jsp:为提问页面

askok.do:为提问成功提交的action

askok.jsp:处理提问之后的跳转的jsp

首先在ask这个action里面加入saveToken(request);这是为了在提问页面即ask.jsp页面生成一个隐藏 的表单

<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="a6b9ff6834284444001b8206723b654d">

在ask。jsp页面做以下处理:使用form为<html:form  method="post" action="askok.do">  因此要引入这个标签 否则不会生成这个隐藏表单。

form写法 1.1之后不写name 没有这个属性 但要在struts-config。xml里面配置这个actionform 我们 可以定义为question  同时要配置askok这个action里面要写入对应的form

<action path="/askok" type="....." name="question">必须写上这个否则会报找不到FORM的 错误

如果要在ask。jsp这个页面做js处理要用到FORM name的话可以直接写 question   因为struts自动 生成了这个form的name 生成之后的:<form name="bangquestion" method="post" action="/askok.do">

ask.jsp 这个页面自动生成加入FORM name

然后在askok.do里面写if (isTokenValid(ac.getRequest(),true)) {

添加提问

}else

{

跳转提示

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jsp
, jsp页面的跳转问题
, 页面
, action
, 提问
, 处理
, ask
, 生成
struts跳转
,以便于您获取更多的相关知识。

时间: 2024-09-08 05:42:12

struts中token的使用方法的相关文章

Struts 中bean:present使用方法

   在做一个用Struts做的电子商务项目时,遇到了一个这样的问题:未登陆用户购买商品时,要显示用户登陆画面:而登陆用户购买商品时,则不显示登陆画面而显示用户信息.可以用struts 1.1 的bean:present实现:     在JSP页面头部一定要加上相应的<%@ taglib 等标记,否则无法实现.我开始时就是忘了加<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="

Struts中token标签防止重复提交

  使用拦截器 <action name="pro" class="action.Pro">            <!-- 使用系统默认的拦截器栈 -->            <interceptor-ref name="defaultStack"/>            <!-- 使用防刷新的token拦截器 -->            <interceptor-ref name=&

在Struts中对用户输入信息的校验方法对比:validate 和validator

在Struts中对用户输入信息的校验一般在FromBean中进行(除非需要访问数据库进行诸如登录信息的校验,因为这是Action的工作),本文将阐述如何在Struts中实现可配置的信息校验. 一.在FormBean中手工实现 最简单的方法是直接在FormBean中重写ActionForm类的validate方法,validate方法签名如下: public ActionErrors validate(ActionMapping mapping, HttpServletRequest req) 比

Struts中使用validate()输入校验方法详解_java

1.在ActionSupport中有一个validate()方法,这个方法是验证方法,它会在execute()方法执行之前执行,所以能够起到很好的验证的作用. @Override //重写Action中的validate()方法 public void validate() { if(null==this.username||this.username.length()<4||this.username.length()>6){ this.addActionError("userna

struts中动态方法调用使用通配符_java

一.DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了.还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同的业务逻辑:另外一种是使用通配符的方式.改变method属性的方式需要配置多个action,而且这些action定义的绝大部分都是相同的,所以这种定义是相当冗余的.因此,使用通配符就可以在一个action标签中代替多个逻辑处理的Action. 二.示范:(和之前的动态方法调用改变form表单acti

Json在Struts中的转换与传递方法_java

本文主要探讨普通数据如何快速转换为Json数据,一共讨论2种方法: 首相准备页面和实体类: 页面: <body> <div id="topLoginDiv"> 用户名: <input name="user.name" id="loginName" />  密码: <input name="user.password" id="loginPassword" />

用Struts的Token机制解决表单重复提交

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配.在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换.这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生. 这时其实也就是两点,第一:你需要在请求中有这个令牌值,请求

简化繁琐的赋值——反射在Jdbc和Struts中的应用

缘起在Jdbc应用中,我们经常需要有这么样的一个Javabean:当我们从数据库里取值时,我们希望把对应的值赋给Javabean,而后再操作Javabean进行各种业务处理:而我们保存数据的时候,也希望把经过业务处理后的值赋给Javabean,再由该Javabean与Jdbc交互,将数据保存在数据库里. 而在Struts应用中,我们经常要跟ActionForm或DynaActionForm打交道,例如从业面取得用户输入的数据,在Struts应用中,我们实际上是从ActionForm中取得数据:而

Struts中的Action类的工作机制

Struts中的Action类的工作机制  所有的Action类都是org.apache.struts.action.Action的子类.Action子类应该覆写父类的execute()方法.当ActionForm Bean被创建,并且表单验证顺利通过后,Struts框架就会调用Action类的execute()方法.execute()方法的定义如下:    public ActionForward execute(ActionMapping mapping