Struts2.1.6 annotation写法的注意事项

spring拾遗(四)——自定义注解实现interceptor的指定拦截 为了对指定方法进行权限验证等操作,很多时候我们要采用aop或者interceptor的方式,一直对自定义注解+interceptor的拦截方式不是特别了解,今天入了一下门。 首先自定义一个注解,@Target(ElementType.METHOD)表示这个注解只能在METHOD上使用,@Retention(RetentionPolicy.RUNTIME) 表示运行时生效,剩下那个没啥用 @Ta 阅读详情

本文来自光速网,转载请注明出处!
原文地址:http://www.hlmz.org/forum/viewthread.php?tid=286

struts2.1.6这个版本出来有一段时间了,这个版本在比2.0.11版本改变很多,关于annotation的写法本在在2.0.11的时候就一直在项目中使用。首先介绍这个2个版本的不同之处和2.0.11 annotation升级到2.1.6会出现那先问题。 

第一:版本不同
1、annotation所在的包不同
2.0.11的时候是在核心包里,但是在2.1.6就不是这样的它以插件形式存在了。包名是struts2-convention-plugin-2.1.6.jar 在升级的时候可以修改。 
2、增加新的annotation元素
在原来的基础上2.1.6提供了@Action、@InterceptorRefs、@InterceptorRef等具体的自己看官方文档。 
3、关于@Result的改变
原来的@Result(name="success",value="/index.jsp") 新版的是@Result(name="success",location="/index.jsp")。有所改变 
以上是新版和老版本在写法上的不同。 

第二:升级注意哪些问题
现在的2.1.6资料确实很少,网上有也都是一些肤浅的没有太具体的,而且对于大多数的开发人员来说还是比较习惯使用 
XML格式来配置struts2的,那么如果是使用XML问题就不会很大。无非改下web.xml把原来过时的过滤器换成现在的:

<filter> 
<filter-name>struts2</filter-name> 
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>struts2</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 
但是如果你要是使用annotation改的就多了。

1、拦截器:
关于拦截器这块我用红色字体标识出来,以前我们用2.0.11的时候是没有拦截器的我们只能用包: 
例如:2.0.11版本中:

<package name="struts-interceptor-common-params" extends="struts-interceptor">
   <!-- 由于使用了零配置他只能指定到那个包下所以还要配置一个默认的拦截器表示被使用 -->
   <default-interceptor-ref name="common-params" />
</package>

只能这样指定拦截器然后在代码中使用@ParentPackage("struts-interceptor-common-params")来配置。 
其中common-params是自己定义的拦截。 
在2.1.6版本中 自己定义拦截器的时候 必须要在你的struts.xml里加上

<constant name="struts.convention.default.parent.package" value="struts-interceptor"/>

value值:这个是写你自己定义的拦截器的包名。

<package 
name="struts-interceptor" extends="struts-default"> 
<interceptors> 
<interceptor-stack name="common-params"> 
<interceptor-ref 
name="check-para" /> 
<interceptor-ref name="rightsInterceptor" /> 
<interceptor-ref name="basicStack" /> 
</interceptor-stack> 
</interceptor-stack> 
</interceptors> 
</package> 
关于上述问题网上有很多人在问。现在我已经给出了答案,以上是正确答案并且在项目里也被使用了。 

2、@Action 
@Action ("/url")和@Action ("actionname")两种写法都行。但是一般情况我们都是在一个action里写很多个方法。
例如:一个用户的action他可能有增加、修改、删除我们喜欢把他们3个放在一个action里。那么原来的2.0.11版本是怎么做的呢?
老版本annotation方式你的action类必须是XXXAction也就是说必须是以action结束的一个类 而且你访问的时候必须是访问 
XXX这是老版本的规则,但是新版本不是了,因为2.1.6加入了@Action元素嘛!!可是也有不好的地方就是你所有的action必须要有execute方法,就算你没有用也要加因为这个方法表示actionName的入口,所以你必须要有这个。 
举个例子:

@InterceptorRefs({
@InterceptorRef("common-params-upload")
}
)
@Namespace("/manage/convertmodel/user/usergroup")
public class ExportUserGroupModelAction{
@Action("/exportUserGroupModel!exportUserGroupXML")
/**用户组的XML文件导出*/
public String exportUserGroupXML() {
       。。。。。。
       return null;
}
@Action("/exportUserGroupModel")
public String execute(){
   return null;
}
}

就算不用这个execute方法,也要写上。否则S2.1.6就会找不到Action。 

保姆级教程:用PyTorch从零实现SDE扩散模型(附完整代码与MNIST实战) 本文提供了一份详细的PyTorch教程,指导读者从零开始实现SDE扩散模型,并附有完整的代码示例和MNIST数据集实战。通过解释随机微分方程(SDE)的核心概念、模型架构设计、训练流程实现以及采样生成过程,帮助开发者掌握扩散模型的构建与应用。 阅读详情

相关推荐

BMS硬件设计核心:安全、精度与EMC的工程平衡

电池管理系统(BMS)是保障锂电安全运行的关键嵌入式子系统,其本质是在高精度模拟测量、实时故障响应与复杂电磁环境适应性之间达成工程平衡。原理上,BMS依赖专用监测芯片(如BQ76920)实现微秒级硬件保护,结合主控MCU(如STM32)完成策略决策与通信管理,形成‘安全协处理器+智能主控’双架构。技术价值体现在对过压/欠压/过流/温度等多维故障的毫秒级闭环处置能力,支撑SOC/SOH估算可信度与系统鲁棒性。典型应用场景涵盖电动工具、轻型电动车及储能模块等中低串数电池组。本文聚焦BMS控制板在时钟布局、电源滤

weixin_30591519的博客 62

Springboot+redis+Interceptor+自定义annotation实现接口自动幂等

本篇文章给大家介绍了使用springboot和拦截器、redis来优雅的实现接口幂等,对于幂等在实际的开发过程中是十分重要的,因为一个接口可能会被无数的客户端调用,如何保证其不影响后台的业务处理,如何保证其只影响数据一次是非常重要的,感兴趣的朋友跟随小编一起看看吧

UC1.5_UCH2.0_DZ7.2_SC_GBK.zip

UC1.5_UCH2.0_DZ7.2_SC_GBK.zip

自定义 AnnotationInterceptor 的结合使用

自定义Annotation and Interceptor 此文章主要分享自定义的annotationinterceptor的结合使用 我们可以将其分为2个步骤: 1、 书写自定义的annotation 2、 自定义业务拦截器(interceptor) 一、 自定义的annotation,话不多说,直接看图: 以下是自定义的注解,建议放在annotation包下,类名尽量和需要实现的业务功能挂钩 至此,一个自定义的注解就完成了,下面我们看一下和interceptor的结合使用 ​ Inter

qq_51405296的博客 537

自定义权限校验之annotation+reflection+interceptor邂逅

annotation+reflection+interceptor实现自定义权限校验 封装需准备如下: 方法的注解:利用interceptor通过该方法注解进行权限校验 webMvcConfig配置类:添加interceptor拦截器 权限校验拦截器类:对有注解的方法进行拦截,进行权限校验 controller类:进行测试 代码示例: /** * 自定义权限注解 */ @Target({ElementType.METHOD,ElementType.TYPE})//作用范围为类或方法上 @Retent

ldcaws的专栏 313

自定义注解+拦截器实现权限控制

今天刚学习了通过自定义注解+拦截器实现权限控制,自己花了点时间整理,发到网站同网友交流分享。 一、定义一个自定义注解类 import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * 自定义注解 * @author grace * */ @Retention(Reten

程序员囧辉 2万+

【转】Struts2.1.6 annotation写法注意事项

struts2.1.6这个版本出来有一段时间了,这个版本在比2.0.11版本改变很多,关于annotation写法本在在2.0.11的时候就一直在项目中使用。首先介绍这个2个版本的不同之处和2.0.11 annotation升级到2.1.6会出现那先问题。 第一:版本不同1annotation所在的包不同2.0.11的时候是在核心包里,但是在2.1.6就不是这样的它以插件形式存在了。包名是...

mib_2012的博客 166

Struts2.1.6 annotation注意事项

原文地址:http://www.hlmz.org/forum/viewthread.php?tid=286 struts2.1.6这个版本出来有一段时间了,这个版本在比2.0.11版本改变很多,关于annotation写法本在在2.0.11的时候就一直在项目中使用。首先介绍这个2个版本的不同之处和2.0.11 annotation升级到2.1.6会出现那先问题。 第一:版本不同

iuhiqnehc的专栏 465

Struts2 Annotation配置

  Struts2 Annotation在官网上叫零配置文件(就是可以没有struts2.xml),通过java annotation注释来代替struts2.xml文件。这是官网上的资料,可以参考下       我现在知道什么叫做摸石头过河了,网上关于Struts2 Annotation的配置基本上没有,一些视频也没有详细的说明配置中出现的问题,经过一上午的努力,终于配好了,在这把出现的问题分享下:1:修改web.xml配置文件 : 这个文件在WEB-INF下,记住一定别忘了标签。不然struts2

a_sum_of_money的专栏 931

struts2的配置二——annotation的配置

Struts2引入annotation的目的:减少XML配置文件的数量,将相关的配置信息通过annotation嫁接到action中。 对于单个action的配置,用annotation可以很方便的开发与维护,但对于全局配置来说,用XML更清晰. 1.namespace的配置 @Namespace(“”)标注:配置action的URL路径。在类级上注解。 @Action(“”):actio

zrxJuly 488

Struts2学习笔记(十四)Annotation实现Struts2的配置

annotation注解方式

fumier的专栏 588

Struts2 Annotation

     从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定自动配置。如何使用Convention

wwwqvod的专栏 1484

Struts2原理分析,自己实现一个struts2

今天没有时间继续撰写关于osworkflow的源码剖析文章了,换一个思路,写一下struts2相关的东西,先来说说为什么要写这样的一个东西,公司有一套自主研发的云服务平台,CTO告诉我站在用户的角度,从头到尾部署自己的应用,让我写一个基于php的http应用和基于j2ee的http应用,php的昨天已经写完并且顺利部署,照常运行,今天本来要写java的,开始动手之前,我纠结一件事情,第一现在的ja

清心寡欲,做一个专注的程序员 2142

Java Annotation 高级应用

版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)原文:http://www.matrix.org.cn/resource/article/44/44062_Java+Annotation+Apt.html关键字:java,annotat

风子 2598

Annotation配置Interceptor

利用注解配置拦截器: 在xwork包下有: com.opensymphony.xwork2.interceptor.annotations.After.class com.opensymphony.xwork2.interceptor.annotations.Before.class com.opensymphony.xwork2.interceptor.annotations.Befor...

麦田守望者 281

mybatis-interceptor:Spring动态拦截器

Spring动态拦截器,有需要的朋友可以参考下。 一、前言 拦截器的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,或者丢弃这些被拦截的方法而执行自己的逻辑。如对于mybatis的Executor,有几种实现:BatchExecutor,ReuseExecutor、SimpleExecutor和CachingExecutor,当这几种Exec

xiangbq的博客 9151

这些写法要注意

<br />在用汇编编写代码的过程中 发现自己的功底还是差一点 主要是动手太少 借着这个机会 将不确定正确与否的代码写下来 与君共勉<br /> mov ebx,3D48420h<br />    mov ebx,dword ptr [ebx+11ach*4]<br />    mov ebx,dword ptr [ebx+8]      这三句都是正确的<br /> <br /> <br />.if [ebx+8] == 2eh     错误<br />.endif<br /> <br /> <br />

武林谣言的专栏 476

使用Hibernate InterceptorAnnotation实现父子关系的计数

Hibernate中,对于domain model之间的父子关系,有时需要父对象需要得知子对象的数目,常规的做法是用一条sql语句"select count(*) ..."。 更好的做法可以借鉴RoR,在父对象中设置一个保存子对象数目的字段,添加删除的时候对这个字段进行更新。 但对这个字段进行更新的时候,往往需要显式的对父对象进行更新,比如create Topic时需要: [code...

zhangle 195

springboot+redis+Interceptor+自定义annotation实现接口自动幂等

作者:Yrionwww.cnblogs.com/wyq178/p/11130034.html通过本文,你应该学会:自定义注解,拦截注解幂等设计的原理,以及流程如何实现自动验证token前...

程序员闪充宝 235
上一篇: Struts2零配置开发(注解Annotation的使用)二
下一篇: 已解决:无法连接到WMI提供程序。你没有权限或者该服务器无法访问/cannot connect to WMI provider. You do not have permission or the……
oathevil
博客等级 码龄17年 228粉丝 141原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值