自学Struts2的tokenInterceptor的想法。。。

24.后端token拦截器 接下来就是处理token。我们应该是获取前端的token并调用getTokenClaims方法,怎么获取凭证,看看能不能获取成功,没有获取成功怎么办,获取成功了怎么办。 阅读详情
本文引用不少网上资料,如没写着引用出处,请原凉。

先说说tokenInterceptor的作用,防止客户重复提交表单,可以解决,客户在同一表单中点击两个提交,后退后,再提交,在提交完成后,对跳转的页面直接进行刷新,避免两次写入数据库。都可以很好的解决。

先说说什么是拦截器,拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。上面这段话是Max说的。觉得不错,很清晰明了。

我先来举个例子,大家一看就会明白的

struts.xml

<!DOCTYPE struts PUBLIC 

	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

	"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<include file="struts-default.xml"/>

	<package name="default" extends="struts-default">

		<default-interceptor-ref name="paramsPrepareParamsStack"/>

	</package>

 	<include file="strutsconfig/struts-workticket.xml" />

</struts>

struts-workticket.xml

<!DOCTYPE struts PUBLIC 

	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

	"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>



	<package name="demo" extends="struts-default" namespace="/demo"> 

	   <!-- 错误提示页面 -->

	   <global-results>

	       <result name="error">/errInfo.jsp</result>

	   </global-results>

	   <global-exception-mappings>

       	   <exception-mapping result="error" exception="java.lang.Throwable"/>

       </global-exception-mappings>

       

        <action name="tokenInterceptor_*" class="com.hz.struts2.demo.web.action.TokenInterceptorAction" method="{1}">  



            <result name="demo">/web/demo.jsp</result>

            <result name="login">/index.jsp</result>

            <!-- 注意:作用,如果出现重要提交的时候,跳转的页面  -->

            <result name="invalid.token">/overPageInfo.jsp</result>

            <!-- 注意:一定要写上,否则无法运行。原因:如果不写的话, 就不会调用默认的拦截器,因为被覆盖啦 --> 

            <interceptor-ref name="defaultStack" />

			<interceptor-ref name="token">

				<!-- 在action中,需要进行拦截的方法  -->

				<param name="includeMethods">execute,checkLogin</param>

				<!-- 在action中,不需要进行拦截的方法  -->

				<param name="excludeMethods">toLogin</param>

			</interceptor-ref>

			

        </action>



    </package>

</struts>

com.hz.struts2.demo.web.action.TokenInterceptorAction.java

这个没什么意思,不需要做任何改动,这就可以体现出拦截器的好出,大大减少啦代码量,提高了代码的复用性。
package com.hz.struts2.demo.web.action;



public class TokenInterceptorAction extends AbstractAction {

	@Override

	public String execute() throws Exception {

		System.out.println(" :: execute " + new java.util.Date());

		return "demo";

	}



	/**

	 * Goto login page

	 */



	public String toLogin() throws Exception {

		System.out.println(" :: toLogin " + new java.util.Date());

		//return "invalid.token";

		return "login";

	}



	public String checkLogin() throws Exception {

		System.out.println(" :: checkLogin " + " " + new java.util.Date());

		return "login";

	}

}

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>index</title>

  	<script type="text/javascript">

  		function submitForm(){

  			var url = "/demo/tokenInterceptor_checkLogin.action";

  			var token = "struts.token.name=struts.token";

  			var token2 = "struts.token=";

  			token2 += document.getElementsByName("struts.token")[0].value;

  			url += "?" + token + "&";

  			url += token2;

  			document.location.href = url;

  		}

  	</script>

  </head>



  <body>

    <form action="/demo/tokenInterceptor_checkLogin.action" method="post">

    	<s:token id="tokenId" />

    	<br>

    	

    	<input type="submit">

    	<input type="button" onclick="submitForm()" value="非表单提交">

    </form>

  </body>

</html>

这是有表单的情况,下面提供一段js是没有表单的情况。正好在我系统里用到了这样的需求,一样粘上来这是我做的一个简单的demo,也是一刚开始学的时候,自己学着写的。在这过程中,我过我常容易出现错误的几个问题,都做了记号

总结

要想让自己的技术不会被淘汰,只有靠自己。我想作为一名IT人员都明白一个道理,没有自学能力的人,是没法成为IT精英的。

TMS320F280049C 学习笔记11 控制率加速器 CLA 例程 总结了TI官方在C2000Ware_3_01_00_00版本中提供的7个与CLA相关的例程。 阅读详情

相关推荐

JS逆向实战:从宿务航空机票搜索到参数签名算法解析

在现代Web应用开发中,前端与后端的数据交互安全是核心技术环节。其原理通常涉及参数签名、令牌验证等机制,用于防止未授权访问和数据篡改。这些技术的核心价值在于保障接口调用的合法性与数据完整性,广泛应用于电商、金融、旅行预订等对数据安全要求较高的场景。以机票搜索为例,网站常通过动态生成的签名参数来验证请求来源。本文以宿务太平洋航空为案例,深入解析其搜索请求中关键参数(如signature)的生成逻辑,并演示如何通过浏览器开发者工具进行断点调试、变量追踪,最终使用Node.js与crypto-js库本地复现完整请

weixin_26642481的博客 752

struts2 token拦截器

之前struts2解决token必须在每个action配置里面重新定义token的拦截器,如果配置较多无疑非常麻烦,于是就写了个基于Annotation的TokenInterceptor,只要在需要避免重复提交的action方法前使用@Token注解,拦截器能自动拦截方法并做Token的检验。使用时除了把在action配置中重定义拦截器,改为注解,其他与原来的拦截器完全一致,包括注意你必须在调...

﹎仰望↗星空℡ 363

ROS教程(四):RVIZ使用教程(详细图文)

前言 根据前面的教程已经学会了创建功能包,那么本篇文章主要内容则是通过节点来发布数据至RVIZ

Leslie的博客 17万+

Struts2 TokenInterceptor防止表单重复提交

TokenInterceptor防止表单重复提交。 由于某些原因,用户在进行类似表单提交的操作后,以为表单未被提交,会进行多次的重复提交。为了避免用户多次提交给服务器带来负荷。我们会对表单提交这样的操作进行一些处理,以告诉用户不要重复提交。下面我们建立struts2token项目,使用struts2的token拦截器来实现此案例。 步骤一,编写login.jsp页面,内容如下: page l

okkeqin的专栏 1191

随机截距交叉滞后模型RI-CLPM:原理、Mplus实现与结果解读

纵向面板数据分析中,传统交叉滞后模型(CLPM)常被用于探索变量间的时序关系,但其估计结果可能混淆了个体间稳定差异与个体内短期波动,导致交叉滞后路径出现偏差。随机截距交叉滞后模型(RI-CLPM)通过引入随机截距因子,将个体特质层面的差异与个体内动态过程分离,从而提供更纯净的个体内效应估计。该模型在组织心理学、发展心理学、成瘾行为等研究领域迅速普及,并成为顶级期刊审稿时常见的稳健性检验要求。本文从原理出发,系统讲解RI-CLPM的模型构建、识别条件、Mplus实操代码、输出解读及常见陷阱,并结合协变量处理、

weixin_33525298的博客 275

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 707

struts2的token interceptor

关于struts2的token拦截器的说明 原理:struts2的token interceptor是关于重复提交的拦截器,其实现是:在form表单中加入token标签,如下: 1 <form action="user" method="post"> 2 name:<input name="name"> 3 ...

CA229755035的博客 376

11.15 分析finrl 的框架

11.15 分析finrl 的框架

yueguoqing88的博客 1084

struts2的token拦截器的原理及作用

众所周知struts2有着自己的token拦截器,主要是用于防止用户进行表单的重复提交的。但是一直没搞明白两个问题:token拦截器实现的原理是如何的?哪些action需要使用token拦截器去防止其重复提交?下面根据自己最近的学习给出一个自己的经验。         首先,实现token拦截器基本需要两步:         1、在jsp的form表单任何地方中加一句,这个标签的作用是

痕泽的专栏 7967

国自然基金申请书撰写新思路:如何合理利用AI提高本子竞争力?

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。创新点、技术路线、前期基础,但是我们也可以把写好的初稿交给AI,让它扮演资深研究员,帮我们精炼表述、优化段落结构,并揪出可能被评审追问的逻辑漏洞。,我们需要的是让它帮我们理清楚思路,而不是让它替我们完成内容。

智能AI让学术科研更容易 665

光学设计仿真软件:Code V_(8).场曲和色差校正

通过以上步骤和代码示例,用户可以更好地理解如何在Code V中进行场曲和色差的校正。这些技术不仅有助于提高光学系统的成像质量,还可以为后续的光学设计提供重要的参考。在实际应用中,用户可以根据具体需求选择合适的校正方法和优化策略,以达到最佳设计效果。

kkchenjj的博客 1784

Interceptor+Token拦截器登录校验 + Exception全局异常处理器

使用拦截器完成用户鉴权,解决重复性的登录验证和token解析;统一处理项目中的异常,减少项目中的try...catch的代码冗余

weixin_44894196的博客 1654

2026年广东省职业院校技能大赛中职组“大数据应用与服务”样题一完整参考答案

2026年广东省职业院校技能大赛中职组“大数据应用与服务”样题一完整参考答案

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 749

自学Struts2的tokenInterceptor的想法(转载)

  分类: Struts2 Java JavaScript2008-07-09 23:41 991人阅读 评论(4) 收藏 举报 strutsexceptiontokenactionloginstring [xml] view plaincopy   本文引用不少网上资料,如没写着引用出处,请原凉。   先说说tokenInterceptor的作...

iteye_1760的博客 209

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HTTP Token Interceptor拦截器项目实践全解

1.写在前面 公司开发新的项目,因为这个项目比较偏向金融方向,与钱有关,所以接口比较严谨。先说下全部情况, 我这边Http 方式采用的是 OKhttp+Retrofit 后台一共分为三种token,分别是实名token(accessToken),匿名token(oauthToken),刷新token(refreshToken),不同的token用途不一样,有的作为请求参数放在请求体中,有的作为头...

weixin_34218890的博客 700

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

登录时的校验Token接口开发(Interceptor)

校验 Token后端通过拦截请求,从请求头中提取 Token。使用工具类JwtUtil解析 Token,验证其合法性、有效性。将解析后的用户身份信息存入,供业务层使用。ThreadLocal 的应用使用工具类隔离多线程环境下的用户数据,避免数据冲突。在请求完成后,清理中的用户信息,防止内存泄漏。拦截器的灵活性配置了拦截路径与排除路径,确保仅对需要校验的接口进行拦截(例如,登录接口不需要校验 Token)。

zzb1580的博客 1270

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TokenInterceptor

package com.example.btft.utils; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import andr...

guodashen007的博客 971

【圈友app】解析token的两种方法:工具类/拦截器—人脸识别设置头像、完善用户信息

【圈友app】解析token的两种方法:工具类/拦截器—人脸识别设置头像、完善用户信息

四季轮换叶,一路招摇胜 2525

自定义拦截器(比如token校验的拦截器)

三、实现具体的拦截器,比如token校验的,你校验token的逻辑要写在这个类里面,具体的处理,preHandler方法表示进行拦截,然后判断是否使用。一、自定义一个拦截器配置类,里面可以配置不同的拦截器,比如校验token的、校验权限的等,在里面可以设置拦截的路径和放行的路径等。这个注解,当控制层使用这个注解,表示放行,该接口不进行token的校验)二、自定义注解(以校验token为例子,我自定义了。注解, 没有使用这个注解则需要进行token校验。3、token具体的拦截器。

zi2242975806的博客 1231

科学的解决Http Token拦截器TokenInterceptor实现【详细 一篇足矣】

1.写在前面公司开发新的项目,因为这个项目比较偏向金融方向,与钱有关,所以接口比较严谨。先说下全部情况, 我这边Http 方式采用的是 OKhttp+Retrofit 后台一共分为三种token,分别是实名token(accessToken),匿名token(oauthToken),刷新token(refreshToken),不同的token用途不一样,有的作为请求参数放在请求体中,有的作为头部

guozhaohui628 1万+

统一处理token的思路

统一处理token 1、处理token的逻辑代码 @Service public class UserService { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); private static final Logger LOGGER = LoggerFactory.getLogger(UserService.class); @Autowired private RedisTemp

weixin_49185060的博客 730

Spring MVC 拦截器

Spring MVC 拦截器 如何实现session共享问题 拦截器的定义 配置代码

qq_52963857的博客 764

基于token的一个拦截器

public class TokenInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object hander) throws Exception { ...

weixin_41678132的博客 2328

struts2 拦截器_Struts2令牌拦截器示例

struts2 拦截器Struts 2 token interceptor can be used to handle multiple form submission problem. While designing web application, sometimes we have to make sure that double form submission is treated as ...

从零开始的教程世界 452

struts2-Token Interceptor(处理表单重复提交)

令牌提交   默认栈里面没有,手动添加 1 <!-- 配置默认执行的拦截器栈,增加令牌拦截器 --> 2 <interceptors> 3 <interceptor-stack name="tokenStack"> 4 <interceptor-ref name=...

weixin_30951231的博客 98
上一篇: 认真的学习~轻量级框架
下一篇: Spring 2.0 AOP 与事务配置突破
javaiswhat
博客等级 码龄19年 20粉丝 11原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值