applicationcontext.xml<?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.5.xsd">

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/mySQL">
</property>
<property name="username" value="root"></property>
<property name="password" value="111111"></property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property> <property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.DB2Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<bean id="sampleDao"
class="com.yourcompany.struts.dao.impl.SampleDao" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<bean id="sampleService"
class="com.yourcompany.struts.service.impl.SampleService" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
<property name="sampleDao">
<ref bean="sampleDao" />
</property>
</bean> <bean name="/sample"
class="com.yourcompany.struts.action.SampleAction" 
  abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="sampleService">
<ref bean="sampleService" />
</property>
</bean>

</beans>hibernate.cfg.xml<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration><session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/mySQL
</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="myeclipse.connection.profile">MySQL</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.password">111111</property>
<mapping resource="com/yourcompany/model/Log.hbm.xml" /></session-factory></hibernate-configuration>web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
  <context-param>
      <param-name>contextConfigLocation</param-name>
     <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
  </context-param>
  <servlet>
  <servlet-name>SpringContextServlet</servlet-name>
   <servlet-class>
   org.springframework.web.context.ContextLoaderServlet
   </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>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
  <data-sources />
  <form-beans />
  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action path="/sample" type="com.yourcompany.struts.action.SampleAction">
      <forward name="success" path="/WEB-INF/sample/showData.jsp" />
    </action>  </action-mappings>  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
  
  
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property property="contextConfigLocation" value="classpath:applicationContext.xml"/>
  </plug-in>
  
  
  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames" value="/WEB-INF/validator-rules.xml" /> 
  </plug-in>
</struts-config>大家帮我看看啊~~这是抛出的错误严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.yourcompany.struts.action.SampleAction.execute(SampleAction.java:42)
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.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
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:230)
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:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)调用action后,通过getSampleService()返回的是SampleService类是null····应该就是spring那边没有注入成功吧?大家帮帮忙解决一下~谢谢!!

解决方案 »

  1.   

    下面这是action、service和dao的源代码
    action/*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package com.yourcompany.struts.action;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.dom4j.Document;import com.yourcompany.struts.service.ISampleService;/** 
     * MyEclipse Struts
     * Creation date: 02-23-2010
     * 
     * XDoclet definition:
     * @struts.action validate="true"
     */
    public class SampleAction extends Action {
    private ISampleService sampleService = null;
    /*
     * Generated Methods
     */ /** 
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    // TODO Auto-generated method stub
    System.out.println(this.getSampleService());
    Document doc = this.getSampleService().getData();
    String xml = doc==null?"null":doc.asXML();
    request.setAttribute("xml", xml);
    return mapping.findForward("success"); 
    } public ISampleService getSampleService() {
    return sampleService;
    } public void setSampleService(ISampleService sampleService) {
    this.sampleService = sampleService;
    }
    }servicepublic class SampleService implements ISampleService{
    private ISampleDao sampleDao = null;
    public ISampleDao getSampleDao() {
    return sampleDao;
    }
    public void setSampleDao(ISampleDao sampleDao) {
    this.sampleDao = sampleDao;
    }
    public Document getData(){
    List list = this.getSampleDao().getData();
    Document doc = DocumentHelper.createDocument();
    Element root = doc.addElement("root");
    Element data = root.addElement("data");
    for(int i = 0 ; i < list.size() ; i++){
    System.out.println(list.get(i));
    data.setText(list.get(i).toString());
    }
    return doc;
    }

    }DAOpublic class SampleDao extends HibernateDaoSupport implements ISampleDao{ public List getData(){
    String hql = "select userName from Log";
    List list = this.getSession().createQuery(hql).list();
    return list;
    }
    }
      

  2.   

    试试:web.xml中加载spring配置文件applicationcontext.xml时路径有问题,改成 这样: <context-param>
          <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
      </context-param>
      

  3.   

        <bean name="/sample"
            class="com.yourcompany.struts.action.SampleAction" 
              abstract="false" lazy-init="default" autowire="default" dependency-check="default">
            <property name="sampleService">
                <ref bean="sampleService" />
            </property>
        </bean>你的action不能保证去spring里拿的吧,这样针对SampleAction的注入自然也都无效了
      

  4.   

    看那个struts-config.xml中并没有把action交给spring来管理。就是
     <action path="/sample" type="com.yourcompany.struts.action.SampleAction">
          <forward name="success" path="/WEB-INF/sample/showData.jsp" />
        </action>
    type要交给spring,spring才会给你注入。。所以才能获得注入的service
    加上这个
    <controller>
    <set-property property="processorClass"
    value="org.springframework.web.struts.DelegatingRequestProcessor" />
    </controller>
    或者把org.springframework.web.struts.DelegatingRequestProcessor 放入到你的action的class中,即
     <action path="/sample" class="org.springframework.web.struts.DelegatingRequestProcessor">
          <forward name="success" path="/WEB-INF/sample/showData.jsp" />
        </action>
      

  5.   

    <bean name="/SampleAction"
            class="com.yourcompany.struts.action.SampleAction" >
            <property name="sampleService">
                <ref bean="sampleService" />
            </property>
    </bean>
    这样写了试试看 主要是name="/SampleAction"这里对不对如果不对的话用/action/SampleAction