一. SpringMVC基础回顾
(一)Spring MVC 简介
(二)Spring Web MVC ⼯作流程
Spring Web MVC ⼯作流程_舞鹤白沙编码日志-CSDN博客
(三)请求参数绑定
SpringMVC如何接收请求参数_舞鹤白沙编码日志-CSDN博客
(四)对 Restful ⻛格请求⽀持
Springmvc对rest⻛格请求的支持_舞鹤白沙编码日志-CSDN博客
(五)Ajax Json交互
SpringMVC中Ajax Json交互_舞鹤白沙编码日志-CSDN博客
二. Spring MVC ⾼级技术
(一)拦截器(Inteceptor)使⽤
Spring MVC之拦截器(Inteceptor)的使⽤_舞鹤白沙编码日志-CSDN博客
(二)处理multipart形式的数据
SpringMVC中处理multipart形式的数据(文件上传)_舞鹤白沙编码日志-CSDN博客
(三)在控制器中处理异常
SpringMVC-在控制器中处理异常_舞鹤白沙编码日志-CSDN博客
(四)基于Flash属性的跨重定向请求数据传递
重定向时请求参数会丢失,我们往往需要重新携带请求参数,我们可以进⾏⼿动参数拼接如下:
return "redirect:handle01?name=" + name;
但是上述拼接参数的⽅法属于
get
请求,携带参数⻓度有限制,参数安全性也不⾼,此时,我们可以使⽤
SpringMVC
提供的
flflash
属性机制,向上下⽂中添加
flflash
属性,框架会在
session
中记录该属性值,当
跳转到⻚⾯之后框架会⾃动删除
flflash
属性,不需要我们⼿动删除,通过这种⽅式进⾏重定向参数传递,
参数⻓度和安全性都得到了保障,如下:
重定向时参数传递发送方:
/**
* SpringMVC 重定向时参数传递的问题
* 转发:A 找 B 借钱400,B没有钱但是悄悄的找到C借了400块钱给A
* url不会变,参数也不会丢失,一个请求
* 重定向:A 找 B 借钱400,B 说我没有钱,你找别人借去,那么A 又带着400块的借钱需求找到C
* url会变,参数会丢失需要重新携带参数,两个请求
*/
@RequestMapping("/handleRedirect")
public String handleRedirect(String name,RedirectAttributes redirectAttributes) {
//return "redirect:handle01?name=" + name; // 拼接参数安全性、参数长度都有局限
// addFlashAttribute方法设置了一个flash类型属性,该属性会被暂存到session中,在跳转到页面之后该属性销毁
redirectAttributes.addFlashAttribute("name",name);
return "redirect:handle01";
}
重定向参数传递接收方:
@RequestMapping("/handle01")
public ModelAndView handle01(@ModelAttribute("name") String name) {
int c = 1/0;
Date date = new Date();// 服务器时间
// 返回服务器时间到前端页面
// 封装了数据和页面信息的 ModelAndView
ModelAndView modelAndView = new ModelAndView();
// addObject 其实是向请求域中request.setAttribute("date",date);
modelAndView.addObject("date",date);
// 视图信息(封装跳转的页面信息) 逻辑视图名
modelAndView.setViewName("success");
return modelAndView;
}
三. 本篇知识点全部代码示例