学长们,旺园是拉联通还是株洲铁通富丽园小区

2012年10月 Java大版内专家分月排行榜第三2012年6月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。springmvc 注入总是空指针异常 - ITeye问答
各位大牛,小弟又来请教问题了
tomcat7.0+ spring3.1.1 + hibernate3.6.0
程序跑起来了,但是输入url后,抛空指针异常,查了很多资料,都没找到解决办法,请教大神
org.springframework.web.util.NestedServletException: Reque 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.boPooledDataSource"
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 id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&
&property name="dataSource" ref="dataSource" /&
&property name="mappingDirectoryLocations"&
&value&WEB-INF/mappings&/value&
&/property&
&property name="hibernateProperties" &
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
&/property&
&bean id="userDaoHibernate" class="cc.fanbang.api.dao.impl.UserDaoHibernate"&
&property name="sessionFactory" ref="sessionFactory" /&
这是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 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" /&
这是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-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 userDaoH
&& // 省略 set,get方法
&& public void addUser(User user) {
&& }
}
问题补充:上面补充的 class DBManager implements DBManagerInterface
采纳的答案
忘了说明,userDaoHibernate注入失败,总是空指针&& userDaoHibernate有setter方法吗?
貌似& private static UserDaoHibernate userDaoH
这个对象是不是要写成静态的。。。
想必你的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是不会自动为你注入的,所以肯定是会抛空指针异常的。
已解决问题
未解决问题SpringMVC 类型转换错误自定义返回
在SpringMVC捕获异常只需要实现接口org.springframework.web.servlet.HandlerExceptionResolver,即可自定义返回异常,如:属性转换异常
@RequestMapping(/test)
@ResponseBody
public String str(Integer age) throws Exception {
return test: +
如果调用方法时传入参数age=abc此时会抛出TypeMismatchException,在自定义的异常捕获中,只需要根据信息进行返回:
package com.cml.m.
import java.io.IOE
import java.io.W
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import mons.logging.L
import mons.logging.LogF
import org.springframework.beans.TypeMismatchE
import org.springframework.web.servlet.HandlerExceptionR
import org.springframework.web.servlet.ModelAndV
import com.cml.mvc.beans.R
import com.google.gson.G
public class MyExceptionHandler implements HandlerExceptionResolver {
private static Log log = LogFactory.getLog(MyExceptionHandler.class);
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
(异常捕获=======& + ex);
(异常捕获=======& + handler);
Result result = new Result();
// 返回错误信息不为空
if (ex instanceof TypeMismatchException && null != ex.getMessage()) {
result.setResult(ex.getMessage());
result.setResult(500 服务器异常!);
response.setHeader(content-type, application/json);
response.setCharacterEncoding(UTF-8);
Writer writer = response.getWriter();
writer.write(new Gson().toJson(result));
writer.close();
} catch (IOException e1) {
e1.printStackTrace();
这样,属性类型转换错误被自定义返回了,但是也有个缺点,在一个方法总如果有多个参数,但是传入时有多个参数类型错误,只能捕获到第一个属性转换异常信息。

我要回帖

更多关于 株洲铁通富丽园小区 的文章

 

随机推荐