userdao接口的内容 package com.lovo.dao;import com.lovo.po.User;public interface UserDao { public void saveUser(User u); public void findUsersById(String id); public int findUser(User u); }
userdaoimpl package com.lovo.dao;import java.util.List;import org.hibernate.Query; import org.hibernate.Session;import com.lovo.po.User; import com.lovo.util.HibernateUtil;public class UserDaoImpl implements UserDao{ @Override public void saveUser(User u) { // System.out.println("qianmian"); HibernateUtil.getCurrentSession().save(u); } @Override public void findUsersById(String id) {
} @Override public int findUser(User u) { System.out.println("u="+u.getName()); Session session = HibernateUtil.getCurrentSession(); Query query = session.createQuery("from User u where u.name = ? and u.password = ?"); query.setString(0, u.getName()); query.setString(1, u.getPassword()); List<User> list = query.list(); System.out.println(list.size()); return 1; } }
public void d(){ System.out.println("进入了"); } } 这个是useraction package com.lovo.action;import org.apache.struts2.ServletActionContext; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.lovo.po.User; import com.lovo.service.UserService; import com.lovo.service.UserServiceImpl; import com.lovo.transaction.Transaction;public class UserAction { private static ApplicationContext ac; static { ac = new ClassPathXmlApplicationContext("applicationContext.xml"); } private User user;
private UserServiceImpl usi = new UserServiceImpl();
public User getUser() { return user; } public void setUser(User user) { this.user = user; } private UserService us;
public UserService getUs() { return us; } public void setUs(UserService us) { this.us = us; } public String saveUser() throws Exception{ // ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); us = (UserService)ac.getBean("usi"); // System.out.println("us="+us); us.saveUser(user); return "success"; }
public String login() throws Exception{ // ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); String str = "lose"; us = (UserService)ac.getBean("usi"); System.out.println("us="+us); System.out.println("user="+user); int i = us.findUser(user); if(i>0){ ServletActionContext.getRequest().getSession().setAttribute("user", user); str = "loginSuccess"; } return str; }
public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); Transaction us = (Transaction)ac.getBean("transaction"); System.out.println("us="+us); } }这个是hibernate工具类 package com.lovo.util;import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport;public class HibernateUtil { private static SessionFactory sf; private static Configuration cfg;
public static Configuration getCfg() { return cfg; } public static void setCfg(Configuration cfg) { HibernateUtil.cfg = cfg; } static{ cfg = new Configuration().configure(); sf = cfg.buildSessionFactory(); }
public static Session getSession(){ return sf.openSession(); }
public static Session getCurrentSession(){ // System.out.println(sf); return sf.getCurrentSession(); }
public static void createTable(){ SchemaExport se = new SchemaExport(cfg); se.create(true, true); }
public static final ThreadLocal<Session> session = new ThreadLocal<Session>(); public static Session currentSession(){ Session s = session.get(); if(s==null){ s = sf.openSession(); session.set(s); } return s; }
public static void closeSession(){ Session s = session.get(); session.set(null); if(s!=null){ s.close(); session.remove(); } } } 这个是UserService接口 package com.lovo.service;import com.lovo.po.User;public interface UserService { public void saveUser(User u);
public void findUsersById(String id);
public int findUser(User u); }这个是UserServiceImpl类 package com.lovo.service;import com.lovo.dao.UserDao; import com.lovo.po.User;public class UserServiceImpl implements UserService{
private UserDao ud; public UserDao getUd() { return ud; } public void setUd(UserDao ud) { this.ud = ud; } @Override public void saveUser(User u) { ud.saveUser(u); } @Override public void findUsersById(String id) { ud.findUsersById(id); } @Override public int findUser(User u) { System.out.println("ud="+ud); return ud.findUser(u); }}
都有值呀,但是他都是要报nullPointException 这是打印出来的结果 us=com.lovo.service.UserServiceImpl@ffc3eb user=com.lovo.po.User@1978933 进入了 ud=com.lovo.dao.UserDaoImpl@5e7663 u=李四 Hibernate: select user0_.u_id as u1_0_, user0_.u_name as u2_0_, user0_.u_parent as u3_0_, user0_.u_password as u4_0_, user0_.g_id as g5_0_ from tb_users user0_ where user0_.u_name=? and user0_.u_password=? 1 2013-11-28 22:54:05 org.apache.struts2.dispatcher.Dispatcher error 严重: Exception occurred during processing request: null java.lang.NullPointerException at com.sun.proxy.$Proxy6.findUser(Unknown Source) at com.lovo.action.UserAction.login(UserAction.java:58) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
能保存user到数据库 也能把他从数据库查询出来 感觉没有哪里有对象是null的
打断点跟一下吧,看具体哪个对象是空的 int i = us.findUser(user); 这一步执行不下去吧
us = (UserService)ac.getBean("usi");这个获取的us是null,所以 int i = us.findUser(user);这里就报了nullpoint
package com.lovo.dao;import com.lovo.po.User;public interface UserDao {
public void saveUser(User u);
public void findUsersById(String id);
public int findUser(User u);
}
package com.lovo.dao;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;import com.lovo.po.User;
import com.lovo.util.HibernateUtil;public class UserDaoImpl implements UserDao{
@Override
public void saveUser(User u) {
// System.out.println("qianmian");
HibernateUtil.getCurrentSession().save(u);
} @Override
public void findUsersById(String id) {
} @Override
public int findUser(User u) {
System.out.println("u="+u.getName());
Session session = HibernateUtil.getCurrentSession();
Query query = session.createQuery("from User u where u.name = ? and u.password = ?");
query.setString(0, u.getName());
query.setString(1, u.getPassword());
List<User> list = query.list();
System.out.println(list.size());
return 1;
}
}
package com.lovo.transaction;import org.aspectj.lang.ProceedingJoinPoint;import com.lovo.util.HibernateUtil;public class Transaction {
//这个方法是要切进去的方法 也就是开启事务的方法
public void doAround(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("进入了");
HibernateUtil.getCurrentSession().beginTransaction().begin();
pjp.proceed();
HibernateUtil.getCurrentSession().beginTransaction().commit();
}
public void d(){
System.out.println("进入了");
}
}
这个是useraction
package com.lovo.action;import org.apache.struts2.ServletActionContext;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.lovo.po.User;
import com.lovo.service.UserService;
import com.lovo.service.UserServiceImpl;
import com.lovo.transaction.Transaction;public class UserAction {
private static ApplicationContext ac;
static {
ac = new ClassPathXmlApplicationContext("applicationContext.xml");
}
private User user;
private UserServiceImpl usi = new UserServiceImpl();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
} private UserService us;
public UserService getUs() {
return us;
}
public void setUs(UserService us) {
this.us = us;
}
public String saveUser() throws Exception{
// ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
us = (UserService)ac.getBean("usi");
// System.out.println("us="+us);
us.saveUser(user);
return "success";
}
public String login() throws Exception{
// ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
String str = "lose";
us = (UserService)ac.getBean("usi");
System.out.println("us="+us);
System.out.println("user="+user);
int i = us.findUser(user);
if(i>0){
ServletActionContext.getRequest().getSession().setAttribute("user", user);
str = "loginSuccess";
}
return str;
}
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
Transaction us = (Transaction)ac.getBean("transaction");
System.out.println("us="+us);
}
}这个是hibernate工具类
package com.lovo.util;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;public class HibernateUtil {
private static SessionFactory sf;
private static Configuration cfg;
public static Configuration getCfg() {
return cfg;
} public static void setCfg(Configuration cfg) {
HibernateUtil.cfg = cfg;
} static{
cfg = new Configuration().configure();
sf = cfg.buildSessionFactory();
}
public static Session getSession(){
return sf.openSession();
}
public static Session getCurrentSession(){
// System.out.println(sf);
return sf.getCurrentSession();
}
public static void createTable(){
SchemaExport se = new SchemaExport(cfg);
se.create(true, true);
}
public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
public static Session currentSession(){
Session s = session.get();
if(s==null){
s = sf.openSession();
session.set(s);
}
return s;
}
public static void closeSession(){
Session s = session.get();
session.set(null);
if(s!=null){
s.close();
session.remove();
}
}
}
这个是UserService接口
package com.lovo.service;import com.lovo.po.User;public interface UserService {
public void saveUser(User u);
public void findUsersById(String id);
public int findUser(User u);
}这个是UserServiceImpl类
package com.lovo.service;import com.lovo.dao.UserDao;
import com.lovo.po.User;public class UserServiceImpl implements UserService{
private UserDao ud; public UserDao getUd() {
return ud;
} public void setUd(UserDao ud) {
this.ud = ud;
} @Override
public void saveUser(User u) {
ud.saveUser(u);
} @Override
public void findUsersById(String id) {
ud.findUsersById(id);
} @Override
public int findUser(User u) {
System.out.println("ud="+ud);
return ud.findUser(u);
}}
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="udi" class="com.lovo.dao.UserDaoImpl">
</bean>
<bean id="gdi" class="com.lovo.dao.GroupDaoImpl">
</bean>
<bean id="pdi" class="com.lovo.dao.PhoneDaoImpl">
</bean> <bean id="usi" class="com.lovo.service.UserServiceImpl">
<property name="ud" ref="udi"></property>
</bean> <bean id="gsi" class="com.lovo.service.GroupServiceImpl">
<property name="gd" ref="gdi"></property>
</bean>
<bean id="psi" class="com.lovo.service.PhoneServiceImpl">
<property name="pd" ref="pdi"></property>
</bean>
<bean id="transaction" class="com.lovo.transaction.Transaction">
</bean>
<aop:config>
<aop:pointcut expression="execution(* com.lovo.service.*.*(..))" id="service"/>
<aop:aspect id="tr" ref="transaction">
<aop:around method="doAround" pointcut-ref="service"/>
</aop:aspect>
</aop:config>
</beans>
public String login() throws Exception{
// ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
String str = "lose";
us = (UserService)ac.getBean("usi");
System.out.println("us="+us);
System.out.println("user="+user);
int i = us.findUser(user);
if(i>0){
ServletActionContext.getRequest().getSession().setAttribute("user", user);
str = "loginSuccess";
}
return str;
}
user 能打印出值吗,应该是user的问题
这个是登录页面 我用的是struts2 能输出user的值
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录</title>
</head>
<body>
<form action="userAction-login" method="post">
account:<input type="text" name="user.name" maxlength="20"/><br/>
password:<input type="password" name="user.password" maxlength="16"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
us=com.lovo.service.UserServiceImpl@ffc3eb
user=com.lovo.po.User@1978933
进入了
ud=com.lovo.dao.UserDaoImpl@5e7663
u=李四
Hibernate: select user0_.u_id as u1_0_, user0_.u_name as u2_0_, user0_.u_parent as u3_0_, user0_.u_password as u4_0_, user0_.g_id as g5_0_ from tb_users user0_ where user0_.u_name=? and user0_.u_password=?
1
2013-11-28 22:54:05 org.apache.struts2.dispatcher.Dispatcher error
严重: Exception occurred during processing request: null
java.lang.NullPointerException
at com.sun.proxy.$Proxy6.findUser(Unknown Source)
at com.lovo.action.UserAction.login(UserAction.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
int i = us.findUser(user); 这一步执行不下去吧
us = (UserService)ac.getBean("usi");这个获取的us是null,所以
int i = us.findUser(user);这里就报了nullpoint
return pjp.proceed();