欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HandlerExceptionResolver异常的拦截及其restfull风格 传输url

程序员文章站 2022-07-15 15:47:49
...

异常拦截
在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