本人郁闷啊,难道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!");
}
}