七舍 2012-03-25 13:04
浏览 243
已采纳

SSH做登录时,service不能注入到action,这是为什么啊

本人郁闷啊,难道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{
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





<!-- 部署业务逻辑组件,并把它所依赖的DAO组件注入到业务逻辑组件中 -->



<!-- 把业务逻辑组件注入到Action中 -->



service代码:
package com.portal.user.service;

import java.util.List;

import com.portal.user.dao.IUserDAO;
import com.portal.user.model.User;

public class UserService implements IUserService {

private IUserDAO userDAO;
/*
 * 通过set注入
 * */
public void setUserDAO(IUserDAO userDAO) {
    this.userDAO = userDAO;
}

/*
 * 增加用户信息
 * */
@Override
public void addUser(User user) {
    // TODO Auto-generated method stub
   userDAO.save(user);
}
/*
 * 通过ID删除用户
 * */
@Override
public void deleteUser(Integer id) {
    // TODO Auto-generated method stub
    userDAO.delete(id);
}
/*
 * 查找所有用户
 * */
@Override
public List<User> findAllUser() {
    // TODO Auto-generated method stub
    return userDAO.findAll();
}
/*
 * 通过ID查找用户
 * */
@Override
public User findUserById(Integer id) {
    // TODO Auto-generated method stub
    return userDAO.findById(id);
}
/*
 * 通过用户名查找用户
 * */
@Override
public Integer findUserByName(String username) {
    // TODO Auto-generated method stub
    List<User> ul = userDAO.findByUserName(username);
    if(ul.size()>0){
        return -1;
    }
    return 1;
}
/*
 * 用户登录
 * */
@Override
public Integer login(String username, String password) {
    // TODO Auto-generated method stub
    //查找用户
    User ul = userDAO.findByUserNameAndPassWord(username, password);
    //如果没有就返回N-1
    if(null==ul){
        return -1;
    }
    return ul.getUserId();
}
/*
 * 修改用户信息
 * */
@Override
public void updateUser(User user) {
    // TODO Auto-generated method stub
    userDAO.update(user);
}
/*
 * 查找邮箱是否存在
 * */
@Override
public Integer findByEmail(String email){
    if(userDAO.findByEmail(email)==null)
       return -1;
    return 1;
}
public void Test(){
    System.out.print("in the UserService!");
}

}

  • 写回答

3条回答 默认 最新

  • ll89308839 2012-03-25 20:04
    关注

    需要把struts的action交给spring来管理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 luckysheet
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱