Spring MVC异常处理 和 重定向传递数据

时间:2023-01-06 16:07:14

1.异常处理介绍

  Spring在web项目中,如果在请求处理时出现异常,那输出会是Servlet响应。这时异常需要以某种方式转换为响应。

  Spring将异常转换为响应的方式:

    a.特定的Spring异常将自动映射为指定的HTTP状态码;

    b.异常上添加@ResponseStatus注解,从而将其映射为某一个HTTP状态码;

    c.方法上添加@ExceptionHandler注解,使其处理异常。

2.异常处理代码

     @RequestMapping("getPathVariable/{id}")
public String getPathVariable(
@PathVariable("id") String id){
if("error".equals(id)){
throw new SpittleException();
}
return "index";
}
 package com.taozhiye.controller;

 import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus; @ResponseStatus(
//
value = HttpStatus.NOT_FOUND,
reason = "Spittle not found"
)
public class SpittleException extends RuntimeException { }

  正常情况下,当id为error时,会报错,这时是500错误,我们可以通过@ResponseStatus注解,映射到404状态码上,进行简单的异常处理。

  第二种方法是报相应的异常,直接跳转到错误页面。

 package com.taozhiye.controller;

 import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; @ControllerAdvice
public class AppExcepitonHandler { @ExceptionHandler(Exception.class)
public String deal(){
System.out.println("出现异常");
return "index";
}
}

3.重定向传值

     @RequestMapping("getPathVariable/{id}")
public String getPathVariable(
@PathVariable("id") String id,
Model model,
RedirectAttributes model2){
if("error".equals(id)){
throw new SpittleException();
}else if("findAll".equals(id)){
/**
* 重定向传参数:
* 相当于把参数写到session中,
* 如果重定向到controller的时候,用@ModelAttribute接收
* 如果重定向到页面,可以直接接收
*/
model2.addFlashAttribute("flash", "flash");
/**
* 通过url模板进行重定向
*/
return "redirect:/{id}";
}else if("index".equals(id)){
// model.addAttribute("id", id);
/**
* 转发不可以使用模板
*/
// return "/{id}";
model2.addFlashAttribute("flash", "flash");
/**
* 通过url模板进行重定向
*/
return "index";
}else{
return "ajax1";
}
}
@RequestMapping("/findAll")
@ResponseBody
public List<User> findAll(@ModelAttribute("flash") String flash){
System.out.println("flash:"+flash);
return userService.findUserAll();
} @RequestMapping("/index")
@ResponseBody
public List<User> index(Map<String, Object> map,@ModelAttribute("flash")String flash){
System.out.println("flash:"+flash);
return userService.findUserAll();
}
 重定向传参数:
    相当于把参数写到session中,
      如果重定向到controller的时候,用@ModelAttribute接收
      如果重定向到页面,可以直接接收

Spring MVC异常处理 和 重定向传递数据的更多相关文章

  1. spring跨重定向传递数据

    spring跨重定向传递数据 为何要重定向? 作用之一:防止表单重复提交 如何重定向? // 在控制器方法返回的视图名称中,以redirect:开头的String不是用来查找视图的,而是用来指导浏览器 ...

  2. Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...

  3. 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装

    浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...

  4. Spring MVC—数据绑定机制,数据转换&comma;数据格式化配置,数据校验

    Spring MVC数据绑定机制 数据转换 Spring MVC处理JSON 数据格式化配置使用 数据校验 数据校验 Spring MVC数据绑定机制 Spring MVC解析JSON格式的数据: 步 ...

  5. Spring MVC 3&period;0 返回JSON数据的方法

    Spring MVC 3.0 返回JSON数据的方法1. 直接 PrintWriter 输出2. 使用 JSP 视图3. 使用Spring内置的支持// Spring MVC 配置<bean c ...

  6. Maven 工程下 Spring MVC 站点配置 &lpar;二&rpar; Mybatis数据操作

    详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...

  7. 【ASP&period;NET MVC系列】浅谈ASP&period;NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  8. Spring MVC异常处理SimpleMappingExceptionResolver

    Spring MVC异常处理SimpleMappingExceptionResolver[转] (2012-12-07 13:45:33) 转载▼ 标签: 杂谈 分类: 技术分享 Spring3.0中 ...

  9. Spring MVC异常处理代码完整实例

    Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean

随机推荐

  1. JS身份证号码校验

    var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 var ValideCode = [ 1, 0 ...

  2. java多线程系列6-阻塞队列

    这篇文章将使用经典的生产者消费者的例子来进一步巩固java多线程通信,介绍使用阻塞队列来简化程序 下面是一个经典的生产者消费者的例子: 假设使用缓冲区存储整数,缓冲区的大小是受限制的.缓冲区提供wri ...

  3. C&num;主要支持 5 种动态创建对象的方式

    C#主要支持 5 种动态创建对象的方式: 1. Type.InvokeMember 2. ContructorInfo.Invoke 3. Activator.CreateInstance(Type) ...

  4. spring-webmvc 4&period;3&period;4 与 freemarker、easyui 整合

    一.所需lib包 二.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xm ...

  5. WF工作流与管理类应用系统工作流需求实现的一些误区

             如今实现各种应用系统大家都知道工作流是一个非常重要的环节,不同的业务系统的工作流需求是需要找相应的工作流产品去实现的,因为不同工作流产品的架构细节也许会成为某类需求实现的瓶颈. WF ...

  6. typedef与define

    一.typedef用法 typedef常用来定义一个标识符及关键字的别名,它生效是在语言编译过程,但它并不实际分配内存空间.typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性” ...

  7. CentOS7安装Hadoop2&period;7流程

     准备3个虚拟机节点 其实这一步骤非常简单,如果你已经完成了第2步,此时你已经准备好了第一个虚拟节点,那第二个和第三个虚拟机节点如何准备?可能你已经想明白了,你可以按第2步的方法,再分别安装两遍lin ...

  8. 前端程序员的蜕变——JS的 event 对象属性、使用实例、兼容性处理&lpar;极大提高代码效率、减少代码量&rpar;

    下面讨论一下 js 中的 Event 对象,主要从以下三个方面详细的描述(点击标题可跳转到对应部分): 1.什么是event 2.怎么用event,用他该注意什么,几个简单实际应用 3.event在不 ...

  9. Linux学习——shell编程之正则表达式和字符处理命令

    shell编程之正则表达式 一 正则表达式 1 什么是正则表达式 正则表达式用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分隔.匹配.查找及替换操作. 2 shell编程之正则表达式 ...

  10. maven&lpar;项目管理工具系列 maven 总结二&rpar;

    ♣maven是什么? ♣maven下载.安装 ♣了解maven仓库 ♣eclipse配置maven ♣创建maven项目 ♣把maven项目转化为web项目 1.maven是什么? Maven是一个项 ...