struts2框架的struts.xml的<package/>的配置顺序

本文详细介绍了Struts2框架中配置元素的加载顺序,包括result-types、interceptors等关键配置项,帮助开发者更好地理解框架运行机制。
顺序排列:
result-types 
interceptors 
default-interceptor-ref 
default-action-ref 
default-class-ref 
global-results 
global-exception-mappings 
action*(就是所有的action放到最后) 
### 在 `struts.xml` 文件中配置与 `<s:token>` 标签相关的 Token 拦截器 #### 配置基础结构 在 Struts2 中,`<s:token>` 标签依赖于 `token` 或 `tokenSession` 拦截器来防止表单重复提交。这些拦截器需要显式地在 `struts.xml` 文件中进行配置。以下是一个典型的配置示例: ```xml <struts> <!-- 包含默认的 Struts2 配置 --> <include file="struts-default.xml" /> <!-- 自定义包配置 --> <package name="default" namespace="/" extends="struts-default"> <!-- 定义 Action 并应用 token 拦截器 --> <action name="submitForm" class="com.example.SubmitFormAction"> <!-- 引用 token 拦截器 --> <interceptor-ref name="token"/> <!-- 默认堆栈拦截器 --> <interceptor-ref name="defaultStack"/> <!-- 成功结果页面 --> <result name="success">/success.jsp</result> <!-- 当检测到重复提交时跳转的页面 --> <result name="invalid.token">/error.jsp</result> </action> <!-- 可选:使用 tokenSession 拦截器 --> <action name="secureSubmit" class="com.example.SecureSubmitAction"> <!-- 引用 tokenSession 拦截器 --> <interceptor-ref name="tokenSession"/> <!-- 默认堆栈拦截器 --> <interceptor-ref name="defaultStack"/> <!-- 成功结果页面 --> <result name="success">/secureSuccess.jsp</result> <!-- 当检测到重复提交时跳转的页面 --> <result name="invalid.token">/sessionError.jsp</result> </action> </package> </struts> ``` 以上配置展示了两种不同的拦截器选项:`token` 和 `tokenSession`[^1]。 --- #### 关键点解析 1. **Token 拦截器 (`token`)** - 此拦截器主要用于简单的防重复提交场景。 - 它会在每次请求时生成一个新的令牌,并将其存储在会话中以便后续验证。 - 如果用户尝试再次提交相同的表单,拦截器将捕获此行为并返回 `invalid.token` 结果[^2]。 2. **Token Session 拦截器 (`tokenSession`)** - 更加灵活和强大,适合复杂的应用场景。 - 不仅能防止重复提交,还能够在会话级别管理令牌的状态。 - 即使用户刷新页面或重新加载表单,也不会影响正常的业务流程[^3]。 3. **Result 名称** - `success`: 表单成功提交后的跳转页面。 - `invalid.token`: 发生重复提交或其他令牌校验失败时的错误页面。 4. **Include 文件** - 使用 `<include>` 标签可以模块化管理配置文件,便于维护和扩展[^4]。 --- #### 实际应用场景 假设有一个用户注册功能,为了避免因网络延迟等原因导致用户多次点击“提交”按钮而创建多个账户,可以在 `struts.xml` 中为该功能启用 `token` 拦截器: ```xml <action name="registerUser" class="com.example.RegisterUserAction"> <interceptor-ref name="token"/> <interceptor-ref name="defaultStack"/> <result name="success">/registrationSuccess.jsp</result> <result name="input">/register.jsp</result> <result name="invalid.token">/duplicateSubmission.jsp</result> </action> ``` 在此配置下,如果用户意外触发了重复提交,系统将自动重定向至 `duplicateSubmission.jsp` 页面以告知用户相关情况[^5]。 --- ### 总结 通过合理配置 `struts.xml` 文件中的拦截器链,可以轻松集成 `<s:token>` 标签所提供的防重复提交功能。无论是基本的 `token` 拦截器还是增强版的 `tokenSession` 拦截器,都能满足不同层次的安全需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值