再改struts1.2.*,让struts1再焕发表春,支持Annotation和POJO风格的Action

2023-10-28 06:38

本文主要是介绍再改struts1.2.*,让struts1再焕发表春,支持Annotation和POJO风格的Action,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近有个项目改造,经过一番讨论后决定使用struts1,为什么不是struts2,呵呵,不是由我一个人说了算了,因为使用习惯了struts2,回头再来用struts1,感觉非常不爽,所以打
算对其进行改造一番,在网上也搜了一些关于struts1改造,都只是支持了Annotation配置和从IOC中取Action,我的改造目标在此之上加了一些,主要有:
1.支持基于Annotation的配置
2.不使用ActionForm但不去除它
3.支持Action方法参数值注入
4.简化文件上传处理
5.自定义返回结果处理如:直接返回string、Json、或者导出Excel
6.支持url到actionmethod的映射,如/actionPath/actionMethod.do而不是/actionPath.do?cmd=actionMethod
废话不多说,先看效果代码:

//定义action的入口URL
@Action(path="/hello")
//spring bean定义
@Component("hello")
public class HelloAction {
//领域数据对象
public static class Hello {
private String say;
public String getSay() {
return say;
}
public void setSay(String say) {
this.say = say;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;

public String toString() {
return String.format("%s:'Hello,%s'", say,name);
}
}
//如果一个方法想作为一个外部接口,必须定义@ActionMethod,此配置有两个属性:
//path和resultType,path表示对外部的访问接口,不定义则直接使用方法名,resultType表示
//对返回的对象根据设置的结果进行任意处理
//returnType="string",表示对返回的任何对象调用toString直接写到响应流中去
@ActionMethod(resultType="string")
public String say(String name) {
return String.format("<h2>hello,%s</h2>", name);
}

//resultType=json表示对返回的对象以json格式的字符串写进响应流
@ActionMethod(resultType="json")
public List test(@Param("a")//表示从request取参数名为a的参数进行转型,转型使用commons工具实现,如果没有定义@param,则取参数的参数名则直接使用方法定义的形参名,对于Request,Response,actionForm,actionMapping属于默认处理类型,不需要定义@Param
List<String> aa,@Param("b")List<Integer> bb){
List all = Lists.newList();
all.addAll(aa);
all.addAll(bb);
return all;
}

@ActionMethod(resultType="string")
public Hello go(@Param("..")Hello hello) {
return hello;
}

@ActionMethod()
//文件上传直接使用commons的FileItem,Struts的文件上传不支持对同参数名的多个文件上传
public String upload(List<FileItem> test,ExecuteContext ctx) {
ctx.storeObject("files",Lists.toArray(test), Scope.REQUEST);
return "/upload";
}

}


主要就是继承RequestProcessor对创建Action、ActionMapping和ActionExecute这三个步骤进行改造,至于怎么改造看提交的代码啦!

这篇关于再改struts1.2.*,让struts1再焕发表春,支持Annotation和POJO风格的Action的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291380

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Unable to instantiate Action, goodsTypeAction, defined for 'goodsType_findAdvanced' in namespace '/

报错: Unable to instantiate Action, goodsTypeAction,  defined for 'goodsType_findAdvanced' in namespace '/'goodsTypeAction......... Caused by: java.lang.ClassNotFoundException: goodsTypeAction.......

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬