版本一
其实就是一个玩意儿! 只不过action是那些MVC框架的控制层的叫法. 当然,这个回答是笼统了点,但是其实就那回事. 那些MVC框架用Servlet(struts1)或者Filter(struts2)来封装了HttpServletRequest和HttpServletResponse对象,在自己的Action类中实现控制层.从对象本身来说,确实不是一个东西,但是从设计分层(架构)上看,这对于使用框架的开发者来说,这难道不是一样的道理?就是控制层! action是业务层?那要看你这个工程项目的规模了.要是小网站,那可以把service都写在action里面.但从这个角度来说,是把service层合并到控制层去了.
版本二
struts的action 有一个servlet 的成员,而且struts的action 的方法
execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
会传入一个HttpServletRequest的参数
详情参见struts的官方文档:http://struts.apache.org/1.x/apidocs/index.html
无论是在struts1还是在struts2
action 本身只是一个普通的java bean
在struts2中,action 与servlet 就没有关系了,除非你实现servletaware接口,这样的话,struts2会给你注入一个servlet
说的应该是struts2中的action ,关系肯定是有的,action 运行在web容器中,不管是struts1还是struts2,action跟容器的交互,实质上都是通过request 和response ,只不过,struts1把他们暴露出来了,而struts2则由框架来维护了,这是struts2的分层思想的一个体现。