SpringMVC进阶(一)基础回顾及其高级应用

本文详细介绍了SpringMVC的高级技术,包括使用拦截器进行请求处理、处理multipart形式的数据(文件上传)以及在控制器中如何优雅地处理异常。此外,还特别讲解了如何利用Flash属性实现跨重定向请求的数据传递,确保参数的安全性和长度限制。通过实例代码展示了这些特性的应用。
摘要由CSDN通过智能技术生成

一. SpringMVC基础回顾

(一)Spring MVC 简介

Spring MVC 简介_舞鹤白沙编码日志-CSDN博客

(二)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;
    }

三. 本篇知识点全部代码示例

SpringMVC-demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

enterpc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值