返回顶部
首页 > 资讯 > 后端开发 > Python >springboot 实战:异常与重定向问题
  • 654
分享到

springboot 实战:异常与重定向问题

2024-04-02 19:04:59 654人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot 异常与重定向1.下面先通过一个简单的例子实现页面的重定向2.通过一个更简单的方法实现重定向3.在重定向过程中,用session传递信息4.admin请求异常

springboot 异常与重定向

在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中的不同。

springboot 异常统一处理

这里先对需要使用到的注解或者类进行说明,顺便理清楚条理。

@ExceptionHandler:注解使用在方法上,值为指定某个异常,当该方法所在的controller出现的异常与注解的异常对应,则会触发注解的方法。

下面这个controller一旦出现异常都会将异常捕获转给该方法进行处理


@RestController
@RequestMapping("user")
public class UserController {
    @ExceptionHandler(value = Exception.class)
    public void solveException(){
        //异常处理逻辑
    }
    
}

@controllerAdvice: 注解在类上,注解的类会注册到spring容器中,类中可有三种注解,@ExceptionHandler,@InitBinder,@ModelAttribute。该类下只要是注解上面三个注解的方法就是让把方法应用到程序中所有带有@RequesMapping注解的方法上。

流程 :

  • 自定义一个自己的异常
  • 声明带有@ControllerAdvice的类和@ExceptionHandler的方法,将@ExceptionHandler的方法应用到所有controller。
  • 声明一个返回结果类
  • 声明一个枚举类,用来包含可能出现的异常类型

Demo

自定义异常:


@Data
@AllArgsConstructor
public class MyException extends RuntimeException{
    private Integer code;
    private String msg;
    public MyException(ResultEnum resultEnum){
        this.msg = resultEnum.getMsg();
        this.code = resultEnum.getCode();
    }
}

自定义返回结果:


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    private int code;
    private String msg;
}

枚举类:


public enum  ResultEnum {
    UNKNOW_ERROR(-1,"未知错误"),
    USER_ERROR(-2,"用户信息错误"),
    SUCCESS(0,"成功");
    private  Integer code;
    private  String msg;
    ResultEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    //省略getter和setter
}

工具类:


public class ResultUtil {
    public static Result error(Integer code, String msg) {
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}

自定义异常捕获类:


@ControllerAdvice
@Slf4j
public class MyExceptionHandler {
 //接收的是Exception,也就是只要是异常都会执行这方法
    @ExceptionHandler(value=Exception.class)
    @ResponseBody
    public Result handle(Exception e){
        if(e instanceof MyException){
            MyException myException = (MyException) e;
            return ResultUtil.error(myException.getCode(),myException.getMsg());
        }else{
            return ResultUtil.error(-1,"未知错误");
        }
    }
}

controller类:


@RestController
@RequestMapping("user")
public class UserController {
    @GetMapping("exception")
    public void catchException() throws Exception{
        throw new MyException(ResultEnum.USER_ERROR);
    }
 }

流程:

  • 我们访问http://localhost:8080/user/exception来访问该方法,并抛出我们自定义的异常,通过枚举类来进行对异常信息的集合
  • 通过自定义的异常捕获类,来进行对异常的捕获,执行方法。
  • 异常捕获类的方法中,通过ResultUtil工具类来进行生成Result对象返回。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: springboot 实战:异常与重定向问题

本文链接: https://lsjlt.com/news/160164.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot 实战:异常与重定向问题
    目录springboot 异常与重定向1.下面先通过一个简单的例子实现页面的重定向2.通过一个更简单的方法实现重定向3.在重定向过程中,用session传递信息4.admin请求异常...
    99+
    2024-04-02
  • springboot异常与重定向如何实现
    本篇内容主要讲解“springboot异常与重定向如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot异常与重定向如何实现”吧!springboot 异常与重定向在spri...
    99+
    2023-06-22
  • 基于springboot redirect重定向路径问题总结
    目录SpringMVC重定向视图RedirectView小分析前言实例讲解Controller代码我们通过firebug看下路径:总结SpringMVC重定向视图RedirectVi...
    99+
    2024-04-02
  • java实现重定向(springboot)
    一、如何重定向 最近有业务需要用到重定向,摸索了很久,下面是代码: @RestControllerpublic class FirstController { @PostMapping("/test") public voi...
    99+
    2023-09-13
    java spring boot servlet
  • Python 重定向和实时索引:常见问题解答
    在 Python 编程中,重定向和实时索引是两个常见的问题。本文将深入探讨这两个问题,并提供一些解决方案和示例代码。 一、什么是重定向? 在 Python 中,重定向是指将输出从一个文件流(例如标准输出)转移到另一个文件流或文件中。这在处...
    99+
    2023-10-24
    重定向 实时 索引
  • Python Load方法与重定向:异步编程中的挑战与机遇
    Python的异步编程在当今的计算机领域中越来越受欢迎。异步编程可以让Python在高负载环境下更好地运行,提高程序的性能和响应速度。然而,在异步编程中,重定向和Load方法可能会带来一些挑战和机遇。本文将介绍Python的Load方法和重...
    99+
    2023-06-15
    load 异步编程 重定向
  • SpringBoot中异常处理实战记录
    目录一、背景二、需求三、编写一些异常基础代码四、注意事项五、总结六、代码实现七、参考文档一、背景 在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢...
    99+
    2024-04-02
  • ASP 重定向:最佳实践和常见问题解决方案。
    ASP 重定向:最佳实践和常见问题解决方案 重定向是 Web 开发中常用的技术之一。重定向可以将一个页面或资源的请求转发到另一个 URL,通常是因为原始 URL 无效或需要跳转到其他页面。在 ASP 中,重定向是通过 Response.Re...
    99+
    2023-10-27
    重定向 打包 面试
  • 浅析Linux中重定向问题
    简介 在计算领域,重定向是大多数命令行解释器所具有的功能,包括各种可以将标准流重定向用户规定地点的Unix shells。类Unix操作系统的程序可以通过dup2系统调用完成重定向,或者通过缺少...
    99+
    2022-06-04
    重定向 Linux
  • linux操作之重定向问题
    目录一、概述二、输出重定向三、输入重定向1、命令解析2、实例解析四、深入理解重定向1、简介2、命令详解五、Here Document1、语法2、实例解析总结linux中的重定向也就是Shell中学习到的输入/输出重定向,...
    99+
    2023-04-26
    linux操作 linux重定向 linux重定向问题
  • springboot项目拦截器重定向循环问题的解决
    目录springboot项目拦截器重定向循环解决办法springboot拦截器无限循环报错springboot项目拦截器重定向循环 本菜鸟很久没写东西了,这回是解决了一个小问题,希望...
    99+
    2024-04-02
  • Linux 重定向实战教程:如何利用 ASP 实现网页重定向?
    在网络开发中,网页重定向是一个非常常见的需求。通过重定向,我们可以将用户引导到正确的页面,或者让用户访问最新的内容。在 Linux 系统中,我们可以通过 ASP 脚本语言来实现网页重定向,这篇文章将为您介绍如何利用 ASP 实现网页重定向...
    99+
    2023-10-28
    教程 linux 重定向
  • Java实战之OutOfMemoryError异常问题及解决方法
    目录一、简言二、代码实战1、Java堆溢出2、虚拟机栈和本地方法栈溢出3、运行时常量池溢出4、方法区溢出5、本机直接内存溢出三、JVM常用的启动参数四、面试题五、总结在Java虚拟机...
    99+
    2024-04-02
  • SpringBoot异常处理之异常显示的页面问题
    目录导言实现步骤加入thymeleaf依赖然后创建controller使用X进行模糊匹配统一错误页面显示导言 默认情况下,SpringBoot 项目错误页面如下: 直接这样太丑了...
    99+
    2024-04-02
  • ASP 与 Unix 容器的重定向问题:如何解决?
    随着容器技术的不断普及,越来越多的应用程序被部署在容器中运行。然而,在这个过程中,我们也遇到了一些问题,其中一个就是容器内的重定向问题。特别是在 ASP 应用程序中,这个问题更加突出。本文将介绍 ASP 应用程序在 Unix 容器中的重定...
    99+
    2023-08-14
    重定向 unix 容器
  • PHP 异步编程和 Laravel 重定向:解决这些常见问题的最佳方法
    PHP 是一种流行的编程语言,广泛用于 Web 开发。在开发 Web 应用时,异步编程和重定向是两个常见问题。Laravel 是一个流行的 PHP Web 框架,它提供了一些解决这些问题的最佳方法。本文将介绍 PHP 异步编程和 Lara...
    99+
    2023-10-17
    异步编程 laravel 重定向
  • SpringBoot全局异常问题如何解决
    这篇文章主要介绍“SpringBoot全局异常问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot全局异常问题如何解决”文章能帮助大家解决问题。SpringBoot 是为了...
    99+
    2023-07-06
  • SpringBoot实战之处理异常案例详解
    前段时间写了一篇关于实现统一响应信息的博文,根据文中实战操作,能够解决正常响应的一致性,但想要实现优雅响应,还需要优雅的处理异常响应,所以有了这篇内容。 作为后台服务,能够正确的处理...
    99+
    2024-04-02
  • PHP中NumPy响应重定向的问题与解决方案
    在PHP中,NumPy是一个非常受欢迎的数学库。然而,如果您在使用NumPy的过程中遇到了响应重定向的问题,那么您可能会发现您的代码无法正常工作。在本文中,我们将探讨PHP中NumPy响应重定向的问题,并提供解决方案。 什么是响应重定向?...
    99+
    2023-09-30
    numy 响应 重定向
  • Laravel 如何处理 Python 重定向问题?
    Laravel 是一款流行的 PHP 框架,而 Python 是一门热门的编程语言,两者常常被开发者同时使用。然而,在将这两者结合起来时,可能会遇到一些问题,比如 Python 的重定向问题。在本文中,我们将探讨 Laravel 如何处理 ...
    99+
    2023-10-25
    重定向 windows laravel
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作