开始运行SSH框架,发现service调用dao层时候一直报空指针错误,各种查看配置文件和调用,终于发现了问题
在action层里面写了一句
//注销之后没有报错
this.setUserService(new UserServiceImpl());
既然是注入,就不用new一个了
下面附上Java代码
UserAction.java
private User user=new User();
private String userid;
private String userpwd;
private UserService userService;
/**
* 用户登录验证
*
* @return
* @throws Exception
*/
public String login() throws Exception {
logger.info("##login user >" + userid + " userpwd>" + userpwd);
// 获取页面属性值
userid = ServletActionContext.getRequest().getParameter("userid");
userpwd = ServletActionContext.getRequest().getParameter("userpwd");
logger.info("userid>>" + userid + "userPwd>>" + userpwd);
// this.setUserService(new UserServiceImpl());
boolean flag =userService.login(userid, userpwd);
logger.info("flag="+flag);
if (flag) {
return "success";
} else {
return "error";
}
}
public UserService getUserService() {
return userService;
}
//测试userService是否为空
public void setUserService(UserService userService) {
if(userService==null){
System.out.println("setUserService>>>>userService==null");
}else
System.out.println("setUserService>>>>userService!=null");
this.userService = userService;
}
UserServiceImpl.java
private UserDao userDao;
public boolean login(String userid, String userpwd) {
boolean flag = false;
try{
logger.info("## userid="+userid+" and userpwd="+userpwd);
logger.info("## userDao= "+userDao);
if(userDao!=null){
flag=userDao.findByUser(userid, userpwd);
}else{
logger.info(">>>userDao=null");
}
}catch (Exception e) {
logger.info("%% UserServiceImpl login failed!");
e.printStackTrace();
}
return flag;
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
if(userDao==null){
System.out.println("setUserDao>>userDao=null ");
}else{
System.out.println("setUserDao<<userDao!=null ");
}
}
UserDaoImpl.java
@SuppressWarnings("unchecked")
public boolean findByUser(String userid, String userpwd) {
String hql="from User where userid='"+userid+"' and userpwd='"+userpwd+"'";
logger.info(">>userid="+userid+" >>userpwd="+userpwd);
List<User> u = getHibernateTemplate().find(hql);
logger.info("u="+u);
if (u.size() > 0) {
return true;
}else
return false;
}
applicationContext.xml部分相关代码
<!-- 把Session工厂注入给HibernateTemplate -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置DAO 组件 begin -->
<bean id="userDao" class="com.gxuwz.aimage.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory" ></property>
</bean>
<!-- 配置DAO 组件 end -->
<!-- 配置Service 组件 begin -->
<bean id="userService" class="com.gxuwz.aimage.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao" ></property>
</bean>
<!-- 配置Service 组件 end -->
<!-- 配置Action 组件 begin -->
<bean id="userAction" class="com.gxuwz.aimage.web.struts.UserAction">
<property name="userService" ref="userService" />
</bean>
作为以后调试bug参考