<--model--->import javax.persistence.*;public class User {

private int  id;

private String user;

private String pass;

public int getId() {
return id;
} /**
 * @param id the id to set
 */
public void setId(int id) {
this.id = id;
} /**
 * @return the user
 */
public String getUser() {
return user;
} /**
 * @param user the user to set
 */
public void setUser(String user) {
this.user = user;
} /**
 * @return the pass
 */
public String getPass() {
return pass;
} /**
 * @param pass the pass to set
 */
public void setPass(String pass) {
this.pass = pass;
}
}
<--action--如下>
public class UserAction  extends ActionSupport implements ModelDriven<User>{ private User model = new User();
protected UserManager mgr  ;


public User getModel() {
// TODO Auto-generated method stub
return model;
}
/**
 * @return the mgr
 */
public UserManager getMgr() {
return mgr;
}
/**
 * @param mgr the mgr to set
 */
public void setMgr(UserManager mgr) {
this.mgr = mgr;
}


public String execute() throws Exception
{

Map session = ActionContext.getContext().getSession();

int id = mgr.loginValid(model);
 

if(id > 0)
{
session.put("userId", model.getId());

return SUCCESS;
}
else {
return  ERROR;
}

}}<applicationcontex.xml----如下>
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>




<bean id="mgr" class="com.luke.user.service.UserManagerImpl">
  <property name="userDao" ref = "userDao"></property>
</bean>
<bean id="userDao" class="com.luke.user.dao.UserDaoHibernate">
   <property name="sessionFactory" ref="sessionFactory"></property>
</bean>


<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
 </bean> 
 
</beans>
<---struts.xml--如下>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>  <package name="action" namespace="/"  extends ="struts-default">
    <action name="login" class="com.luke.action.UserAction">
          <result name="success">suc.jsp</result>
          <result name="error">error.jsp</result>
    </action>
    
  </package>
</struts>    
<web.xml--如下--><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  
  <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>
  
  <filter>
   <filter-name>struts2</filter-name>
   <filter-class>
   org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
   </filter-class>
  </filter>
  <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>
    </web-app>错误是这样的。。:java.lang.NullPointerException
com.luke.action.UserAction.execute(UserAction.java:54)
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)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

解决方案 »

  1.   

    protected UserManager mgr;
    mgr为null
      

  2.   

    异常信息已经很详细了,具体的代码函数已经给出,请查看相应位置代码
    java.lang.NullPointerException
    com.luke.action.UserAction.execute(UserAction.java:54)
    [/code]
      

  3.   

    com.luke.action.UserAction.execute(UserAction.java:54)int id = mgr.loginValid(model); //确实错在此处  

    if(id > 0)
    {
    session.put("userId", model.getId());

    return SUCCESS;
    }
    else {
    return  ERROR;
    }UserManager.java 是个借口类
    UserManagerImp.java 是其实现类 
    代码是:public class  UserManagerImpl  implements UserManager{

     private UserDao userDao; public int addUser(User user) throws Exception {
    try
    {
    userDao.save(user);
    return user.getId();

    }
    catch(Exception e)
    {
    e.printStackTrace();
    throw new Exception("new user can not insert ");
    }
     
    } public int loginValid(User user) throws Exception {
     
    try
    {
    User u =  userDao.findUserByNameAndPass(user.getUser(),user.getPass());
    if (u !=null)
    {
    return u.getId();
    }
    }
    catch(Exception e)
    {
    e.printStackTrace();
    throw new Exception("there are wrongs in logining...");
    }
    return -1;
     
    } public Boolean validateName(String name) throws Exception {
    try
    {
    if(userDao.findUserByName(name) ==null)
    {
    return true;
    }
    return false;
    }
    catch(Exception e)
    {
    e.printStackTrace();
    throw new Exception("there are wrongs in validing...");
    }
     
    } /**
     * @return the userDao
     */
    public UserDao getUserDao() {
    return userDao;
    }
    mgr  不需实例化吧   ,当需要的时候 可由 spring 容器注入吧
    /**
     * @param userDao the userDao to set
     */
    public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
    }
      

  4.   

    <bean id="mgr" class="com.luke.user.service.UserManagerImpl">
    <property name="userDao" ref = "userDao"></property>
    </bean>
    <bean id="userDao" class="com.luke.user.dao.UserDaoHibernate">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>这个顺序颠倒了,先声明下面的userDao然后在引用
      

  5.   

    你数据库里面的id列换成user_id试试
      

  6.   

    spring没有把mgr注入给UserAction,你也没有自己去实例化,所以在调用loginValid()方法时报空指针异常
      

  7.   


    恩,mgr是空的 
    可 调好后又出下面的错误了。。
      

  8.   

    java.lang.reflect.InvocationTargetException 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)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
      

  9.   

    ok ,thank you all..好像解决了  。