- 浏览: 1499674 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
1、使用Struts2的表单标签,其中需要增加token标签。如下:
……
Java代码
<%@ taglib uri="/struts-tags" prefix="s" %>
……
<s:form action="page1" theme="simple">
<s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><br/>
<s:token/>
<s:reset/><s:submit/>
</s:form>
<%@ taglib uri="/struts-tags" prefix="s" %>
……
<s:form action="page1" theme="simple">
<s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><br/>
<s:token/>
<s:reset/><s:submit/>
</s:form>
2、在struts配置文件中增加token拦截器。如下:
Java代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="lee" extends="struts-default">
<action name="page1" class="org.bruce.Page1">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result>/page1.jsp</result>
<result name="invalid.token">/page1error.jsp</result>
</action>
</package>
</struts>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="lee" extends="struts-default">
<action name="page1" class="org.bruce.Page1">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result>/page1.jsp</result>
<result name="invalid.token">/page1error.jsp</result>
</action>
</package>
</struts>注意,需要name为invaid.token的result。这是当拦截器判断是重复提交的时候,会转向的结果。
3、invaid.token页面打印错误信息,一样可以使用struts标签。如下:
<s:actionerror/>
理解:
1、JSP使用<s:token/>标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中。
2、token拦截器会判断客户端form提交的token和session中保存的session是否equals。如果equals则执行Action。否则拦截器直接返回invaid.token结果,Action对应的方法也不会执行
---------------------------------------------------------------------------------
对于采用token防止表单重复提交的原理我就不用多说了,大家也应该都知道,在这我只介绍在struts2中如何利用标签实现防止表单的重复提交。
首先在表单中加入标签 ,会生成一个隐藏域用于存储系统自动随机生成的token值。然后在action中启用TokenInterceptor,即在struts.xml中加入下面类似代码。
Java代码
1. <action name="register" class="UserAction" method="register">
2. <result>register_success.jsp</result>
3. <result name="input">register.jsp</result>
4. <result name="invalid.token">register.jsp</result>
5. <interceptor-ref name="token"></interceptor-ref>
6. <interceptor-ref name="defaultStack"></interceptor-ref>
7. </action>
<action name="register" class="UserAction" method="register">
<result>register_success.jsp</result>
<result name="input">register.jsp</result>
<result name="invalid.token">register.jsp</result>
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
其中<result name="invalid.token">register.jsp</result>”是在发生表单重复提交时,返回给用户提示信息的显示页面,同时还需在显示页面中加入 ;“<interceptor-ref name="token"></interceptor-ref>”是启用TokenInterceptor 如果表单重复提交,会提示The form has already been processed or no token was supplied, please try again。修改国际化文件struts.messages.invalid.token 的键值,提供自己定制的错误信息。比如:struts.messages.invalid.token= 您已经提交了表单,请不要重复提交。
发表评论
-
Struts2对Action名称的搜索顺序
2011-08-03 22:47 1382新建一个struts2项目,命名为struts2。按照如下XM ... -
探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
2011-08-03 19:09 1770一、概述 Struts2的核心是一个Filter ... -
struts2 FilterDispatcher 和 StrutsPrepareAndExecuteFilter 的区别
2011-08-03 18:02 1344FilterDispatcher是struts2.0.x到2. ... -
框架学习之Struts2 第二节 Action的详解
2011-08-03 17:50 1371http://www.cnblogs.com/ying ... -
Struts2的模板和主题theme及自定义theme
2011-08-03 16:59 8265Struts2提供了三种主题,ajax, simple, cs ... -
struts2 action基类 ActionSupport
2011-08-03 16:14 2637Struts 2的Action无须实现 ... -
Struts2访问Web元素(RequestAware,SessionAware,ApplicationAware)
2011-08-03 14:50 9701在Struts2中,动作类虽然继承ActionSupport类 ... -
Struts2自定义拦截器实例—Session超时的处理
2011-08-03 10:49 3399版本:struts2.1.6 实例功能:当用户登陆后,ses ... -
Struts2数据传输的背后机制:ValueStack(值栈)
2011-07-11 15:34 1342今天看到一篇讲struts2的valuestack的很好文章, ... -
struts2文件上传的采用的三种方式解析
2011-07-06 18:29 1371文件上传几乎是每个项目实现的一个必须的模块。 上传就是将 ... -
struts2的Action配置通配符
2011-02-28 17:05 22191.注意,书写代码的时候一定要注意命名的规则,不要胡乱的命名, ... -
struts2中form的theme属性
2011-02-28 16:00 2380struts2中theme属性包括xhtml,html,sim ... -
Struts2的类型转换器
2011-02-24 17:27 1391一、概述 在B/S应用中,将字符串请求参数转换为相应的 ... -
Struts2标签--s:url
2011-02-23 17:09 1881<!--action就是struts2 acti ... -
hgdfghgdfh
2011-01-06 17:57 0datealocaltonight.com -
Struts2 默认的模板配置 theme
2010-10-29 10:26 1472在使用struts2标签时,默认情况下生成的html代码会添加 ... -
Struts2自定义Theme
2010-10-29 10:21 15931. Struts2 Theme与WebWork Theme ... -
Struts2 的四种theme类型
2010-10-29 10:13 1675struts2 中有四种 theme 类型: simple ... -
struts2数据校验流程图
2010-10-29 09:40 2151通过我在blog中写到关于利用Struts 2完成手动校验这篇 ... -
详解struts2中struts.properties
2010-10-18 11:28 1219Struts 2框架有两个核心配置文件: strut ...
相关推荐
<%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-----超链接,类似于html里的<a></a> 3. <s:...
而在 Struts2 中,所有的标签都被统一管理,并通过在 JSP 文件头部声明 `<%@ taglib prefix="s" uri="/struts-tags" %>` 来启用 Struts2 的标签库。这种方式简化了开发过程中的配置工作,使得开发者可以更加专注于...
`<s:token>` - 令牌标签 用于生成防CSRF攻击的令牌。 ```jsp <s:token name="csrfToken"/> ``` 通过以上详细介绍,我们可以看出Struts2的标签库非常丰富,涵盖了Web应用开发中的各个方面,为开发者提供了极大的...
`<s:a>` 相当于HTML的 `<a>` 标签,但提供了与Struts2框架的集成,可以动态生成URL。`<s:action>` 则用于在页面上触发一个特定的Action。 B. `<s:bean>`: 此标签类似于Struts1中的JavaBean引用,但在Struts2中并不...
`<s:token>` - 令牌标签 用于防止跨站请求伪造(CSRF)攻击。 ```xml <s:token/> ``` #### 49. `<s:tree>` - 树形标签 创建树形结构。 ```xml <s:tree value="treeData" nodeLabel="%{#node.label}"/> ``` ####...
`<s:token>`标签用于防止重复提交,与Struts2的Token拦截器配合使用。 `<s:tree>`标签用于生成树形结构,适用于层次数据的展示。 `<s:treenode>`定义树结构中的节点。 T. `<s:updownselect>`,`<s:url>`: `<s:...
虽然 Struts 2 不再推荐使用 Struts 1.x 的标签,但在某些情况下仍然可能见到 `<s:bean>` 标签。此标签用于访问 JavaBean 的属性值。例如:`<s:bean name="user" property="firstName"/>`,这里的 `name` 指定了 ...
`<s:if>`、`<s:elseif>`、`<s:else>` 标签 - **用途**:用于条件判断。 - **示例**: ```xml <s:if test="%{isLoggedIn}"> 已登录 </s:if> <s:elseif test="%{isGuest}"> 游客 </s:elseif> <s:else> 未...
- 示例:`<s:choose><s:when test="%{#session.user == 'admin'}">Admin Panel</s:when><s:otherwise>Guest</s:otherwise></s:choose>` - 用途:类似于 Java 中的 switch-case 结构,用于复杂的条件判断。 ##### ...
<s:optiontransferselect name="selectedOptions" list="{'option1','option2','option3'}" headerKey="" headerValue="Select Options" /> ``` - **说明**: 允许用户从一个列表中选择并转移到另一个列表。 30. ...
Struts2的`s:select`标签用于创建下拉列表。以下是一些关键属性的介绍: 1. `list`属性:这是必须设置的属性,用于填充下拉列表的数据,可以是List、Map、Set等可迭代对象。 2. `listKey`和`listValue`属性:当`...
Struts2框架提供了一种简单有效的方式来解决这一问题,即通过`<s:token/>`标签和相关的拦截器机制来实现。 #### 二、Struts2框架简介 Struts2是一个基于Java的开源Web应用框架,它继承了Struts1的优点,并且进行了...
<s:token name="struts2" /> <s:submit value="Submit" /> </s:form> ``` 然后,在Action配置中,添加`token`拦截器: ```xml <action name="register" class="com.struts2.action.RegisterAction"> <result ...
`<s:param>` 传递参数给其他标签,例如:`<s:a href="myAction.action"><s:param name="param1" value="value1" /></s:a>`。 P. `<s:password>` 用于创建密码输入框,例如:`<s:password name="myPassword" />`。 ...
Struts2 提供了一个称为 `<s:token>` 的标签,用于生成一个唯一的标识符,并将其存储在 session 中。当表单提交时,这个标识符会一同发送到服务器。服务器端的拦截器(如 `token` 拦截器)会检查这个标识符,如果...
2. `<s:action>`标签用于在Struts2的配置文件中声明一个action。它在处理Web请求时起到关键作用。 3. `<s:actionerror>`和`<s:actionmessage>`分别用于显示action产生的错误信息和消息信息。 4. `<s:append>`标签...
<interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/> <interceptor-stack name="tokenStack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="token"/> </...
2. **数据展示标签**:例如 `<s:property>`、`<s:text>` 等,用于显示 Action 中的数据。 ```jsp <s:property value="message"/> <s:text name="welcome.message"/> ``` 3. **验证标签**:例如 `<s:fielderror>...