我用JUnit测试了applicationContext.xml中各注入关系,都没有问题,然后我就从JSP页面传值,但是发现抛出空指针异常,无法注入,最后发现是applicationContext.xml在工程启动时未能自动加载。
我在web.xml中写了如下配置用来加载:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param> <listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener
我也把applicationContext.xml文件拖到WEB-INF下,把classpath:applicationContext.xml换成/WEB-INF/applicationContext.xml试过,还是不能自动加载,到底是什么原因,新手求帮助啊。
我在web.xml中写了如下配置用来加载:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param> <listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener
我也把applicationContext.xml文件拖到WEB-INF下,把classpath:applicationContext.xml换成/WEB-INF/applicationContext.xml试过,还是不能自动加载,到底是什么原因,新手求帮助啊。
解决方案 »
- tomcat服务器工程,怎么在外网访问。
- JQuery get方法传值问题
- java中如何判断字符串是否是json格式。
- 网站压力测试工具,谁知道什么测试网站压力的工具好啊?在哪里下载啊?
- 怎么获取别的web服务器下的文件件路径(方法可行者给分不低于50,小弟在这里等候佳音)
- jbuilder+websphere
- Collection的size()、iterator()等操作抛出IllegalStateException!急!高分求教!!
- JMS,在weblogic里怎么配置JDBC Store啊
- 关于weblogic7的问题
- Jbuilder5.0中ejb deployment 为灰(不能用)的问题,论者有分。
- 如何设置某些列不显示?
- java文件修改后,MyEclipse总不能自动更新,每次都要从新发布才能更新,有怎么好的办法
应该把配置文件放在src 下面,然后编译之后就在classes根目录下,不就是classpath了吗???
我就是放在src目录下的,不能自动加载,我放其他目录试了试,还是不行。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
首先写一个测试类:import org.junit.Test;
import org.springframework.context.support.FileSystemXmlApplicationContext;public class TestSpring {
@Test
public void testSpring() {
new FileSystemXmlApplicationContext("classpath:applicationContext.xml") ;
}
}测试applicationContext.xml文件没有写错,注意看控制台输出和JUnit控制台有没有错误信息,如果没有错误信息,然后在web.xml里配置:<!-- 配置spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
启动tomcat看控制有没有输出什么错误信息。
我刚才把Action中调用方法的实例对象的getter和setter方法删除,启动服务器,发现会出错,说缺少setter方法,说明配置文件是加载了,既然加载了,说明注入成功,我用该对象调用方法就不会有错,可是我方法执行到对象调用方法处就抛出空指针异常,这是怎么回事?
public class SysManagerAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private HttpServletRequest request;
private Student student;
public SysManageImpl sysManager;
//setter、getter方法 /**
* 管理员添加学生
* @return
*/
public String add(){
try{
sysManager.sysUpdateStudent(student);//执行到此处时就抛出空指针异常
return "addSuccess";
}catch (Exception e) {
e.printStackTrace();
return "addFail";
}
}
}
<!-- SysManageImpl -->
<bean id="sysManage" class="com.simpleton.CourseSystem.Service.SysManageImpl">
<property name="dao" ref="baseDao"></property>
</bean>
<!-- SysManagerAction -->
<bean id="sysManagerAction" class="com.simpleton.CourseSystem.Action.SysManagerAction">
<property name="sysManager" ref="sysManage"/>
</bean>
这是applicationContext.xml中的配置,我用JUnit做过测试,都没有问题。