1.action类的编写
在struts1中,action类一般需要继承基类org.apache.struts.action.Action
在struts2中,action类可以实现一个Action接口,也可以实现其他接口,也可继承ActionSupport类,甚至不需要实现任何接口,只需要编写execute函数就可以
2.action的运行模式
在struts1中,Action是单态的,一个action实例对象来处理多个请求,为每个请求分配一个线程,在该线程中运行execute函数。因此,在开发时需要特别小心,Action资源必须是线程安全或者同步的
在struts2中,Action为每个请求分配一个实例,就是分配一个小进程,虽然不会产生线程安全问题,但是容易在用户请求量大时照成服务器负载高
3.对Web容器的依赖
在struts1中,Action的execute函数内,传入了Servlet API:HttpServletRequest 和HttpServletResponse,使得测试必须依赖web容器
在struts2中,可以不传入HttpServletRequest 和HttpServletResponse,但是也可以访问它们,因此Action不依赖于容器,允许Action脱离容器单独测试
4.对表单数据的封装
在struts1中,使用ActionForm来封装表单数据,所有的ActionForm必须继承org.apache.struts.action.ActionForm,有可能造成ActionForm类VO类重复编码
在struts2中,直接在Action类中编写表单数据相对应的属性,可以不编写ActionForm,而这些属性又可以通过Web页面上的标签进行访问