Struts2主要由3个部分组成:FilterDispatcher、业务控制器和用户实现的业务逻辑组件。 在这3个部分里Strust2提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。
核心控制器:FilterDispatcher
FilterDispatcher是Struts2框架的核心控制器,它作为一个Filter运行在Web容器中,用于拦截用户的所有请求。当用户的请求到达时,该Filter会过滤用户的请求,如果请求以.action结尾,则将其交给Struts2框架处理。
Struts2获得了action请求后,将根据action的请求的前面部分来决定调用哪个业务逻辑组件。比如获得了login.action的请求后,将此请求交给login的action来处理。
Struts2应用中的action都被定义在struts.xml中,在此配置文件中定义了action的name属性和class属性,其中name属性决定了该Action处理哪个用户的请求,class属性表示该action的实现类。
Struts2用于处理用户请求的action实例,并不是用户实现的业务控制器,而是Action代理。因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户的请求。而Struts2提供了一系列的拦截器,这些拦截器负责讲HttpServletRequest中的参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求