一个struts2 和Hibernate集成项目

急行的笨蛋蜗牛 2015-06-19 08:58:24
控制台没有出错信息。
只是点登陆时页面出现这个:
type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
action.ManagerAction.LoginUsers(ManagerAction.java:21)
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:606)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.20 logs.

这是action代码:
package action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

import dao.impl.UserDAO;
import model.User;


@SuppressWarnings("serial")
public class ManagerAction extends ActionSupport {
private User user;
private UserDAO userDAO;
private String userName;
private String password;
private String roleName;
private String tel;

public String LoginUsers(){
User u=userDAO.validateUser(getUserName(), getPassword());
if(u!=null)
{
return SUCCESS;
}

return ERROR;

}

public String AddUsers(){
User u=userDAO.addUser(getUserName(), getPassword(), getRoleName(), getTel());
if(u!=null)
{
return SUCCESS;
}
return ERROR;
}

public String SelectUsers(){
boolean validated=false;
User u=userDAO.selectUser(getUserName());
if(u!=null)
{
validated=true;
}
if(validated)
{
return SUCCESS;
}
else
{
return ERROR;
}
}
public String DeleteUsers(){
boolean validated=false;
User u=userDAO.deleteUser(getUserName());
if(u!=null)
{
validated=true;
}
if(validated)
{
return SUCCESS;
}
else
{
return ERROR;
}

}
public String UpdateUsers(){
boolean validated=false;
User u=userDAO.deleteUser(getUserName());
if(u!=null)
{
validated=true;
}
if(validated)
{
return SUCCESS;
}
else
{
return ERROR;
}

}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setTel(String tel){
this.tel=tel;
}
public String getTel() {
return tel;
}

public void setRoleName(String roleName){
this.roleName=roleName;
}

public String getRoleName() {
return roleName;
}

}
这是UserDAO代码:
package dao.impl;

import java.util.List;

import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.Transaction;

import model.User;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import dao.BaseDAO;
import dao.IUserDAO;


public class UserDAO extends BaseDAO implements IUserDAO {

public User validateUser(String userName, String password) {

String hql="FROM User u WHERE u.userName=? AND u.password=?";

Session session=getSession();
Query query=session.createQuery(hql);
query.setParameter(0, userName);
query.setParameter(1, password);
List users=query.list();
session.close();
if (users.size()>0) {
User user=(User) users.get(0);
return user;
}

return null;

}

public User addUser(String userName,String password,String roleName,String tel){
String hql="insert into User u values('?','?','?','?')";
Session session=getSession();
Query query=session.createQuery(hql);
query.setParameter(0, userName);
query.setParameter(1, password);
query.setParameter(2, roleName);
query.setParameter(3, tel);
query.executeUpdate();
return null;
}

@Override
public User selectUser(String userName) {
String hql="FROM User u WHERE u.userName=?";
Session session=getSession();
Query query=session.createQuery(hql);
query.setParameter(0, userName);
User user=(User)query.list();
return user;
}

@Override
public User deleteUser(String userName) {
String hql="delete User where userName=?";
Session session=getSession();
Query query=session.createQuery(hql);
query.executeUpdate();
return null ;
}

@Override
public User updateUser(String userName) {
String hql="FROM User u WHERE u.userName=?";
Session session=getSession();
Query query=session.createQuery(hql);
User user=(User)query.list();
return user;
}


}

这是怎么回事啊,求大神指点??????
...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
无极丶 2015-06-22
  • 打赏
  • 举报
回复
spring依赖注入 通过反射 new了对象
Goring-Virtue 2015-06-20
  • 打赏
  • 举报
回复
spring 是通过依赖注入的
  • 打赏
  • 举报
回复
引用 1楼Alisaye 的回复:
晕,自己解决问题了,不过有有了新的疑问?? action中不能用private UserDAO userDAO; 改成UserDAO UserDAO=new UserDAO();就行了。 问什么在加载了spring框架后就行呢????
加载spring后是将dao和action的初始化交给spring管理,spring会通过依赖注入的,这时候就不需要自己new一个对象了
  • 打赏
  • 举报
回复
能帮我看看这个action和DAO吗,为什么不能增删改查啊: package action; import java.util.List; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import dao.impl.UserDAO; import model.User; @SuppressWarnings("serial") public class ManagerAction extends ActionSupport { private User user; //private IUserDAO userDAO; //为何不行?? //IUserDAO userDAO=new UserDAO();//这个呢?? UserDAO userDAO=new UserDAO(); private int userId; private String userName; private String password; private String roleName; private String tel; public String LoginUsers(){ User u=userDAO.validateUser(getUserName(), getPassword()); if(u!=null) { return SUCCESS; } return ERROR; } public String AddUsers(){ int u=userDAO.addUser(getUserId(),getUserName(), getPassword(), getRoleName(), getTel()); if(u>0) { return SUCCESS; } return ERROR; } public String SelectUsers(){ User u=userDAO.selectUser(getUserName()); if(u!=null) { Map session=(Map)ActionContext.getContext().getSession(); session.put("user",u); session.put("userName", user.getUserName()); session.put("trueName", user.getRoleName()); session.put("password", user.getPassword()); session.put("tel", user.getTel()); return SUCCESS; } return ERROR; } public String DeleteUsers(){ int u=userDAO.deleteUser(getUserName()); if(u>0) { return SUCCESS; } return ERROR; } public String UpdateUsers(){ User u=userDAO.updateUser(getUserName()); if(u!=null) { return SUCCESS; } return ERROR; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public int getUserId() { return userId; } public void setUserId(int userId){ this.userId=userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public void setTel(String tel){ this.tel=tel; } public String getTel() { return tel; } public void setRoleName(String roleName){ this.roleName=roleName; } public String getRoleName() { return roleName; } } DAO: package dao.impl; import java.util.List; import model.User; import org.hibernate.Query; import org.hibernate.Session; import dao.BaseDAO; import dao.IUserDAO; public class UserDAO extends BaseDAO implements IUserDAO { public User validateUser(String userName, String password) { String hql="FROM User u WHERE u.userName=? AND u.password=?"; Session session=getSession(); Query query=session.createQuery(hql); query.setParameter(0, userName); query.setParameter(1, password); List users=query.list(); session.close(); if (users.size()>0) { User user=(User) users.get(0); return user; } return null; } public int addUser(int userId,String userName,String password,String roleName,String tel){ String hql = "insert into User u (u.userId,u.userName,u.password,u.roleName,u.tel) values(?,?,?,?,?)"; Session session=getSession(); Query query=session.createQuery(hql); List user=query.list(); query.setParameter(0, userId); query.setParameter(1, userName); query.setParameter(2, password); query.setParameter(3, roleName); query.setParameter(4, tel); int users=query.executeUpdate(); return users; } @Override public User selectUser(String userName) { String hql="FROM User u WHERE u.userName=?"; Session session=getSession(); Query query=session.createQuery(hql); query.setParameter(0, userName); List users=query.list(); //因为返回值为List。 session.close(); if (users.size()>0) { User user=(User) users.get(0); return user; } return null; } @Override public int deleteUser(String userName) { String hql="delete User u where u.userName=?"; Session session=getSession(); Query query=session.createQuery(hql); query.setParameter(0, userName); int users=query.executeUpdate(); session.close(); return users; } @Override public User updateUser(String userName) { String hql="FROM User u WHERE u.userName=?"; Session session=getSession(); Query query=session.createQuery(hql); List users=query.list(); session.close(); if (users.size()>0) { User user=(User) users.get(0); return user; } return null; } }
  • 打赏
  • 举报
回复
晕,自己解决问题了,不过有有了新的疑问?? action中不能用private UserDAO userDAO; 改成UserDAO UserDAO=new UserDAO();就行了。 问什么在加载了spring框架后就行呢????

67,513

社区成员

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

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