• SpringMVC 05 结果跳转方式和接收请求参数及数据回显


    5.1 是否可以使用原生态的ServletAPI


    在讲 结果跳转方式之前,我们先来 讲一个 大家可能很感兴趣的一个事。就是 我们能不能 在 SpringMVC 程序里面 使用 ServletAPI。

    如果可以使用的话!!那么 灵活性就大大提高了。这样的话我们 以前学过的 原生态 Servlet 我们就也可以 用了。

    直接 在 方法里面 写两个 参数,一个参数 是 req 另一个是 resp

        @GetMapping("/test")
        public String test3(HttpServletRequest req, HttpServletResponse resp){
    
            HttpSession session = req.getSession();
            System.out.println(session.getId());
    
            return "hello";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    我们会发现,确实可以 使用。都能拿到 Session 了。那肯定 没问题的。
    为什么呢?因为这个 方法 是会被 servlet 程序 调用的,所以 这里面执行的代码,肯定 会有响应。


    5.2 结果跳转方式

    • return "资源文件的路径"这个就是转发 它帮你默认写了一个字符串前缀 forward: 所以 实现的 跳转方式 是 转发!

    • return "forward:资源文件的路径":这个也是转发。视图解析器不生效

    • return "redirect:资源文件的路径":这个是重定向。视图解析器不生效 但是重定向的话,可能会暴露资源文件的路径。因为重定向后地址栏就会跳转到 这个 资源文件路径的位置。

    切记:视图解析器 只会 在 你没有使用 forward 和 redirect 的时候 生效。

        @GetMapping("/hello")
        public String test3(HttpServletRequest req, HttpServletResponse resp){
    
            HttpSession session = req.getSession();
            System.out.println(session.getId());
    
            return "forward:WEB-INF/jsp/test.jsp";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述


    5.3 接收请求参数及数据回显

    1. 请求的参数,可以 直接从 方法那里的形参拿到。这一点 就很智能。我们不需要 用什么技巧,写什么 代码 去 获取这个参数数据。
    package top.muquanyu.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HelloController {
        @RequestMapping("/hello")
        public String hello(String name,Model model){
            // 封装需要传递过去的数据
            model.addAttribute("msg","Hello,SpringMVCAnnotation");
            System.out.println(name);
            return "hello"; // 会被 视图 解析器 处理,也就是 拼接 一个 资源的路径
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述
    给参数 起别名 不让其 进行 暴露 或者是 更加方便传参。

    @RequestParam(("username") String name) 这样的话 我们 请求url 写参数的时候 可以写为 username

    一般情况下,加上了这个东西。就是 显示的 说明 这个参数 就是 从前端 传递过来的数据。我们可能会用到 这个 参数传过来的数据。

    1. model 传递给前端数据

    在这里插入图片描述

    在这里插入图片描述

    1. modelMap:继承了 LinkedHashMap 的所有方法,在操作数据的时候,可能有更加全面的选择。

    在这里插入图片描述

  • 相关阅读:
    redis客户端Jedis和Lettuce
    普莱得电器IPO过会:拟募资5.6亿 为杨伟明及韩挺两家族控制
    Java如何将两个数组合并为一个数组呢?
    SpringBoot实现多数据源(四)【集成多个 Mybatis 框架】
    【文末附gpt升级方案】数据虚拟化技术:起源、发展及市场趋势
    R 语言 |普通矩阵怎么保存为稀疏矩阵的3列(i, j, x)格式?
    电脑ffmpeg.dll丢失原因解析,找不到ffmpeg.dll的5种解决方法
    玄机-第一章 应急响应-Linux日志分析
    请不要忽略软件测试的业务能力
    七天学会C语言-第五天(函数)
  • 原文地址:https://blog.csdn.net/qq_52606908/article/details/125898055