HandlerExceptionResolver异常的拦截及其restfull风格 传输url
异常拦截
在controller中不知道哪个 @RequestMapping("?")可能会抛出异常/为了将异常封装统一管理起来 spring提供了
HandlerExceptionResolver实现类
实现方法resolveException(请求,响应,对象,异常)
设置好之后我们需要将异常类对象放入到Spring中 <bean class="com.project.userpro.util.Exception"></bean> 这样spring就能管理到异常类/直接作用在全局异常捕获。
HandlerMethod hm=(HandlerMethod )handler ;
(HandlerMethod )导包import org.springframework.web.method.HandlerMethod;
如果报如下这样的错,说明包导错了
Request processing failed; nested exception is java.lang.ClassCastException: org.springframework.web.method.HandlerMethod cannot be cast to org.springframework.messaging.handler.HandlerMethod
hm.getMethod().getName获取异常出现的是哪个方法
异常.printStackTrace()在控制台上输出异常
代码区
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Exception implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, java.lang.Exception ex) {
HandlerMethod hm=(HandlerMethod )handler;
String me= hm.getMethod().getName();
System.out.println(me);
ex.printStackTrace();
ModelAndView mv=new ModelAndView("error.jsp");
mv.addObject("ee","我出错了");
return mv;
}
}
========================================================
restfull风格
//大括号可以传参至下面的@PathVariable 所定义的类型中/根据类型来返回参数
@RequestMapping("json/id/{tag}/str/{str}.job")
@ResponseBody
public String getJson(@PathVariable int tag,@PathVariable String str){
if (tag==0){
return "输入的值为0"+str;
}else if(tag==1){
return "输入的值为1"+str;
}else{
return "输入的值为2"+str;
}
}
//在访问时我们可以直接将值放入到地址中就能得到想要的json数据
http://localhost:8080/war/json/id/2/str/ppp.job
上一篇: Hash算法