先贴错误:
exception org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:408)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.NullPointerException
com.test.cmd.testCmd.handleRequest(testCmd.java:24)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:755)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)下面是applicationContext.xml
<?xml version="1.0" encoding="GBK"?><!DOCTYPE beans PUBLIC
          "-//SPRING//DTD BEAN//EN"
          "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
   <property name="driverClassName">
     <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
   </property>
   <property name="url">
     <value>jdbc:sqlserver://localhost:1433;databaseName=sap_finance</value>
   </property>
   <property name="username">
     <value>sa</value>
   </property>
   <property name="password">
     <value>123</value>
   </property>
 </bean>
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
         <property name="dataSource" ref="dataSource"/>
  </bean>
 
 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource">
     <ref local="dataSource"/>
   </property>
 </bean><bean id="testDao" class="com.test.dao.testDao">
  <property name="jdbcTemplate">
    <ref local="jdbcTemplate"/>
  </property>
</bean> 
</beans>
testDaopublic class testDao {
  private JdbcTemplate jdbcTemplate;
  
  public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
  }   public JdbcTemplate getJdbcTemplate() {
    return this.jdbcTemplate;
  }}
testCmd
public class testCmd extends testDao implements Controller{
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
    throws Exception{
JdbcTemplate jdbcTemplate =getJdbcTemplate();
String sql="select * from test";
List sqlList=jdbcTemplate.queryForList(sql);
System.out.print(sqlList);
request.setAttribute("sqlList", sqlList);
return new ModelAndView("test/test.jsp");
    }

解决方案 »

  1.   

     = = 。。你的web.xml怎么写的。。
      

  2.   

    web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/etc/applicationContext.xml
    </param-value>
    </context-param>
    <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
            <servlet-name>dispatcherServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>0</load-on-startup>    </servlet>    <!--为DispatcherServlet建立映射 -->    <servlet-mapping>         <servlet-name>dispatcherServlet</servlet-name>         <url-pattern>*.do2</url-pattern>    </servlet-mapping>
      <filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>com.utils.EncodeFilter</filter-class>
        <init-param>
          <param-name>ignore</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>GB2312</param-value>
        </init-param>
      </filter>  <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>*.do</url-pattern>
      </filter-mapping>
    <!--
       <listener>
      <listener-class>com.utils.ActiveUserListener</listener-class>
     </listener>
    -->
    <servlet>          <servlet-name>TimeServlet</servlet-name>
              <servlet-class>com.utils.TimeTrackerPlugin</servlet-class>
              <load-on-startup>1</load-on-startup>
         </servlet>
      <servlet>
         <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
        
          <param-name>debug</param-name>
          <param-value>2</param-value>
        </init-param>
        <init-param>
          
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>application</param-name>
          <param-value>ApplicationResources</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
      </servlet>
      <servlet>
        <servlet-name>debugjsp</servlet-name>
        <description>Added to compile JSPs with debug info</description>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
          <param-name>classdebuginfo</param-name>
          <param-value>true</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
      </servlet>   <servlet>
           <servlet-name>DisplayChart</servlet-name>
           <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
         </servlet>  <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <servlet-mapping>
        <servlet-name>debugjsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
      </servlet-mapping>
     <session-config>
        <session-timeout>100</session-timeout>
      </session-config>
      <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
      </taglib>
      
    </web-app>
      

  3.   

    testCmd这个都没有在xml里面配置,spring怎么注入啊??
      

  4.   

     = = 。。嗯。。楼上所说是正确的。。的确是testCmd没有配置,,相反testDao其实是不用配置的
      

  5.   

    以上正解,把你testDao配置注入的地方改成testCmd楼主小妹试试
      

  6.   

    *.do2是什么?你用的Struts1对吗?
    用Spring时候时你有到了Spring的JDBC是吧
    你的代码我看了半天,我才明白!
    众多人认为testDao是null,因为没有注入!
    先在我不管这个是否为null
    因为在testCmd这个类里没有testDao
    所以要知道java.lang.NullPointerException是在哪抛出来的
    你必须把testCmd这个类的第24行代码标明出来!这样才方便找...
      

  7.   


    这行是:
    List sqlList=jdbcTemplate.queryForList(sql);