spring boot 实战: 异常,重定向

在spring中,有两个重定向类型:

301,永久性跳转

302,暂时性跳转

默认调用302。

1.下面先通过一个简单的例子实现页面的重定向

@RequestMapping("/redirect/{code}")
    public RedirectView redirectView(@PathVariable("code") int code,
                               HttpSession session){

        RedirectView red = new RedirectView("/",true);
            //判断是不是301异常
            if (code == 301){
                //默认为302转移,此处设置为永久性转移
                red.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
            }
            return red;
    }

结果:

无论是访问“redirect/301”还是“redirect/302”,结果都会跳转到首页,只是一个是301类型,一个是302类型。

2.通过一个更简单的方法实现重定向

    @RequestMapping("/redirect/{code}")
    public RedirectView redirectView(@PathVariable("code") int code,
                               HttpSession session){

        //这种跳转都是302跳转,通过一个redirect前缀告诉请求,要跳转到首页
        //所有的redirect请求都会跳转到首页
        return "redirect:/";
    }

结果:

这种方式重定向,都是通过302的方式进行的,无论“redirect”后面的url是什么,因为只要识别到redirect这个前缀,就会跳转到首页。

3.在重定向过程中,用session传递信息

1.重定向页面
    @RequestMapping("/redirect/{code}")
    public String redirectView(@PathVariable("code") int code,
                               HttpSession session){

        //这种跳转都是302跳转,通过一个redirect前缀告诉请求,要跳转到首页
        //所有的redirect请求都会跳转到首页
        //通过session来传递信息
        session.setAttribute("msg","Jump from redirect");
        return "redirect:/";
    }
2.首页
    @RequestMapping("/")
    @ResponseBody
    public String index(HttpSession session){
        //在首页中显示重定向中的session
        return "Hello World!" + session.getAttribute("msg");
    }

结果:

无论redirect后面的url是什么,都会返回首页,并显示相应的信息。

4.admin请求异常

    @RequestMapping("/admin")
    @ResponseBody
    public String admin(@RequestParam("key") String key){
    //如果key=“admin”
        if ("admin".equals(key)){
            return "hello admin";
        }
    //否则抛出异常
        throw new IllegalArgumentException("Key Wrong!");
    }

结果:

在“key=admin”的时候,返回相应信息;在“key!=admin”的时候,返回错误信息。

5.自己定义异常:

   @ExceptionHandler()
    @ResponseBody
    public String error(Exception e){
        return "error:" + e.getMessage();
    }

结果:

可以看出,在出现异常的时候,使我们自己定义的异常界面内容,和4中的不同。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值