springmvc监听异常,监听当前controller的异常,
再controller中写入这个被@ExceptionHandler 注释的方法
@ExceptionHandler(Exception.class)//exception.class 表示所有的异常
public ModelAndView MyhandlerExcepion(Exception exception){
System.out.println(“当前controller发生异常,异常为”+exception.getMessage());
}
Public void test(){
int a = 0;
Int c = a/c;
}
运行代码在会话栏中出现System 打印的异常信息
全局异常:被@ControllerAdvice注释的类,会接受指定包中的各种异常,
相同的用@ExceptionHandler 来处理可能触发的不同的异常
ObjectMapper objectmapper = new ObjectMapper();
@ExceptionHandler(Exception.class)
public ModelAndView returnException(HttpServletRequest req,HttpServletResponse resp,Exception exception){
String title = exception.getClass().getName();
String msg= exception.getMessage;
StringBuffer stringbuffer = new StringBuffer();
String returnType= req.getHeader(“X-Requested-With”);
String conType = req.getContentType()==nul?””:req.getContentType().toLowerCase();
If(conType.contains(“application/json;”)||(returnType!=null&& returnType.equalsIgnoreCase(“XMLHttpRequest”))){
JsonMsg jsonmsg= new Jsonmsg();
jsonmsg.setMsg(msg);
jsonmsg.setCode(-1);
Jsonmsg.setState(true);
for(StackTraceElement st:Exception.getStackTrace()){
stringbuffer.append(st.toString());
stringbuffer.append(File.separator);
}
jsonmsg.setData(stringbuffer);
try{
PrintWriter writer = resq.getWriter();
writer.write(objectmapper .writerValueAsString(jsonmsg));
}
return new ModelAndView();
}else{
for(StackTraceElement st:Exception.getStackTrace()){
stringbuffer.append(st.toString());
stringbuffer.append(“<br>”);
}
ModelAndView mv = new ModelAndView(“/handlerException/errorPage”);
mv.addObject(“msg”,msg);
mv.addObject(“title”,title);
mv.addObject(“stringbuffer”,stringbuffer);
return mv;
}
}
监听全局异常 实现HandlerExceptionResolver 进行监听全局异常;
在配置文件中监听全局异常
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/simpleError/simpleDefaultErr"/>
<property name="exceptionAttribute" value="ex"/>
<property name="exceptionMappings">
<props>
<!--Key为需要特殊指定的异常完整类名,prop元素中指定页面的路径-->
<!--文件上传相关异常-->
<prop key="org.springframework.web.multipart.MultipartException">/simpleError/simpleDefaultErr
</prop>
<prop key="java.lang.ArithmeticException">/simpleError/arithmeticErr</prop>
</props>
</property>
</bean>
拦截器,在配置文件中配置拦截
<mvc:interceptors>
<mvc:interceptor>
<mvc:Mapping path=”/**”/>
</mvc:interceptor>
</mvc:interceptors>
Mybatis:
官方描述:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis
免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解
来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中
的记录。
配置mybetis
<configuration>
<properties resource=”java.properties”/>
<setting>
<setting name=”logImpl” value=”STDOUT_LOGGING”/>
</setting>
<environments default=”developmet”>
<environment id=”development”>
<transactionMapper tupe=”JDBC”/>
<dataSource type=”POOLED”>
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/th/mapping/SysZhuanyeMapper.xml"></mapper>
</mappers>
</configuration>