在controller中调用dao 显示dao为空 这事为什么(spring+HIbernate))

fcsp2019991 2013-04-27 04:37:07
做个小练习 用hibernate+spring+springmvc做一个登录界面
在登录的controller中想调用 dao来进行查询 结果测试的时候显示dao的空指针一场
已经在loginController中设置了dao的setter/getter方法 可是依然报空
下面是代码

loginController.java

public class loginController {
private userDaoImpl userdaoimpl;


@RequestMapping("/login.do")
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response){

//userdaoimpl = new UserDaoImpl();

ModelAndView mdv = new ModelAndView();


String username ="111";
String password ="111";
if(userdaoimpl == null){
System.out.print("userdaoimpl is null");
}

List<User> list = userdaoimpl.findUserByUsername(username);

if(list.isEmpty()){
mdv.setViewName("login1");
}

//System.out.print(username+","+password);
else if(list.get(0).getPassword().equals(password)){
mdv.addObject("username",username);
mdv.addObject("password",password);
mdv.setViewName("loginSuccess");
}

if(list.isEmpty()){
System.out.print("list is null");
}
else{
User user = list.get(0);
System.out.println("hello"+user.getUsername());
mdv.setViewName("loginSuccess");
}


return mdv;
}

public void setUserDaoImpl(userDaoImpl userdaoimpl){
this.userdaoimpl = userdaoimpl;
}

public userDaoImpl getUserDaoImpl(){
return this.userdaoimpl;
}
}

userDaoImpl代码

public class userDaoImpl extends BaseDao implements UserDao{

private HibernateTemplate hibernatetemplate;

@SuppressWarnings("unchecked")
@Override
public List<User> findUserByUsername(String username) {
// TODO Auto-generated method stub


List user = hibernatetemplate.find("from User u where u.username = ?", username);
return user;
}

}

applicatonContext的后几行配置bean的代码:

<bean id="userdao" class="com.lightblog.dao.userDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="loginController" class="com.lightblog.controller.loginController">
<property name="userdao" ref="userdao" />
</bean>

异常代码

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

java.lang.NullPointerException
com.lightblog.controller.loginController.handleRequest(loginController.java:45)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
...全文
459 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
java大白菜 2013-04-27
  • 打赏
  • 举报
回复
你的配置有问题吧,你既然配置<bean id="loginController" class="com.lightblog.controller.loginController"> <property name="userdao" ref="userdao" /> </bean>。。。。。。。那么你相应的loginController这个类下的变量名字也应该是private UserDao userdao; 还有你配置中的ref="userdao" />有在配置文件中有这个bean配置吗,没有你就要全路径吧。
fcsp2019991 2013-04-27
  • 打赏
  • 举报
回复
引用 7 楼 fangmingshijie 的回复:
看不懂给action也配置bean,被雷到了
刚开始学 不懂的东西很多 主要问题在哪请帮忙指出 同时麻烦给点修改意见
  • 打赏
  • 举报
回复
看不懂给action也配置bean,被雷到了
fcsp2019991 2013-04-27
  • 打赏
  • 举报
回复
914224797@qq.com 多谢了
liuyuhua0066 2013-04-27
  • 打赏
  • 举报
回复
留个邮箱 我给发个简单的demo
fcsp2019991 2013-04-27
  • 打赏
  • 举报
回复
那应该如何改正 就是说我的ref用错了导致userdaoimpl没有被注入是吗
liuyuhua0066 2013-04-27
  • 打赏
  • 举报
回复
注解没用对 xml-ref也用错~
fcsp2019991 2013-04-27
  • 打赏
  • 举报
回复
userdao是一个接口 userdaoimpl是实现类 不声明userdaoimpl没办法操作 就是为了注入所以才写了setter/getter 方法。 声明UserDao没办法实现操作吧 至于代码奇葩 我可能实践的不多 不知道应该如何改代码才规范 有什么问题请指出
lvzg_005 2013-04-27
  • 打赏
  • 举报
回复
好奇葩的代码 loginController中的变量:private userDaoImpl userdaoimpl; 你已经在bean配置文件中配置了 <bean id="loginController" class="com.lightblog.controller.loginController"> <property name="userdao" ref="userdao" /> </bean> 就不要这么定义了 修改:private UserDao userdao;

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧