分享

关于<s:token>的源代码分析

 CevenCheng 2011-07-27
关于<s:token>的源代码分析
2008-04-09 09:10
标签:Struts2 token 重复提交
<s:token>是Struts2中为了防止表单重复提交的标签,这个标签的实现类是org.apache.struts2.views.jsp.ui.TokenTag,这个类是关键的父类是org.apache.struts2.views.jsp.ComponentTagSupport。
第一、
TokenTag ComponentTagSupport.doStartTag 将控件对象化
TokenTag ComponentTagSupport.doEndTag component.end 调用component(Token)
Token 继承自org.apache.struts2.components.UIBean,因此首先调用UIBean.end方法,在UIBean.end方法中最后一句调用定义为protected的方法evaluateExtraParams,这个方法是提供给UIBean的子类扩展使用的,在Token的evaluateExtraParams方法中
String token = buildToken(tokenName);
其中buildToken方法实际上调用的是 TokenHelper.setToken方法,在setToken方法中值得注意的是两点,
generateGUID()方法,此方法是生成Token值得算法所在
2 session.put(tokenName, token)可以看到此处将生成的值存储在session中,等待以后比对。
第二、
到此<s:token>已经完成了他的任务,之后的比对来判断是否为重复提交,Struts2是通过interceptor来完成的TokenInterceptor,调用TokenHelper.validToken方法,此方法从Parameters中取出token值来和session里比较,如果不一样return false

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多