`
weiqingfei
  • 浏览: 316744 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

@ExceptionHandler方法中redirect

    博客分类:
  • Java
阅读更多

在web开发中比较流行PRG(Post/Redirect/Get)做法,如果有数据输出的话,会放到session里。

对于@RequestMapping注解的方法,直接通过参数注入,把RedirectAttributes实例注入进去就好了

但是,对于@ExceptionHandler注解的方法,却不行。这是因为@ExceptionHandler注解处理类ExceptionHandlerMethodResolver没有RedirectAttributes参数进行处理,

实际上RedirectAttributes也只是个辅助类,最终还是要把内容输出到FlashMap里,我们可以直接输出。

代码如下:

 

@ControllerAdvice
public class GlobalControllerExceptionHandler {

	@ExceptionHandler(value=BusinessException.class)
	public String handleBusinessException(BusinessException bex, HttpServletRequest request){
		 FlashMap outputFlashMap = RequestContextUtils.getOutputFlashMap(request);
		 if (outputFlashMap != null){
			 outputFlashMap.put("exception", bex);
		 }
		return "redirect:/error";
	}
}

 像上面这种,只需要做ViewController到View的mapping,而不需要做处理的url,可以通过配置统一处理。

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
	@Override
	public void addViewControllers(ViewControllerRegistry registry) {
		registry.addViewController("/error").setViewName("error/business_error");
	}
}

 

分享到:
评论

相关推荐

    ssm整合Demo源文件_触发异常后跳转控制

    8. **全局异常处理**:除了在每个控制器方法上添加`@ExceptionHandler`,还可以创建一个全局的异常处理器,如实现`HandlerExceptionResolver`接口的类,这样可以在一处集中处理所有未被控制器处理的异常。...

    SpringMVC中一个Controller多个方法

    在实际项目中,我们还可以使用`@PathVariable`捕获URL路径中的动态参数,`@RequestParam`获取请求参数,`@RequestBody`读取请求体中的JSON或XML数据,以及`@ResponseBody`将方法返回值直接写入响应体。 另外,`@...

    Laravel开发-exception_handler

    在`exception-handler-master`这个压缩包中,可能包含了一个自定义的`ExceptionHandler`实现,或者是一些示例代码,帮助开发者了解如何在Laravel项目中自定义异常处理。解压并研究这个项目,可以帮助你更好地理解...

    跟开涛学SpringMVC(4.6)Controller接

    这个注解告诉Spring框架,这个类中的方法将负责处理来自客户端的请求。例如: ```java @Controller @RequestMapping("/users") public class UserController { // ... } ``` 在这个例子中,UserController类被标记...

    SpringMVC核心技术精讲.docx

    - 当处理器方法返回`ModelAndView`时,可以在`setViewName()`中添加`redirect:`前缀,如`mv.setViewName("redirect:/hello.jsp");` - 如果处理器方法返回`String`,则直接返回包含`redirect:`前缀的视图字符串,如`...

    基于注解的Spring mvc增删改DEMO

    - **添加(Create)**:在控制器中,使用@PostMapping注解定义一个方法来接收POST请求。例如: ```java @PostMapping("/add") public String add(@ModelAttribute("user") User user) { userService.addUser(user);...

    Spring MVC常用注解

    可以自动将符合条件的bean注入到当前类的属性或方法参数中。 以上就是 Spring MVC 中的一些常见注解,它们极大地简化了 Web 开发,提高了开发效率。在实际项目中,根据需求可以结合使用这些注解来构建灵活且可维护...

    SpringMVC-02教案1

    SpringMVC提供了全局异常处理机制,通过@ControllerAdvice和@ExceptionHandler注解,可以集中处理应用程序中可能出现的异常,返回统一的错误信息,提升用户体验。 7. **拦截器(Interceptor)**: SpringMVC的...

    spring—MVC的注解实例

    除了上述的注解,Spring MVC还有许多其他注解,如`@SessionAttributes`用于在session中存储模型数据,`@ExceptionHandler`用于全局异常处理,`@InitBinder`用于初始化数据绑定行为,等等。这些注解共同构建了一个...

    day01-SpringMVC入门.doc

    可以定义全局异常处理器,如`@ExceptionHandler`注解的方法,处理特定类型的异常,或者创建`@ControllerAdvice`注解的类来集中处理异常。 **环境搭建步骤:** 1. 创建`springmvc-servlet.xml`配置文件,配置...

    java初学框架springmvc

    - 局部异常处理:通过`@ExceptionHandler`注解在Controller中定义特定的异常处理方法。 - 全局异常处理:通过配置Global Exception Handler,如使用`@ControllerAdvice`注解的类,可以统一处理所有Controller中抛...

    springmvc4.2中文文档

    控制器中可能会包含一个或多个用@RequestMapping注解标注的方法来映射请求路径。 8. 使用@Controller注解定义一个控制器 @Controller注解告诉Spring这个类是一个控制器,这个控制器将处理用户的请求。 9. 使用@...

    springmvc搭建

    Controller是业务逻辑处理者,通常通过注解来定义路由和处理方法。Model用于存储数据,View则负责渲染视图,而ViewResolver则是视图解析器,用于根据给定的逻辑视图名找到实际的视图资源。 基于注解的配置是Spring ...

    spring MVC学习笔记

    3. **Redirect 和 Forward**:可以使用 `ModelAndView` 中的 `setViewName()` 分别实现重定向和转发。 **六、异常处理** 1. **@ExceptionHandler**:控制器方法可以处理特定的异常。 2. **Global Exception ...

    用springMVC做一个多页的用户注册过程

    3. **数据验证**:在`submitBasicInfo`方法中,可以使用`@Valid`注解配合自定义的验证注解(如`@Email`, `@NotBlank`等)进行服务器端验证。 4. **存储信息**:如果验证通过,可以将用户信息保存到临时会话或者...

    powernode_springmvc源码.zip

    Spring MVC 提供了@ControllerAdvice 和 @ExceptionHandler 注解,允许开发者统一管理全局异常,提高代码的可维护性。 9. **第十三章:权限拦截器** "ch12-interceptor-permission.rar"专注于权限验证的拦截器实现...

    Spring MVC面试题(2022最新版)

    - 对于GET请求,需要在控制器方法中手动处理编码问题,可以通过设置`request`对象的编码方式来解决: ```java public String handleRequest(HttpServletRequest request, HttpServletResponse response) throws ...

    初识SpringMVC

    使用@ControllerAdvice和@ExceptionHandler,可以在全局范围内统一处理异常,提高代码的可维护性。 总结,SpringMVC是Java Web开发的强大工具,它简化了MVC模式的实现,提高了开发效率,支持各种视图技术,提供了...

    Example_stuts

    8. **异常处理**:Struts2提供了全局异常处理机制,可以通过配置文件定义如何处理未捕获的异常,或者在Action类中使用`@ExceptionHandler`注解。 9. **插件系统**:Struts2有强大的插件体系,可以方便地扩展功能,...

    springmvc配置和实现登录小案例

    - **方法参数绑定**:在 login() 方法中,Spring MVC 可以自动将请求参数绑定到方法的形参,如 `@RequestParam("username") String username, @RequestParam("password") String password`。 - **视图跳转**:登录...

Global site tag (gtag.js) - Google Analytics