论坛首页 Java企业应用论坛

Struts2讲义23

浏览 3599 次
锁定老帖子 主题:Struts2讲义23
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-12  

其它表单标签使用介绍

技术要点

本节代码具体介绍一些很难分类的表单标签的使用方式。

其它表单标签使用。

其它表单标签功能演示。

演示代码

其它表单标签的 JSP 文件:

<!-----------------文件名:anotherFormTag.jsp------------------->

<%@ taglib prefix="s" uri="/struts-tags"%>
         <body>
                   ………
        <h3 align="left">
            head标签使用范例
        </h3>
        <s:head />
        <h3 align="left">
            token标签使用范例
        </h3>
        <s:token />
        <h3 align="left">
            hidden标签使用范例
        </h3>
        <s:hidden name="frank" />
        <s:hidden name="frank" value="frank"/>
         </body>
 

 

由于这些标签在页面上看不出实现效果,读者可用鼠标右击,在弹出菜单中选择“查看源文件”选项来查看。具体代码的实现如图 5.26

 

5.26  其它表单标签范例图

代码解释

1 head 标签的功能是生成页面文件的 HEAD 部分。但是它和一般的 JSP HTML 页面文件 HEAD 部分又不同。它生成了对 AJAX 框架 dojo 的配置文件的引用或代码。具体都是有关 CSS JavaScript 文件引用或代码。图 5.26 中第一个红框范围内显示内容就是这些文件引用和代码演示。在上一小节中有关日期选择的标签中也着重说明过。请读者仔细体会,有兴趣的读者也可以参考 dojo 的文档资料。

2 token 标签的功能是防止重复提交一个表单数据。有时候一些用户会有恶意提交的现象(黑客?),使用该标签就是为了避免这种现象发生。

其实在前面记述拦截器的章节中也介绍过 Struts2 一些缺省的拦截器。该标签就是利用了 TokenInterceptor TokenSessionStoreInterceptor 拦截器。该标签在页面中增加了一个隐藏值,每次提交时候该值应该是不同的,如果上述两个拦截器拦截 HTTP 请求时候发现两次隐藏值相同,则判断有人重复提交同一界面同一表单,拦截器就不允许表单提交。图 5.26 中第二个红框范围内代码也表明了防止重复提交的该原理。

3 hidden 标签 的功能是在表单中增加一个隐藏输入的值域。图 5.26 中第三个红框范围内代码表明了两个示例。这两个示例不同之处在于一个 value 属性被赋予特定的值,另一个则没有显式定义 value 属性的值。由代码可知如果没有显式定义 value 属性,则 value 属性默认值为空。

  • 大小: 124.7 KB
   发表时间:2009-10-12  
token 作为隐藏域放在这,到是没有用过,这个值是如何定义 的?
0 请登录后投票
   发表时间:2009-10-13  
zouzou 写道
token 作为隐藏域放在这,到是没有用过,这个值是如何定义 的?

这个token不好用。其实就是在客户端放一个session值。再将这个session值放在表单隐藏域中提交的后台。比对session和这个通过form提交的值。一致的话就是一次提交。然后清除这个session值。当刷新之后。这两个值就不一样了。所以就是判断这个是重复提交。
0 请登录后投票
   发表时间:2009-10-14  
说说,struts那里比,spring好
0 请登录后投票
   发表时间:2009-10-14  
这都是struts2 自带的标签吗,没用过
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics