让Spring接管structs(action控件)
如果action没有交给spring管理时,我们通过下面语句获取spring容器实例
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext());
把action交给spring管理后,我们可以使用依赖注入在action中注入业务层的bean。确保action的path属性值与bean的名称相同。
<action path="/login" ...>
</action>
在struts配置文件structs-config.xml中添加进spring的代理请求控制器DelegatingRequestProcessor
<controller>
<set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/>
</controller>
该请求 控制器会先根据action的path属性值到spring容器中寻找跟该属性值同名的bean。如果寻找到即使用该bean处理用户请求
如果不配置控制器,原始的情形下浏览器请求的流程
首先是浏览器中有个login.do
然后交给web服务器
web服务器去找ActionService,这个相当于总控
ActionService中根据structs-config.xml文件中配置的属性找到处理Action的类,loginAction.java,然后处理
如果配置了请求控制器,那么Spring接管Action的配置
在Spring的配置文件applicationContext.xml中配置Action路径如下:
<bean name="/login" class="com.hsp.web.action.LoginAction"/>