Spring MVC异常处理 和 重定向传递数据
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异常处理 和 重定向传递数据的更多相关文章
- spring跨重定向传递数据
spring跨重定向传递数据 为何要重定向? 作用之一:防止表单重复提交 如何重定向? // 在控制器方法返回的视图名称中,以redirect:开头的String不是用来查找视图的,而是用来指导浏览器 ...
- Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
阅读目录 1. 通过HttpServletRequest获得请求参数和数据 2. 处理方法形参名==请求参数名 3. 如果形参名跟请求参数名不一样怎么办呢?用@RequestParam注解 4. 用实 ...
- 0056 Spring MVC如何接收浏览器传递来的请求参数--request--形参--实体类封装
浏览器总会向服务器传递一些参数,那么Spring MVC如何接收这些参数? 先写个简单的html,向服务器传递一些书籍信息,如下: <!DOCTYPE html> <html> ...
- Spring MVC—数据绑定机制,数据转换,数据格式化配置,数据校验
Spring MVC数据绑定机制 数据转换 Spring MVC处理JSON 数据格式化配置使用 数据校验 数据校验 Spring MVC数据绑定机制 Spring MVC解析JSON格式的数据: 步 ...
- Spring MVC 3.0 返回JSON数据的方法
Spring MVC 3.0 返回JSON数据的方法1. 直接 PrintWriter 输出2. 使用 JSP 视图3. 使用Spring内置的支持// Spring MVC 配置<bean c ...
- Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作
详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- Spring MVC异常处理SimpleMappingExceptionResolver
Spring MVC异常处理SimpleMappingExceptionResolver[转] (2012-12-07 13:45:33) 转载▼ 标签: 杂谈 分类: 技术分享 Spring3.0中 ...
- Spring MVC异常处理代码完整实例
Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean
随机推荐
- Android开发 - 掌握ConstraintLayout(一)传统布局的问题
在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面.随着 ...
- HTML5之FileReader文件读取接口
FileReader用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据. 1.FileReade ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
- [译]ElasticSearch vs. Solr
在Gen2产品的早期阶段, 我们事实上是失败的, 这促使我们重新审视我们现有的技术栈. 我们仔细分析系统中的每个独立的组件,并记录下来, 当然其中也包括构成我们核心功能的搜索引擎技术. 在我们的通用日 ...
- win10 插入16k采样的耳机无法播放和录音的问题定位
平时做智能耳机,需要经常在windows上测试不同采样率的声音信号.可是,最近在16k双声道输入的情况下, 无论系统都使用该耳机进行播放,该问题思索了好久,一直没有解决办法. 今天无意中使用了wind ...
- 机器学习技法笔记:16 Finale
Roadmap Feature Exploitation Techniques Error Optimization Techniques Overfitting Elimination Techni ...
- 深度解析 Vue 响应式原理
深度解析 Vue 响应式原理 该文章内容节选自团队的开源项目 InterviewMap.项目目前内容包含了 JS.网络.浏览器相关.性能优化.安全.框架.Git.数据结构.算法等内容,无论是基础还是进 ...
- listview监听组件内容变化
package com.meizu.ui.gifts; import android.app.Activity; import android.content.Context; import andr ...
- FCKEditor的使用步骤
在线发布信息难免要用到在线编辑器,下面就说下在线编辑器的使用步骤: 1.下载FCK,这个不说了 2.把ZZGSEditor文件夹放到网站根目录 3.把FredCK.FCKeditorV2.dll文件放 ...
- Shell 函数定义与调用
linux shell 可以用户定义函数,然后在 shell 脚本中可以随便调用. 以一个计算两数之和的函数为例: #! /bin/bash # 函数定义 sum(){ return $(($1+$2 ...