做一个在线考试系统,采用Struts+Hibernate+Spring,运行时log4j出现这样的问题:
DelegatingActionProxy with mapping path '/adminLogin' and module prefix '' delegating to Spring bean with name [/adminLogin]
No action instance for path /adminLogin could be created
java.lang.NullPointerException
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1270)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201)
at org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.java:117)
at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143)
at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:280)
at org.springframework.web.struts.DelegatingRequestProcessor.processActionCreate(DelegatingRequestProcessor.java:150)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:218)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at com.exam.struts.action.base.MyActionServlet.process(MyActionServlet.java:15)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
搞了几天,自己估计是配置文件的问题,但不知问题出在哪?请教高手,不胜感激!
附上配置文件:

解决方案 »

  1.   

    struts-config.xml:
    <struts-config>
      <data-sources />
      <form-beans >
        <form-bean name="loginAdminForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="password" type="java.lang.String" />
          <form-property name="name" type="java.lang.String" />
        </form-bean>
        
        <form-bean name="loginexamForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="stuname" type="java.lang.String"/>
          <form-property name="stunumber" type="java.lang.String"/>
        </form-bean>
        
        <form-bean name="addStudentForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="id" type="java.lang.String"/>
          <form-property name="realname" type="java.lang.String"/>
          <form-property name="stuName" type="java.lang.String"/>
          <form-property name="className" type="java.lang.String"/>
          <form-property name="address" type="java.lang.String"/>
          <form-property name="phone" type="java.lang.String"/>
          <form-property name="email" type="java.lang.String"/>
          <form-property name="humanId" type="java.lang.String"/>
        </form-bean>
        
        <form-bean name="addQuestionForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="title" type="java.lang.String"/>
          <form-property name="examType" type="java.lang.String"/>
          <form-property name="score" type="java.lang.String"/>
          <form-property name="level" type="java.lang.String"/>
          <form-property name="note" type="java.lang.String"/>
          <form-property name="choices" type="java.lang.String"/>
          <form-property name="standardAnswer" type="java.lang.String"/>
        </form-bean>
        
        <form-bean name="addTestForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="testName" type="java.lang.String"/>
          <form-property name="testTime" type="java.lang.String"/>
        </form-bean>
        
        <form-bean name="studentLoginForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="stuNumber" type="java.lang.String" />
          <form-property name="stuName" type="java.lang.String" />
        </form-bean>
        
        <form-bean name="replyFormForm" type="org.apache.struts.validator.DynaValidatorForm">
          <form-property name="idr" type="java.lang.String" />
          <form-property name="options" type="java.lang.String" />
        </form-bean>
      </form-beans>  <global-exceptions>
         <exception key="examException" 
                    type="com.exam.exception.ExamException"
                    scope="request"
                    path="/WEB-INF/jsp/error.jsp">
         </exception>
         <exception key="otherException" 
                    type="java.lang.Exception"
                    scope="request"
                    path="/WEB-INF/jsp/error.jsp">
         </exception>
      </global-exceptions>
      
      <global-forwards>
         <forward name="admin" path="/WEB-INF/jsp/login.jsp"></forward>
         <forward name="loginExam" path="/WEB-INF/jsp/loginExam.jsp"></forward>
      </global-forwards>
      
      <action-mappings>
        <!-- 进入后台管理的登录页面 -->
        <action path="/admin" forward="/WEB-INF/jsp/login.jsp"></action>
        <!-- 进入添加学生的表单页 -->
        <action path="/addStudent" forward="/WEB-INF/jsp/addStudent.jsp"></action>
        <!-- 进入添加考试类型的表单页 -->
        <action path="/addTest" forward="/WEB-INF/jsp/addTest.jsp"></action>
        <!-- 进入学生登录的表单页 -->
        <action path="/login" forward="/WEB-INF/jsp/loginExam.jsp"></action>
        <action path="/loginExam" forward="/WEB-INF/jsp/loginExam.jsp"></action>
           
        <!-- 处理后台管理员登录 -->
        <action
          path="/adminLogin"
          name="loginAdminForm"
          validate="false"
          scope="request">
          <forward name="success" path="/WEB-INF/jsp/addStudent.jsp"></forward>
          <forward name="failure" path="/WEB-INF/jsp/login.jsp"></forward>
        </action>
        
        <!-- 处理添加学生 -->
        <action
          validate="false"
          name="addStudentForm"
          path="/processAddStudent"
          scope="request">
          <forward name="success" path="/listStudent.do"></forward>
        </action>
        
        <!-- 处理列出学生 -->
        <action
          validate="false"
          path="/listStudent"
          scope="request">
          <forward name="success" path="/WEB-INF/jsp/listStudent.jsp"></forward>
        </action>
        
        <!-- 处理删除学生 -->
        <action 
          path="/delStudent"
          scope="request"
          validate="false">
          <forward name="success" path="/listStudent.do"></forward>
        </action>
        
        <!-- 处理添加考试类型 -->
        <action
           validate="false"
           name="addTestForm"
           path="/processAddTest"
           scope="request">
           <forward name="success" path="/addQuestion.do"></forward>
        </action>
        
        <!-- 进入添加试题的表单页 -->
        <action
           path="/addQuestion"
           scope="request"
           validate="false">
           <forward name="success" path="/WEB-INF/jsp/addQuestion.jsp"></forward>
        </action>
        
        <!-- 列出所有试题 -->
        <action
           validate="false"
           scope="request"
           path="/listQuestion">
           <forward name="success" path="/WEB-INF/jsp/listQuestion.jsp"></forward>
        </action>
        
        <!-- 处理删除试题 -->
        <action 
           validate="false"
           scope="request"
           path="/delQuestion">
           <forward name="success" path="/listQuestion.do"></forward>
        </action>
        
        <!-- 处理添加试题 -->
        <action 
           validate="false"
           scope="request"
           name="addQuestionForm"
           path="/processAddQuestion">
           <forward name="success" path="/listQuestion.do"></forward>
        </action>
        
        <!-- 处理考生登录 -->
        <action
          validate="false"
          name="studentLoginForm"
          path="/processLogin"
          scope="request">
          <forward name="success" path="/prepare.do"></forward>
          <forward name="failure" path="/WEB-INF/jsp/loginExam.jsp"></forward>
         </action>
      
         <!-- 处理考生预备 -->
         <action 
           scope="request"
           path="/prepare">
           <forward name="success" path="/WEB-INF/jsp/prepare.jsp"></forward>
         </action>
         
         <!-- 处理考生开始考试 -->
         <action
           scope="request"
           path="/begin">
           <forward name="success" path="/WEB-INF/jsp/examMain.jsp"></forward>
         </action>
         
         <!-- 处理考生答题 -->
         <action 
           validate="false"
           scope="request"
           name="replyForm"
           path="/reply">
           <forward name="success" path="/WEB-INF/jsp/examMain.jsp"></forward>
           <forward name="finish" path="/finish.do"></forward>
         </action>
         
         <!-- 统计考试结果 -->
         <action 
           scope="request"
           path="/finish">
           <forward name="success" path="/WEB-INF/jsp/show.jsp"></forward>
         </action>
      </action-mappings>  <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
      
      <message-resources  parameter="message"/>
      
      <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation"
              value="/WEB-INF/classes/actionContext.xml,/WEB-INF/classes/appContext.xml,/WEB-INF/classes/daoContext.xml" />
         <!--
    <set-property property="contextConfigLocation"
                  value="/WEB-INF/classes/applicationContext.xml" />-->
      </plug-in>  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
    <set-property property="stopOnFirstError" value="true" />
      </plug-in>
    </struts-config>
      

  2.   

    daoContext.xml文件:
    <bean name="daoTemplate" abstract="true">
         <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <!-- 配置考试系统管理员DAO,通过指定parent属性来继承daoTemplate -->
    <bean name="examUserDao" class="com.exam.impl.ExamUserDaoHibernate" parent="daoTemplate"></bean>
    <bean name="examTypeDao" class="com.exam.impl.ExamTypeDaoHibernate" parent="daoTemplate"></bean>
    <bean name="studentDao"  class="com.exam.impl.StudentDaoHibernate"  parent="daoTemplate"></bean>
    <bean name="questionDao" class="com.exam.impl.QuestionDaoHibernate" parent="daoTemplate"></bean>
        
    actionContext.xml文件
    <bean name="actionTemplate" abstract="true">
         <property name="examService" ref="examService"></property>
    </bean>

    <!-- 处理管理员登录 -->
    <bean name="/amdinLogin" class="com.exam.struts.action.AdminLoginAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理添加学生 -->
    <bean name="/processAddStudent" class="com.exam.struts.action.AddStudentAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理列出学生 -->
    <bean name="/listStudnet" class="com.exam.struts.action.ListStudentAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理删除学生 -->
    <bean name="/delStudent" class="com.exam.struts.action.DelStudentAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理添加考试类型 -->
    <bean name="/processAddTest" class="com.exam.struts.action.AddTestAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 进入添加试题的表单页 -->
    <bean name="/addQuestion" class="com.exam.struts.action.BeforeAddQuestionAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理列出问题 -->
    <bean name="/listQuestion" class="com.exam.struts.action.ListQuestionAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理删除试题 -->
    <bean name="/delQuestion" class="com.exam.struts.action.DelQuestionAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理添加试题 -->
    <bean name="/processAddQuestion" class="com.exam.struts.action.AddQuestionAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 处理学生登录 -->
    <bean name="/processLogin" class="com.exam.struts.action.StudentLoginAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 学生准备考试 -->
    <bean name="/prepare" class="com.exam.struts.action.BeginAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 学生答题 -->
    <bean name="/reply" class="com.exam.struts.action.ReplyAction" scope="prototype" parent="actionTemplate"></bean>
    <!-- 考试结束 -->
    <bean name="/finish" class="com.exam.struts.action.FinishAction" scope="prototype" parent="actionTemplate"></bean>

    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
         <property name="beanNames">
               <list>
                    <value>/processAddStudent</value>
                    <value>/listStudent</value>
                    <value>/delStudent</value>
                    <value>/processAddTestt</value>
                    <value>/listQuestion</value>
                    <value>/delQuestion</value>
                    <value>/addQuestion</value>
                    <value>/processAddQuestion</value><!-- 不同原 -->
               </list>
         </property>
         <property name="interceptorNames">
               <list>
                    <value>authorityInterceptor</value>
               </list>
         </property>
    </bean>
    <bean id="authorityInterceptor" class="com.exam.authority.AuthorityInterceptor"/>
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
         <property name="beanNames">
                <list>
                     <value>/reply</value>
                     <value>/finish</value>
                </list>
         </property>
         <property name="interceptorNames">
                <list>
                     <value>examInterceptor</value>
                </list>
         </property>
    </bean>
    <bean id="examInterceptor" class="com.exam.authority.ExamInterceptor"></bean>
      

  3.   

    appContext.xml文件
    <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
        
        <!-- 定义数据源Bean,使用C3P0数据源实现 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/onlinexam"></property>
    <property name="user" value="root"></property>
    <property name="password" value="329435123"></property>
    <property name="maxPoolSize" value="40"></property>
    <property name="minPoolSize" value="1"></property>
    <property name="initialPoolSize" value="1"></property>
    <property name="maxIdleTime" value="20"></property>
    </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    <prop key="show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.jdbc.batch_size">20</prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/exam/model/ExamUser.hbm.xml</value>
    <value>com/exam/model/ExamType.hbm.xml</value>
    <value>com/exam/model/Question.hbm.xml</value>
    <value>com/exam/model/Student.hbm.xml</value>
    </list>
    </property>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
         <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
         <!-- 事务拦截器bean需要依赖注入一个事务管理器 -->
         <property name="transactionManager" ref="transactionManager"></property>
         <property name="transactionAttributes">
              <!-- 下面定义事务传播属性 -->
              <props>
                    <prop key="insert*">PROPAGATION_REQUIRED</prop>
                    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
                    <prop key="*">PROPAGATION_REQUIRED</prop>
              </props>           
         </property>
    </bean>

    <!-- 定义业务逻辑处理组件 -->
    <bean id="examService" class="com.exam.service.impl.ExamServiceImpl">
         <property name="examUserDao" ref="examUserDao"></property>
         <property name="examTypeDao" ref="examTypeDao"></property>
         <property name="studentDao" ref="studentDao"></property>
         <property name="questionDao" ref="questionDao"></property>
    </bean>    <!-- 定义BeanNameAutoProxyCreator -->
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
         <!-- 指定对满足哪些Bean name的Bean自动生成业务代理 -->
         <property name="beanNames">
               <!-- 下面是所有需要自动创建事务代理的Bean-->
                   <list>
                         <value>examService</value>
                   </list>
                   <!-- 此处可增加其他需要自动创建事务代理的Bean-->
         </property>
         <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
         <property name="interceptorNames">
               <list>
                     <value>transactionInterceptor</value>
                     <!-- 此处可增加其他新的Interceptor -->
               </list>
         </property>
    </bean>
    </beans>
      

  4.   

    <action 
          scope="request" 
          path="/prepare"> 
          <forward name="success" path="/WEB-INF/jsp/prepare.jsp"> </forward> 
        </action> 你ACTION里所有的spring 委托代理接口呢>
      

  5.   

    错误已经说得很明白了:'/adminLogin' and module prefix '' delegating to Spring bean with name [/adminLogin] 
    No action instance for path /adminLogin could be created struts 的/adminLogin 和  Spring 的/adminLogin,
    没有action /adminLogin被创建 ,你看看struts的配置:
    <!-- 处理后台管理员登录 --> 
        <action 
          path="/adminLogin" 
          name="loginAdminForm" 
          validate="false" 
          scope="request"> 
          <forward name="success" path="/WEB-INF/jsp/addStudent.jsp"> </forward> 
          <forward name="failure" path="/WEB-INF/jsp/login.jsp"> </forward> 
        </action> 
        
    里面的class属性呢?这当然不行了,你class都没有,怎么找得到啊
      

  6.   

    <!-- 处理后台管理员登录 --> 
        <action 
          path="/adminLogin" *****************************
          <!--加上:-->
           class="org.spring....."
    *****************************    
          
          name="loginAdminForm" 
          validate="false" 
          scope="request"> 
          <forward name="success" path="/WEB-INF/jsp/addStudent.jsp"> </forward> 
          <forward name="failure" path="/WEB-INF/jsp/login.jsp"> </forward> 
        </action> 
      

  7.   

    DelegatingActionProxy with mapping path '/adminLogin' and module prefix '' delegating to Spring bean with name [/adminLogin] 
    No action instance for path /adminLogin could be created 
    java.lang.NullPointerException 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 兄弟,上面错误提示中说的很清楚了<action 
          path="/adminLogin" 
          name="loginAdminForm" 
          validate="false" 
          scope="request"> 
          <forward name="success" path="/WEB-INF/jsp/addStudent.jsp"> </forward> 
          <forward name="failure" path="/WEB-INF/jsp/login.jsp"> </forward> 
        </action> 你的class属性没指定,应该指明他的具体的action类的路径这样就可以了
      

  8.   

    我把action放在spring中管理了,在daoContext.xml文件中有以下定义了:
    <!-- 处理管理员登录 --> 
    <bean name="/amdinLogin" class="com.exam.struts.action.AdminLoginAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理添加学生 --> 
    <bean name="/processAddStudent" class="com.exam.struts.action.AddStudentAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理列出学生 --> 
    <bean name="/listStudnet" class="com.exam.struts.action.ListStudentAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理删除学生 --> 
    <bean name="/delStudent" class="com.exam.struts.action.DelStudentAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理添加考试类型 --> 
    <bean name="/processAddTest" class="com.exam.struts.action.AddTestAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 进入添加试题的表单页 --> 
    <bean name="/addQuestion" class="com.exam.struts.action.BeforeAddQuestionAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理列出问题 --> 
    <bean name="/listQuestion" class="com.exam.struts.action.ListQuestionAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理删除试题 --> 
    <bean name="/delQuestion" class="com.exam.struts.action.DelQuestionAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理添加试题 --> 
    <bean name="/processAddQuestion" class="com.exam.struts.action.AddQuestionAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 处理学生登录 --> 
    <bean name="/processLogin" class="com.exam.struts.action.StudentLoginAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 学生准备考试 --> 
    <bean name="/prepare" class="com.exam.struts.action.BeginAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 学生答题 --> 
    <bean name="/reply" class="com.exam.struts.action.ReplyAction" scope="prototype" parent="actionTemplate"> </bean> 
    <!-- 考试结束 --> 
    <bean name="/finish" class="com.exam.struts.action.FinishAction" scope="prototype" parent="actionTemplate"> </bean> 
    难道这样写是不行的?
      

  9.   

    你在spring配置文件里写了
    但在struts里没告诉他ACTION 的 TYPE
    一般来说是
    type="org.springframework.web.struts.DelegatingActionProxy" 
    这样SPRING容器启动时才会帮你创建这个ACTION
      

  10.   

    楼上的,struts加上type="org.springframework.web.struts.DelegatingActionProxy" 出现以下的错误:DelegatingActionProxy with mapping path '/adminLogin' and module prefix '' delegating to Spring bean with name [/adminLogin]
    No bean named '/adminLogin' found in org.springframework.beans.factory.support.DefaultListableBeanFactory@1cc5d23: defining beans [actionTemplate,/amdinLogin,/processAddStudent,/listStudnet,/delStudent,/processAddTest,/addQuestion,/listQuestion,/delQuestion,/processAddQuestion,/processLogin,/prepare,/reply,/finish,org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator,authorityInterceptor,org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator#1,examInterceptor,dataSource,sessionFactory,transactionManager,transactionInterceptor,examService,org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator#2,daoTemplate,examUserDao,examTypeDao,studentDao,questionDao]; root of factory hierarchy
      

  11.   

    问题解决,我来说下解决过程:当出现这样的错误时,我就以为是spring配置的错误,于是在找,自己又把spring文档又看一遍,后来在一高手指点下:
    我竟然在
    <!-- 处理管理员登录 --> 
    <bean name="/amdinLogin" class="com.exam.struts.action.AdminLoginAction" scope="prototype" parent="actionTemplate"> </bean> 
    这里 adminLogin写成了amdinLogin,真的很粗心啊,
    真的很晕...这样都没有发现!真想撞墙死.....
    想想:一开始我想法都错了,因为开始时出现一个配置文件的错误,我即时修改,然后又想当然认为是配置文件的错误,狂看spring文档致浪费不少时间!谢谢各位帮助!