论坛首页 入门讨论版 Spring

spring 注入的值为什么会为NULL啊??

浏览 434 次
该帖已经被评为新手帖
作者 正文
最后更新时间:2008-05-06
请问下,我现在用Struts,Hibernate,Spring做一个注册的例子,可在服务器启动的时候spring把所有对象都注入了,可服务器启动完后,使用的时候所有注入的对象又为NULL了啊,我是个初学者不知道怎么解结了,那为大哥能帮下忙啊.
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">
  <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>
    <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代码<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
	<form-beans>
		<form-bean name="regForm" type="org.shan.bbs.form.RegForm" />
	</form-beans>
	<action-mappings>
		<action attribute="regForm" input="/reg.jsp" name="regForm"
			path="/reg" scope="request" type="org.shan.bbs.action.RegAction">
			<forward name="success" path="/success.jsp" redirect="true" />
		</action>
	</action-mappings>
	<message-resources parameter="com.shan.ApplicationResources" />
	<plug-in
		className="org.springframework.web.struts.ContextLoaderPlugIn">
		<set-property property="contextConfigLocation"
			value="/WEB-INF/applicationContext.xml" />
	</plug-in>
</struts-config>


spring代码<?xml version="1.0" encoding="UTF-8"?>
<!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>net.sourceforge.jtds.jdbc.Driver</value>
		</property>
		<property name="url">
			<value>jdbc:jtds:sqlserver://localhost:1433/bbs</value>
		</property>
		<property name="username">
			<value>sa</value>
		</property>
	</bean>
	<bean id="SessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="datasource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>org/shan/bbs/vo/Message.hbm.xml</value>
				<value>org/shan/bbs/vo/UserInfo.hbm.xml</value>
			</list>
		</property>
	</bean>
	<bean id="BaseDao" class="org.shan.bbs.dao.BaseDao"
		abstract="true">
		<property name="sessionFactory">
			<ref bean="SessionFactory" />
		</property>
	</bean>
	<bean id="DaoBean" class="org.shan.bbs.dao.impl.DaoBean"
		parent="BaseDao">
	</bean>
	<bean id="DaoService"
		class="org.shan.bbs.service.impl.DaoService">
		<property name="daoBean">
			<ref bean="DaoBean" />
		</property>
	</bean>
	<bean id="reg" class="org.shan.bbs.action.RegAction">
		<property name="daoService">
			<ref bean="DaoService" />
		</property>
	</bean>
</beans>


package org.shan.bbs.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.shan.bbs.form.RegForm;
import org.shan.bbs.service.IDaoService;

public class RegAction extends Action {

	protected IDaoService daoService;

	public void setDaoService(IDaoService daoService) {
		this.daoService = daoService;
	}

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		RegForm regForm = (RegForm) form;
		String username = regForm.getUsername();
		String password = regForm.getUsername();
		System.out.println(username + " " + password);
		System.out.println(daoService.toString());
		return mapping.findForward("success");
	}
}



下面为错误信息:
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.lang.NullPointerException
org.shan.bbs.action.RegAction.execute(RegAction.java:26)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
   
最后更新时间:2008-05-06
无代码、无配置、无错误信息,无法分析

楼主请仔细阅读置顶的《JavaEye积分规则,博客和论坛使用规则[重大修订]》
   
0 请登录后投票
最后更新时间:2008-05-07
对Strus不熟悉,说的不一定正确,仅供参考

看到你在Spring的配置中配置了reg这个bean,但Struts的配置中没有看到如何从Spring拿到它的(action定义看起来是由Struts自己生成这个bean,Spring也就没法向它注入doaService这个属性)
   
0 请登录后投票
最后更新时间:2008-05-07
多谢movingboy 的帮助,问题已经结节了,就是Struts没去拿spring注入的那个对象,所以对象才被释放了的.
   
0 请登录后投票
论坛首页 入门讨论版 Spring

跳转论坛:
JavaEye推荐