本帖最后由 sulei198611 于 2011-11-17 22:31:09 编辑

解决方案 »

  1.   

    提交表单后报的错误type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
    root cause java.lang.NullPointerException
    net.personmanager.checkUser(personmanager.java:23)
    net.loginaction.execute(loginaction.java:28)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
    com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
    com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
    com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
      

  2.   

    private personmanager personManage=new personmanager();
    使用spring 不需要new  一定要记住
       很明显personManage是空的
     struts2的loginaction 请求需要被spring 拦截 就是所谓的aop,spring才能控制反转ioc ,最后把bean注入di 到你的action中, 
     你看下你的spring 的配置中有对action的请求做切入点嘛
    <aop:config>
    <aop:pointcut id="defaultServiceOperation"
    expression="execution(* com.*.bussiness.*Service.*(..))" 
    />
    <aop:advisor pointcut-ref="defaultServiceOperation"
    advice-ref="txAdvice" />
    </aop:config>
    我都是使用这中aop 
      不过也可以在bean aop 
      可也没看到你的personmanager bean 中有设置
      

  3.   

    你用getHibernateTemplate().execute(new HibernateCallback() {
    public Object doInHibernate(Session session) throws SQLException {
    session.createQuery
    }
    });
    试试行不行。。
      

  4.   

    <bean id="loginaction" class="net.loginaction" abstract="false"
      lazy-init="default" autowire="default" dependency-check="default">
      <property name="personmanager">
      <ref bean="personmanager" />
      </property>
    </bean>
    不知道这个是不是你的aop ,我没用过这种方式
       如果确定是,那么确定action 中 personmanager 做了 set get 的方法
      同时建议personmanager 这个bean 的名字改为 personManager ,确保与action中的personManager 名字相同
      

  5.   

    既然用了spring就不要new了.....
      

  6.   

    断点跟踪了下发现不new的话 personManage是个null
      

  7.   

      
      
      那么确定action 中对private personmanage personManage 做了 set get 的方法嘛?
      

  8.   

    做了得
     public void setPersonmanager(personmanager personManage)
    {
       this.personManage=personManage;
    }
      public personmanager getPersonmanager()
    {
       return personManage;
    }
      

  9.   

    你文件中有HibernateSessionFactory.java没?有的话删掉,SSH框架不需要,这个文件是eclipse在自动生成的
      

  10.   

    private personmanager personManage=new personmanager();
    public void setPersonmanager(personmanager personManage) {
      this.personManage = personManage;
    }
    你的set方法名明显跟字段名不匹配,不是用工具生成的吧,如果set方法跟字段名不匹配的话会找不到的
    应该改为setPersonManage
      

  11.   

    loginaction 文件中怎么没有get,set方法?
      

  12.   


    public class loginaction extends ActionSupport {private String userName;
    private personmanager personManage=new personmanager();
    public String getUserName() {
       return userName;
    }
    public void setUserName(String userName) {
       this.userName = userName;
    }
     public void setPersonmanager(personmanager personManage)
    {
       this.personManage=personManage;
    }
      public personmanager getPersonmanager()
    {
       return personManage;
    }    
    public String execute(){
       String page = "success";
       boolean flag = false;
       flag = personManage.checkUser(userName);
       if(flag){
        page = "success";
       }
       return page;
    }
    }
      

  13.   

    你看你jia包对不对,看看环境
    没问的话private personmanager personManage=new personmanager();
    这里下能不能用个中间参数调整一下,你可以先声明一个空变量,在函数里边再new
      

  14.   

    private personmanager personManage=new personmanager();
    不要new,直接定义就可以了:private personmanager personManage;
    配置文件里注入personManage到action里,名字对应好!
    <bean id="loginaction" class="net.loginaction" abstract="false"
      lazy-init="default" autowire="default" dependency-check="default">
      <property name="personmanager">
      <ref bean="personmanager" />
      </property>
    </bean>
    这里name="personmanager"名字不对啊!
    改成personManage