SpringMVC中的异常处理(二)

2014-11-24 08:07:28 · 作者: · 浏览: 2
uestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.jadyer.exception.UserException;
import com.jadyer.model.User;

/**
* SpringMVC中的异常处理方式
* @see 第一步:创建自定义异常类
* @see 第二步:在Controller中创建一个用于截获并处理异常方法,方法名可随意
* 然后在方法上标注@ExceptionHandler(你的自定义异常类名.class)
* 接着就可以在该方法内部,进行符合我们业务逻辑的异常处理
* @see 第三步:在需要抛异常的地方抛出来就行了,第二步所创建的方法会自动截获并处理的
* @author http://blog.csdn/net/jadyer
* @create May 12, 2012 7:28:31 PM
*/
@Controller
@RequestMapping("/user")
@SessionAttributes("loginUser")
public class UserController {
private final static Map users = new HashMap();

//模拟数据源,构造初始数据
public UserController(){
users.put("张起灵", new User("张起灵", "闷油瓶", "02200059", "menyouping@yeah.net"));
users.put("李寻欢", new User("李寻欢", "李探花", "08866659", "lixunhuan@gulong.cn"));
users.put("拓拔野", new User("拓拔野", "搜神记", "05577759", "tuobaye@manhuang.cc"));
users.put("孙悟空", new User("孙悟空", "美猴王", "03311159", "sunhouzi@xiyouji.zh"));
}

/**
* 用于异常处理的方法
*/
@ExceptionHandler(UserException.class)
public String myExceptionHandler(Exception ex, HttpServletRequest request){
request.setAttribute("myex", ex);
return "error";
}

/**
* 用户登录
* @see SpringMVC会自动收集表单控件值,赋给方法的同名参数上
*/
@RequestMapping(value="/login", method=RequestMethod.POST)
public String login(String username, String password, Model model){
if(!users.containsKey(username)){
throw new UserException("用户不存在");
}
if(!users.get(username).getPassword().equals(password)){
throw new UserException("密码不正确");
}
model.addAttribute("loginUser", users.get(username)); //将登录用户信息放到HttpSession中
return "user/loginSuccess";
}
}


摘自 半步多