日期:2014-05-19  浏览次数:21044 次

SSH架构登录注册是出现java.lang.NullPointerException 求解啊!
本人郁闷啊,难道UserService没有注入到Action中啊??求高人解答
java.lang.NullPointerException
com.portal.user.web.UserAction.login(UserAction.java:44)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

UserAction代码:
Java code
package com.portal.user.web;

import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.portal.user.model.User;
import com.portal.user.service.IUserService;

//通过实现ModelDriven来获取表单的内容
public class UserAction extends ActionSupport implements ModelDriven<User>{
    private static final Logger log =
        (Logger) LoggerFactory.getLogger(UserAction.class);
    private IUserService userService;
    
    private User model = new User();
    //private String username;  
    //private String password;
    //private String email;
    
    @Override
    public User getModel() {
        // TODO Auto-generated method stub
        return model;
    }
    //依赖注入业务逻辑组件
    public void setUserService(IUserService userService) {
        this.userService = userService;
    }
    
    /*
     * 处理用户登录
     * */
    public String login(){
        log.debug("user login!");
        Map session = ActionContext.getContext().getSession();
        //获取用户请求的表单的值
        try{
            //查找是否有该用户
            int va = userService.login(model.getUserName(), model.getPassWord());
            //如果没有,返回错误界面
            if(va!=-1){
                //把用户名放入session对象
                session.put("username", model.getUserName());
                userService.addUser(model);
                return SUCCESS;
            }
        }catch(RuntimeException e){
            log.error("login failed", e);
            throw e;
        }
        return LOGIN;
    }
    
    /**
     * 用户注册
     * */
    public String register()throws Exception{
        log.debug("User register!");
        int emailnum=1;
        //try{
            //查找用户名是否已经存在
            int va = userService.findUserByName(model.getUserName());
            if(va!=-1){
                //邮箱是否注册过了
                emailnum = userService.findByEmail(model.getEmail());
                if(emailnum!=-1){
                    userService.addUser(model);
                    return SUCCESS;
                }
            }
        return INPUT;
    }
}



application中的配置:
XML code
<bean id="UserDAO" class="com.portal.user.dao.UserDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory"></ref>
        </property>
    </bean>
    <!-- 部署业务逻辑组件,并把它所依赖的DAO组件注入到业务逻辑组件中 -->
    <bean id="UserService" class="com.portal.user.service.UserService">
        <property name="userDAO" ref="UserDAO"></property>
    </bean>
    <!-- 把业务逻辑组件注入到Action中 -->
    <bean id="UserAction" class="com.portal.user.web.UserAction">
        <property name="userService" ref="UserService"></property>
    </bean>


本人根据异常的断点来看
44行的 int va = userService.login(model.ge