1、注解@ControllerAdvice用于处理全局异常,标注在处理异常类上。在类中的异常处理方法上标注@ExceptionHandler,即可处理整个项目中的同类异常。
@ControllerAdvice
public class GlobalException {
@ExceptionHandler(value = {java.lang.NullPointerException.class})
public ModelAndView ex1(){
ModelAndView mv = new ModelAndView();
mv.addObject("err",mv.toString());
mv.addObject("msg","请联系管理员");
mv.setViewName("ex/error");
return mv;
}
}
2、注解@Configuration用于定义一个配置类
3、注解@Override用于重写父类方法
4、注解@Service用于标注当前类是一个业务类,可以自动将当前类注入spring容器。
5、关键字implements,用于继承多个接口;关键字extends只能继承一个父类。
6、final,修饰变量,表示变量值不可改变;修饰方法,表示方法不可被子类重写。
7、HandlerExceptionResolver接口,用于全局异常捕获。接口中的方法resolveException有四个输入参数:
①HttpServletRequest httpServletRequest,
② HttpServletResponse httpServletResponse,
③Object o,
④Exception e
可返回异常的模型和视图:
public class ExceptionConfiguration implements HandlerExceptionResolver {
//处理异常的方法
//四个参数:请求对象,响应对象,数据对象,异常对象
@Override
public ModelAndView resolveException(
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o,
Exception e) {
//实例化对象
ModelAndView mv = new ModelAndView();
//将传入的e对象与具体异常判断
//空对象
if(e instanceof java.lang.NullPointerException){
mv.addObject("msg","空对象");
mv.setViewName("ex/error");
}
//数组索引越界
if(e instanceof java.lang.ArrayIndexOutOfBoundsException){
mv.addObject("msg","数组索引越界");
mv.setViewName("ex/error");
}
//字符串索引越界
if(e instanceof java.lang.StringIndexOutOfBoundsException){
mv.addObject("msg","字符串索引越界");
mv.setViewName("ex/error");
}
return mv;
}
}
8、关键字instanceof,左边是对象,右边是类;主要是用来判断左边的对象是否是右边的类及其子类所创建的对象;返回true或false。
9、Dao,是一个组件,数据访问接口,用来访问数据。
10、@Repository用于将Dao类标注为spring bean。