方志朋 2012-11-01
整合S2SH时做了个测试程序,总是报无法实例化Action的错误。郁闷。
测试部分代码是:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
StudentAction students = new StudentAction();students.leader();
运行时总是显示Action不能实例化,开始很郁闷。看配置什么的都没问题啊。最后发现用
ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext.xml");
StudentBeanstudents=(StudentBean)ctx.getBean("studentBean");
students.findLeader();
就没有问题,郁闷中。。后来发现应该是这样的。
Struts.xml中应该是这样:
<actionname="loginAction"class="loginAction">//此处的actionclass属性应该是applicationContext中spring实例化该action的beanid属性值。这样才是spring实例化的。
<resultname="leader">/Class_intro.jsp</result>
<resultname="cards">/Class_member.jsp</result>
</action>
applicationContext.xml中:
<beanid="loginAction"
class="com.struts.action.StudentAction"
scope="prototype">
<propertyname="studentBean"ref="studentBean"/>
</bean>struts1.x
<action name="treeForm" path="/treeAction" scope="request"
parameter="actions"
type="org.springframework.web.struts.DelegatingActionProxy">
<forwardname="select"
path="/platform/common/treeSelect.jsp"/>
<forwardname="defeat"path="/common/error.jsp"/>
</action>applicationContext.xml中:
<beanid="treeAction"
class="com.struts.action.treeAction"
scope="prototype">
<propertyname="studentBean"ref="studentBean"/>
</bean>
是一道经常出现在前端面试时的问题。如果只是简单的了解new关键字是实例化构造函数获取对象,是万万不能够的。更深入的层级发生了什么呢?同时面试官想从这道题里面考察什么呢?下面胡哥为各位小伙伴一一来解密。