首先debug确认loginServer是空,是它造成的空指针!
然后确认以下:1,bean id=""配置名和action里声明的一致;
2,保证bean已经注入,比如new,或set;
3,看是不是缺少包,比如struts ,spring,plugin包!

解决方案 »

  1.   

    LoginAction.execute(LoginAction.java:55) 
    是什么哪
      

  2.   

    <bean name="/login" class="com.operator.struts.action.LoginAction">
        <property name="loginservice">
            <ref bean="loginservice"/>
        </property>
    </bean>这个action为什么不直接引入logindaologinservice是干什么的?
      

  3.   


    1:loginServer确定为空:
       loginserver的值:null2:已经保证bean中的每一个id在对应的类中都有get、set方法
       <bean id="logindao" class="com.operator.hib.dao.impl.LoginImpl">
       <bean id="loginservice" class="com.operator.struts.service.LoginService">
       <bean name="/login" class="com.operator.struts.action.LoginAction">
      保证每一个id在类中的名称都无误。eclipse已经没有红叉,自己也检查过。
      至于M_song说的new?请教一下您说的new是指?3:包没有少,我的目录结构为:因为第一次错误以后我不知道是否少包了,所以在myeclipse增加框架时,我选择了copy所有包,另外诸如pool、dhcp这些包我都加了...at com.operator.struts.action.LoginAction.execute(LoginAction.java:55) 
    是执行到55行时:
      int backint = loginservice.check_name_pwd(checkpwd);
      由于loginservice为空,抛错。
    LoginAction:        private LoginService loginservice;

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {

    ....
                    int backint = loginservice.check_name_pwd(checkpwd);
                    ....
            }
            
            public LoginService getLoginservice() {
    return loginservice;
    } public void setLoginservice(LoginService loginservice) {
    this.loginservice = loginservice;
    }LoginServer:
            private LoginImpl logindao;

    public int check_name_pwd(CheckPwd checkpwd){
                    ....
                    List list = null;
    list = logindao.findList(sql);
                    ....
            }        public LoginImpl getLogindao() {
    return logindao;
    } public void setLogindao(LoginImpl logindao) {
    this.logindao = logindao;
    }
    LoginImpl:   public class LoginImpl extends HibernateDaoSupport implements ILoginDao {

    public List findList(String sql) {
    List list = null;
                    try{
       System.out.println("到达");
       list = this.getHibernateTemplate().find(sql);
    }catch(Exception es){
       es.printStackTrace();
       System.out.println("错误");
    }
    return list;
             }
    struts-config.xml:<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
    <set-property property="contextConfigLocation"
    value="/WEB-INF/classes/applicationContext.xml;/WEB-INF/classes/spring_action.xml" />
    </plug-in>
    错误以后我以为是web.xml没有配置spring,于是加上:  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </context-param>
    <listener>        
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    但遗憾的是还是错误....
      

  4.   

    完整异常:
    2008-5-27 18:33:44 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet action threw exception
    java.lang.NullPointerException
    at com.operator.struts.action.LoginAction.execute(LoginAction.java:56)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Thread.java:595)
    谢谢大家关注此贴啊,这个问题整了我1天了,欲哭无泪...回首读书方恨少啊...
      

  5.   

    com.operator.struts.action.LoginAction.execute(LoginAction.java:56) 
    你这个Action的56行出现了空指针异常,检查一下是否使用了没有初始化的变量什么的.
      

  6.   


    是的,我估计是LoginAction中56行
    int backint = loginservice.check_name_pwd(checkpwd);
    中由于loginservice中spring正确注入loginservice引起的,但为什么没有注入呢?我真是百思不得其解了
      

  7.   

    建议使用log4j输出信息,另你的tomcat是不是5.0的?
      

  8.   

    环境:
       tomcat6.0 
       MyEclipse 6.1 Blue Edition
       windowServer2003 sp2
      

  9.   

    应该是struts和spring集成的时候的问题,打下日志阿,看看spring还有struts的日志。我集成这两个框架的时候都是用<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>  
      

  10.   

    1,楼主是不是用的struts2.0?如果是,则需要struts2.0-spring-plugin.jar包;
    2,关于spring和struts的结合,既然你在web.xml里声明了spring ,context,那就不要在struts-config.xml里声明!
      

  11.   

    不是还有root cause那部分信息吗?
      

  12.   

    把WEB-INF/classes/applicationContext.xml也加进去试试,或者很有可能是spring配置文件路径的问题,你看看控制台信息是否读去了这些文件
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/applicationContext.xml,WEB-INF/classes/applicationContext.xml</param-value>
    </context-param>
    <listener>        
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
      

  13.   

    .LoginAction.execute(LoginAction.java:56) 
     S根据这句话我感觉你的容器有问题目你把SPRING容器得引入一下吧,同时把他生成的文件客户化一下,看看...
      

  14.   

    最后我把工程删了重建,莫名其妙就好了....
    然后拿正常的工程和错误的逐步对比,原来,错误是我在struts-config.xml里,没注意把每个action的type属性改为:org.springframework.web.struts.DelegatingActionProxy还是讲type设为action类路径,这样一来spring形同虚设,创建action的工作还是由struts完成,并没有交给spring创建并注入相关属性,从而导致action的loginserver业务类为空而抛错总结:细心、谨慎永远是明智的...
      

  15.   

    小弟不是太懂哦。。什么struts-config.xml里,没注意把每个action的type属性改为:org.springframework.web.struts.DelegatingActionProxy在struts-config.xml里action我没找到type这个标签或属性啊。。