`
sam1982
  • 浏览: 10020 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
    最近有个项目改造,经过一番讨论后决定使用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这三个步骤进行改造,至于怎么改造看提交的代码啦!
分享到:
评论
1 楼 sam1982 2010-07-19  
为什么发了贴在struts版块找不到
~

相关推荐

    struts2 PPT教程

    3. **配置方式多样化**:支持Annotation和XML配置,让开发者可以选择更适合自己的配置方式。 4. **与第三方框架的集成**:Struts2可以与Spring、SiteMesh和Tiles等框架无缝集成,增强了应用程序的功能和可扩展性。 ...

    北大青鸟struts2.0培训基础教程

    3. **配置方式多样**:Struts2支持XML和Annotation两种配置方式,使得配置更加灵活。 4. **Action与Servlet API解耦**:通过使用拦截器(Interceptor),Action的业务逻辑与Servlet API分离,使得代码更易于测试和...

    struts学习资料

    4. **ActionForm**:在早期的Struts版本中,ActionForm用于封装用户的请求参数,但现在已经被ModelDriven和Annotation-based注解所替代。 5. **配置文件**:Struts配置文件(struts-config.xml或struts2的struts....

    ssh框架搭建

    1. **添加Struts支持**:右键点击项目,在弹出的菜单中选择`MyEclipse -&gt; Add Struts Capabilities`或直接通过菜单栏中的`MyEclipse -&gt; Project Capabilities -&gt; Add Struts Capabilities`进行操作。 2. **选择...

    Struts2自定义校验框架

    它支持两种验证方式:基于注解的验证(Annotation-based Validation)和基于XML的验证(XML-based Validation)。自定义校验主要是通过编写自定义校验器或扩展内置校验器来实现。 2. **自定义校验器实现** 自定义...

    Struts2.1.8培训资料(推荐)

    Struts2是一个基于Action的Model-View-Controller(MVC)框架,它源于Apache Struts 1.x系列,并与WebWork框架合并,提供了更强大的特性和功能。 Struts2框架的核心特性包括: 1. **基于Action的MVC设计模式**:每...

    struts2工作流程

    Struts2支持多种类型的Action实现,包括简单的POJO对象,而不仅仅是继承特定基类的Action。Action的主要职责是处理业务逻辑,并返回一个结果字符串来决定下一步的操作,比如转向某个JSP页面或使用FreeMarker模板等。...

    springmvc+ssm

    - **RESTful支持**:SpringMVC支持RESTful风格的URL,例如使用`@RequestMapping("/items/{id}")`来映射`GET /items/1`这样的请求。 #### 七、RESTful风格的URL RESTful风格强调资源的URI和HTTP方法的正确使用,...

    刘伟_Hibernate与Struts2和Spring组合开发

    5. **使用MyEclipse自动生成实体类和映射文件**:利用MyEclipse的工具快速生成POJO类和对应的HBM映射文件,简化开发工作量。 6. **定义DAO接口及其实现**: - 定义DAO接口(如`CatalogDao`),声明基本的数据访问...

    springmvc技术文档。专业使用

    相比之下,Struts2更加依赖于Action类。 - **配置复杂度**:SpringMVC通过注解等方式简化了配置过程,而Struts2则需要更多的XML配置文件。 - **性能**:SpringMVC通常被认为具有更好的性能,特别是在高并发场景下。 ...

    struts2精通

    ### Struts2精通知识点解析 #### 一、Struts2简介及发展历程 - **Struts2** 是一种基于...无论是在传统配置方式还是零配置模式下,Struts2都为开发者提供了丰富的工具和支持,帮助他们轻松应对各种复杂的业务需求。

    SSH全注解环境搭建

    1. **生成POJO类**: - 定义实体类,并使用注解(如@Entity、@Id等)来映射数据库表。 2. **编写DAO层**: - 创建DAO接口,定义基本的CRUD操作。 - 实现DAO接口,使用@Repository注解标注。 3. **编写Biz层**:...

    北大青鸟struts2教程

    Struts2拥有一个活跃的开发者社区,支持Annotation和XML配置,提供与Spring、SiteMesh和Tiles的集成,以及与OGNL(Object-Graph Navigation Language)表达式语言的融合。此外,它还包含基于主题的标签库和Ajax支持...

    收集的struts+spring+hibernate面试题.doc

    - **Action**:控制器类,负责处理用户请求。 - **ActionForm**:表单对象,用于封装用户提交的表单数据。 - **DynaValidatorForm**:动态表单对象,提供动态验证功能。 - **ActionMapping**:配置文件中 action ...

    深入浅出struts2

    │深入浅出STRUTS 2 Struts Ti却发现了二者在技术与开发人员这两个层面上的共同之处,不久之后,两个项目就在WebWork的技术基础上进行了合并2。 当我们说起WebWork的时候,我们实际上说的是两个项目——XWork和...

    spring3.2+strut2+hibernate4

    -- 此处hibernate 的映射 采用的是.xml 配置同则应设置具体配置文件名(*.hbm.xml)&lt;/value&gt;--&gt; &lt;/list&gt; &lt;/property&gt; &lt;!-- 事务配置管理 --&gt; &lt;bean id="transactionManager" class="org.springframework...

    EasyJWeb开发者指南

    - **Module**:用于组织相关的Action和资源,便于管理和维护。 - **AbstractCmdAction与AbstractPageCmdAction**:提供了常用Action的基类,方便继承和扩展。 #### 三、配置文件 - **web.xml**:部署描述符文件,...

    通俗易懂的SSH实例 实现增删改查功能

    这是为了让Spring管理Action类,并通过Spring的AOP(面向切面编程)特性来增强Action的功能。 ##### 8. 配置Struts - 在Struts的配置文件`struts.xml`中,添加相应的Action配置。这里的类名应指向Spring中定义的...

Global site tag (gtag.js) - Google Analytics