-
springmvc 注入总是空指针异常5
各位大牛,小弟又来请教问题了
tomcat7.0+ spring3.1.1 + hibernate3.6.0
程序跑起来了,但是输入url后,抛空指针异常,查了很多资料,都没找到解决办法,请教大神
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.NullPointerException
cc.fanbang.api.manager.DBManager.addUser(DBManager.java:142)
cc.fanbang.api.controller.TestController.handleDBManagerTestRequest(TestController.java:43)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
数据库配置成功,运行之后所有表建立起来
这是applicationContext.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" >
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost/fanbang" />
<property name="user" value="root" />
<property name="password" value="root" />
<property name="maxPoolSize" value="40" />
<property name="minPoolSize" value="1" />
<property name="initialPoolSize" value="1" />
<property name="maxIdleTime" value="20" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingDirectoryLocations">
<list>
<value>WEB-INF/mappings</value>
</list>
</property>
<property name="hibernateProperties" >
<value>
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.cache.use_second_level_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
</value>
</property>
</bean>
<bean id="userDaoHibernate" class="cc.fanbang.api.dao.impl.UserDaoHibernate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
这是spring-servlet.xml
<bean id="testController" class="cc.fanbang.api.controller.TestController"></bean>
<bean id="dbManager" class="cc.fanbang.api.manager.DBManager" >
<property name="userDaoHibernate" ref="userDaoHibernate" />
<!--
<property name="postDaoHibernate" ref="postDaoHibernate" />
<property name="replyDaoHibernate" ref="replyDaoHibernate" />
<property name="restaurantDaoHibernate" ref="restaurantDaoHibernate" />
<property name="relationshipDaoHibernate" ref="relationshipDaoHibernate" />
-->
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
这是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>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
问题补充:忘了说明,userDaoHibernate注入失败,总是空指针
class DBManager {
private UserDaoHibernate userDaoHibernate;
// 省略 set,get方法
public void addUser(User user) {
}
}
问题补充:上面补充的 class DBManager implements DBManagerInterface2012年9月30日 23:31
3个答案 按时间排序 按投票排序
-
采纳的答案
忘了说明,userDaoHibernate注入失败,总是空指针 userDaoHibernate有setter方法吗?
2012年10月01日 07:33
-
貌似 private static UserDaoHibernate userDaoHibernate;
这个对象是不是要写成静态的。。。2012年10月02日 14:00
-
想必你的DBManager.getInstance()这个方法肯定是采用单例模式创建的,那里面的DBManager的实例肯定是new出来的了,new出来的实例和你在xml中配置的Spring管理的实例:
<bean id="userDaoHibernate" class="cc.fanbang.api.dao.impl.UserDaoHibernate"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
不是一个实例,因而里面的sessionFactory属性Spring是不会自动为你注入的,所以肯定是会抛空指针异常的。2012年10月02日 10:19
相关推荐
- 为了提高用户体验,可以使用SpringMVC的`@ExceptionHandler`处理注册过程中的异常,如数据重复、空指针异常等。 - 异常处理方法可以返回一个ModelAndView对象,将错误信息放入模型中,然后重定向回注册页面,...
- **空指针异常**:检查依赖注入是否正确,确保@Autowired注解的bean已存在。 - **视图解析失败**:确认ViewResolver配置无误,视图文件(如JSP、Thymeleaf)路径正确。 - **模型数据未传递**:确保ModelAndView...
方法内部首先进行一个空值判断,防止空指针异常。如果传入的列表为空,则返回错误信息。如果列表不为空,接下来对列表中的每个元素进行操作,通常是将这些数据入库或者执行其他业务逻辑。 ### JSON数据格式 JSON...
7. **异常处理**:利用Spring的全局异常处理,统一处理可能出现的运行时异常,如空指针异常、数据验证失败等。 8. **日志记录**:通过Spring的AOP(面向切面编程)技术,记录用户的操作日志,便于后期分析和问题...
在书画拍卖系统中,可能出现的异常包括空指针异常、数据库连接异常等。 8. **测试**:系统开发过程中,单元测试和集成测试必不可少。JUnit和Mockito可以用来测试业务逻辑,而Spring Boot Test则支持对Spring MVC的...
7. **异常处理**:系统应该能捕获并处理可能出现的异常,如数据库连接异常、空指针异常等,提供友好的错误提示,避免程序崩溃。 8. **测试与调试**:开发过程中,单元测试和集成测试是必不可少的,JUnit和Mockito等...
7. **异常处理**:为了提供良好的用户体验,系统需要有完善的异常处理机制,捕获并处理可能出现的错误,如数据库连接问题、空指针异常等。 8. **单元测试和集成测试**:为了确保代码质量,项目中可能会包含JUnit或...
7. **异常处理**:为了增加健壮性,还需要考虑异常处理,比如SQL执行异常、空指针异常等,确保系统在遇到问题时能给出适当的反馈。 通过这个简单的登录验证项目,开发者可以深入理解SSM框架的集成和工作原理,为更...
7. **异常处理**:为了提高系统的健壮性,开发者通常会为可能出现的异常情况编写处理逻辑,比如数据库连接失败、空指针异常等。这些异常信息会被捕获并转化为友好的错误提示。 8. **单元测试**:源码中包含的测试类...
9. **异常处理**:为了提供良好的用户体验,系统应该包含完善的异常处理机制,捕获并处理可能出现的错误,如数据库连接异常、空指针异常等。 10. **测试**:为了确保系统的稳定性和正确性,开发过程中会进行单元...
主键是约束,确保列值唯一且不能为空,而唯一索引只是索引,允许null值。主键可用于外键引用,一个表只能有一个主键,但可有多个唯一索引。 8. **聚集索引与非聚集索引**: - 聚集索引的行数据与键值一起存储,...
+ 在进行关联市场活动的操作中,报空指针异常。ajax请求的data格式不是json时,而是一个拼接的字符串,此时controller中对多个id相同的参数(`.../xxx.do?id=xxx&id=xxx&id=xxx`)的接受,需要使用`request....
11. **空指针异常**: "NullPointerException"通常发生在试图访问已被赋值为null的对象成员时。确保在使用对象前检查其是否为null,并避免对null对象进行操作。 12. **返回值类型未定义**: "Unknown return value ...
6. 错误处理:在Controller层,你需要捕获可能出现的异常,如空指针异常、数据验证错误等,并返回合适的错误信息给用户。 7. 测试:编写单元测试和集成测试,确保每个操作都能正常工作。可以使用JUnit和Mockito等...
1. **Java**:Java是一种广泛使用的面向对象的编程语言,其报错主要涉及语法错误、类型不匹配、空指针异常、运行时异常等。解决Java错误通常需要理解错误信息,检查变量声明、方法调用、异常处理等。例如,"Java就业...
SpringSide 强调编码规范,遵循阿里巴巴 Java 开发手册,提供了一套完整的编码约定,包括命名规则、注释规范、异常处理、空指针检查等,提升了代码的可读性和可维护性。 通过对 Springside 3.2.2 源码的深入学习,...
- **空指针异常**:未正确注入Service或Repository,检查@Autowired注解和Bean配置。 - **数据访问异常**:数据库连接问题,检查数据库配置和实体类的映射。 - **类型转换异常**:请求参数与方法参数类型不匹配,...
11. **性能优化**:代码优化技巧,如避免空指针、减少对象创建、合理使用数据结构等。还有应用性能监控,如JProfiler、VisualVM等工具的使用。 12. **其他**:可能会涉及一些开源项目和框架,如MyBatis、Hibernate...
- `remove()`从队列中移除一个元素,如果队列为空则抛出异常。 **30. 哪些集合类是线程安全的?** - `Vector` - `HashTable` - `ConcurrentHashMap`等使用显式同步或并发控制的集合类。 **31. 迭代器`Iterator`是...