web.xml中的配置<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
 <filter>
  <filter-name>struts2</filter-name> 
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
  </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name> 
  <url-pattern>/*</url-pattern> 
  </filter-mapping>
<context-param>
  
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>
  
<servlet>
 <servlet-name>context</servlet-name>
 <servlet-class>org.springframework.context.ContextLoaderServlet</servlet-class>
 <load-on-startup>1</load-on-startup>
</servlet>  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
dao中的代码
[code=Java]
public String login(){
boolean flag=true;
String hql="from Abc";
System.out.println("+++++++++++++++==");
List list = getHibernateTemplate().find("from Abc");
if(list.isEmpty()){
System.out.println("-------------------");
}
//System.out.println(list.get(1));
return "aaa";
}
List list = getHibernateTemplate().find("from Abc");,这一句出现空指针异常,怎么解决呢?
[/code]

解决方案 »

  1.   

    Abc  这个pojo类 有问题  ,贴的代码太少了
      

  2.   


    description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
    com.demo.LoginDao.login(LoginDao.java:13)
    com.demo.LoginAction.execute(LoginAction.java:22)
    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:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.30 logs.
    这是错误信息,在jsp页面上显示的
      

  3.   

    看不出是哪的问题 Abc这个实体类 在配置文件里边配好了吗 我老感觉是配置出了问题 
      

  4.   

    这个是Abc的pojo
    public class Abc implements java.io.Serializable { // Fields private Integer username; private String password; // Constructors /** default constructor */
    public Abc() {
    } /** full constructor */
    public Abc(Integer username, String password) {
    this.username = username;
    this.password = password;
    } // Property accessors public Integer getUsername() {
    return this.username;
    } public void setUsername(Integer username) {
    this.username = username;
    } public String getPassword() {
    return this.password;
    } public void setPassword(String password) {
    this.password = password;
    }}
    这个是struts.xml的配置文件
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <package name="login" extends="struts-default">
    <action name="login" class="com.demo.LoginAction">
    <result name="success">success.jsp</result>
    </action>
    </package>
    </struts>这个是application中的配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <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 id="mdatasource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="com.mysql.jdbc.Driver">
    </property>
    <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
    </bean>
    <bean id="mysessionfactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="mdatasource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.MySQLDialect
    </prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/demo/Abc.hbm.xml</value></list>
    </property></bean>


    <bean id="logindao" class="com.demo.LoginDao">
    <property name="sessionFactory">
    <ref bean="mysessionfactory"/>
    </property>
    </bean>
    <bean name="loginAction" class="com.demo.LoginAction">
    <property name="logindao">
    <ref bean="logindao"/>
    </property>
    </bean>
    </beans>
      

  5.   

       有两种情况:1.你使用的是HibernateDaoSupport,你需要在applicationContext.xml中配置hibernateTemplate,指向sessionFactory,否则,你使用HibernateDaoSupport没有数据库连接,报空指针,
                    2.可能是你Action层没有注入进去。               我觉得第一种可能性大点。因为我看了你的配置,没有hibernateTemplate指向 <bean id="logindao" class="com.demo.LoginDao">
                <property name="hibernateTemplate">
                    <ref bean="hibernateTemplate"/>
                </property>
     </bean>
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3....">
       <property name="sessionFactory" ref="mysessionfactory">
    </bean>  你照我的改一下试一试
      

  6.   

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="sessionFactory" ref="mysessionfactory">
    </property>
    </bean>
    <bean id="logindao" class="com.demo.LoginDao">
    <property name="hibernateTemplate">
    <ref bean="hibernateTemplate"/>
    </property>
    </bean>
    <bean name="loginAction" class="com.demo.LoginAction">
    <property name="logindao">
    <ref bean="logindao"/>
    </property>
    </bean>
    这是我所更改的代码,可问题还是存在
      

  7.   

    这是Abc.hbm.xml代码
      <?xml version="1.0" encoding="utf-8" ?> 
      <!DOCTYPE hibernate-mapping (View Source for full doctype...)> 
    - <!--  
        Mapping file autogenerated by MyEclipse Persistence Tools  --> 
    - <hibernate-mapping default-cascade="none" default-access="property" default-lazy="true" auto-import="true">
    - <class name="com.demo.Abc" table="abc" catalog="test" mutable="true" polymorphism="implicit" dynamic-update="false" dynamic-insert="false" select-before-update="false" optimistic-lock="version">
    - <id name="username" type="java.lang.Integer">
      <column name="username" /> 
      <generator class="assigned" /> 
      </id>
    - <property name="password" type="java.lang.String" unique="false" optimistic-lock="true" lazy="false" generated="never">
      <column name="password" length="45" not-null="true" /> 
      </property>
      </class>
      </hibernate-mapping>
      

  8.   

    List list = getHibernateTemplate().find("from Abc");,这一句出现空指针异常,很明显是没有get到HibernateTemplate,楼主去掉这一句看看是否报错,如果报了那说明是配置的问题,没报就找一下关于getHibernateTemplate()的代码。
      

  9.   


    没报,getHibernateTemplate()得到的是null,现在的问题是在Action中调用不了dao
      

  10.   

    楼主能给出包含getHibernateTemplate()的类文件的代码么?
      

  11.   

    Action中调用不了dao是你配置文件的错,你给出来我看看。
      

  12.   

    web.xml有没有配置
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/applicationContext-*.xml
    </param-value>
    </context-param><listener>
    <listener-class>
               org.springframework.web.context.ContextLoaderListener
            </listener-class>
    </listener>
      

  13.   

    getHibernateTemplate()的文件代码,我是直接调用的,没有文件。
    web.xml中的配置文件<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     
     <filter>
      <filter-name>struts2</filter-name> 
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
      </filter>
     <filter-mapping>
      <filter-name>struts2</filter-name> 
      <url-pattern>/*</url-pattern> 
      </filter-mapping>
    <context-param>
      
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/applicationContext.xml</param-value>
      </context-param>
      
    <servlet>
        <servlet-name>context</servlet-name>
        <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>applicationContext中的配置文件<?xml version="1.0" encoding="UTF-8"?>
    <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 id="mdatasource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="com.mysql.jdbc.Driver">
    </property>
    <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
    </bean>
    <bean id="mysessionfactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="mdatasource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.MySQLDialect
    </prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/demo/Abc.hbm.xml</value></list>
    </property></bean>
    <bean id="logindao" class="com.demo.LoginDao">
    <property name="sessionFactory">
    <ref bean="mysessionfactory"/>
    </property>
    </bean>

    <bean name="loginAction" class="com.demo.LoginAction">
    <property name="logindao">
    <ref bean="logindao"/>
    </property>
    </bean>
    </beans>
      

  14.   

    web.xml中加上
    <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
      </listener-class>
    </listener>
    报404错误The requested resource () is not available.我用的是
    <servlet>
        <servlet-name>context</servlet-name>
        <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
      

  15.   

    你的配置文件是不是放在这个地方啊  /WEB-INF/applicationContext.xml
      

  16.   

    配置文件的地址正确
    这是我的actionpackage com.demo;import java.util.List;
    import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {
    LoginDao logindao;

    public LoginDao getLogindao() {
    return logindao;
    } public void setLogindao(LoginDao logindao) {
    this.logindao = logindao;
    }

    public String execute(){
    System.out.println("-------------------");
    logindao.login();
    return "success";
    }
    }
      

  17.   

    实在没看出代码和配置哪里出问题,1.重新检查lib里面的jar 试试看
    2.把防火墙关了 试试看
    3.window-preferences-java-compiler 选择版本和tomcat一致的 ,你的tomcat是5.5 就选5.0 试试看
    4.实在不行换个tomcat 试试看
      

  18.   

    web.xml中  
     <context-param>
      
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/applicationContext.xml</param-value>
      </context-param>
    你的applicationContext.xml放的位置好像不对吧.
      

  19.   

    List list = getHibernateTemplate().find("from Abc");
    这个getHibernateTemplate()怎么来的啊?不明白....不是loginDao的吗?
    是不是应该是loginDao.getHibernateTemplate()啊?
      

  20.   

    当初注入的SessionFactory或HibernateTemplate为空
    调用getHibernateTemplate(),你得到的HibernateTemplate对象为空了
    感觉就是这个问题了
      

  21.   

    Action类调用不了dao类?什么原因?