SpringMVC 学习(五)转发,重定向和传参

6. 转发和重定向

Spring MVC 的底层是 servlet,因此在 Spring MVC 中也存在转发和重定向的概念。

  • 对于转发而言,其目的页面可以在 WEB-INF 目录下
  • 重定向的目的页面不允许在 WEB-INF 目录下,因为重定向相当于用户再次发起一次请求,而用户不允许直接访问 WEB-INF 目录下的资源。

6.1 转发

使用 forward: 即可实现转发

  • 转发至目的页面:forward:目的页面相对站点的路径

    return "forward:WEB-INF/jsp/test.jsp";

  • 转发至控制器:forward:控制器

    return "forward:/restAdd/1/2";

处理器适配器在返回 ModelAndView 时默认使用转发方式

6.2 重定向

使用 redirect: 即可实现重定向

  • 重定向至目的页面:redirect:目的页面相对站点的路径

    return "redirect:index.jsp";

  • 重定向至控制器:redirect:控制器

    return "redirect:/restAdd/1/2";

重定向与转发不可使用 RestFul 风格直接在浏览器带参数进行访问

7. 接收请求参数和数据回显

7.1 请求参数接收

  • 请求参数与被请求函数形参名称相同

    http://localhost:8080/user/rec?name=why

    @Controller
    @RequestMapping("/user")
    public class UserController {@GetMapping("/rec")public String rec(String name, Model model) {System.out.println("name: " + name);model.addAttribute("msg", "name: " + name);return "test";}
    }
    
  • 请求参数与被请求函数形参名称不同

    http://localhost:8080/user/rec?username=why

    @Controller
    @RequestMapping("/user")
    public class UserController {@GetMapping("/rec")public String rec(@RequestParam("username") String name, Model model) {System.out.println("name: " + name);model.addAttribute("msg", "name: " + name);return "test";}
    }
    
  • 被请求函数形参为对象

    http://localhost:8080/user/recObj?id=1&name=why&age=1

    @Controller
    @RequestMapping("/user")
    public class UserController {@GetMapping("/recObj")public String recObj(User user, Model model) {System.out.println("user: " + user);model.addAttribute("msg", "user: " + user);return "test";}
    }
    
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {private int id;private String name;private int age;
    }
    

7.3 数据回显

(1) ModelAndView

public class HelloController implements Controller {public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {ModelAndView mv = new ModelAndView();mv.addObject("msg","HelloSpringMVC!");mv.setViewName("hello");return mv;}
}

(2) Model

@GetMapping("/recObj")
public String recObj(User user, Model model) {System.out.println("user: " + user);model.addAttribute("msg", "user: " + user);return "test";
}

(3) ModelMap

Model extends ModelMap extends LinkedHashMap<String, Object>

@GetMapping("/recObj")
public String recObj(User user, ModelMap model) {System.out.println("user: " + user);model.addAttribute("msg", "user: " + user);return "test";
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS开发:解决DevEco Studio低版本导入高版本项目运行失败问题

前言 基于DevEco Studio 4.0 Beta2&#xff0c;hvigorVersion为3.0.2&#xff0c;开发了一个项目&#xff0c;上传到了远程仓库&#xff0c;当同事下载后&#xff0c;却始终无法运行&#xff0c;频繁报错&#xff0c;由于API都是使用的9&#xff0c;第一感觉就是开发环境不同&a…

Qt: 鼠标形状设置

设置全局鼠标形状 设置完毕后&#xff0c;整个APP的任何窗体&#xff0c;包括Dialog中的鼠标形状都会被修改为设定类型&#xff0c;某一个控件设定的鼠标形状将被替换。一般不建议使用 QCursor cursor;//创建鼠标对象 cursor.setShape(Qt::CursorShape::ClosedHandCursor);//…

9.25 校招 实习 内推 面经

绿泡*泡&#xff1a; neituijunsir 交流裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 达闼机器人2024届校园招聘正式启动 校招 | 达闼机器人2024届校园招聘正式启动 2、2023校招总结--自动驾驶规控算法 - 10 2023校招总结--自动驾驶规控算法 - 10 3、校招 | 腾讯北极…

创建线程的4种方法

目录 一.前言 1.关于进程调度 (1)为什么要调度? (2)调度的真正对象 (3)调度的资源 2.线程 (1).线程的写法 (2)线程创建的方法 1.继承Thread (1)使用继承Thread,重写run的方式来创建线程 (2)继承Thread,使用匿名内部类 2.实现Runnable (1)使用实现Runnable,重写run…

算法 数组中的逆序对-(归并排序+递归回溯+双指针)

牛客网: BM20 题目: 求出数组中逆序对总数 思路: 使用归并排序思路&#xff0c;先分裂&#xff0c;再合并&#xff0c;合并的时候&#xff0c;左半段有序&#xff0c;右半段有序&#xff0c;如果左半段某个值大于右半段某个值 data[i] > data[j]&#xff0c; 则可通过j与右…

搭建本地git服务器及详细操作步骤

1.搭建本地git服务器 1.1环境 服务器&#xff1a;Ubuntu18.04 客户端&#xff1a;windows10_x64、Ubuntu20.04 无论是服务端还是客户端都需要先安装git Ubuntu安装方法&#xff1a; sudo apt update sudo apt install gitwindows安装方法&#xff1a; https://blog.csdn…

Android系统之编译Intel5.1问题解决

1.jdk问题: ************************************************************ You are attempting to build with the incorrect version of java.Your version is: openjdk version "1.7.0_75" OpenJDK Runtime Environment (build 1.7.0_75-b13) OpenJDK 64-Bit Se…

微服务线上问题排查困难?不知道问题出在哪一环?那是你还不会分布式链路追踪

咱们以前单体应用里面有很多的应用和功能&#xff0c;依赖各个功能之间相互调用&#xff0c;使用公共的代码包等等&#xff0c;排查问题&#xff0c;使用类似于 gdb/dlv 工具或者直接查看代码日志&#xff0c;进行定位和分析 但是现在我们基本上都是微服务架构了&#xff0c;将…

JavaScript入门——(2)基础语法(上)

一、JavaScript介绍 1.1 JavaScript是什么 1.1.1 JavaScript是什么&#xff1f; JavaScript是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互效果。 注意&#xff1a;HTML和CSS是标记语言。 1.1.2 作用&#xff08;做什么&#xff1f…

2023最新最详细软件测试技术面试题【含答案】

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 有这样一个面试题&#xff1a;在一个Web测试页面上&#xff0c;有一个输入框&#xff0c;一个计数器&…

Ubuntu常见问题解决方法

1、网络设置 参考博客&#xff1a;《Ubuntu 22.04 配置静态IP》、《虚拟机上网设置——桥接模式 & NAT模式》&#xff1b; 2、报错&#xff1a;failed to create hard link 参考博客&#xff1a;《Ubuntu中报错&#xff1a;failed to create hard link》&#xff1b; 3、修…

【STM32单片机】u8g2智能风扇设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用按键、IIC OLED模块、DS18B20温度传感器、直流电机、红外遥控等。 主要功能&#xff1a; 初始化后进入温度显示界面&#xff0c;系统初始状态为手动…

软件测试工作步骤详情

软件测试步骤按照研发阶段一般分为5个部分&#xff1a;单元测试、集成测试、确认测试、系统测试、验收测试&#xff0c;下面将不同阶段需要的一些工作内容做一下梳理希望可以帮助到大家。 一、单元测试的内容&#xff1a;&#xff08;白盒为主&#xff0c;黑盒为辅&#xff09;…

Android 13.0 framework层系统手势增加上滑手势home事件功能(相当于Home键)

1.概述 在13.0的定制化开发系统手势功能的时候,客户需求要求在上滑手势的时候,在底部上滑时候进入系统桌面,也就是增加 home键功能,所以就需要分析相关的系统手势上滑事件,然后添加home事件这样 就可以实现这个功能了 2.framework层系统手势增加上滑手势home事件功能的核…

热启动和冷启动是什么,区别

app冷启动&#xff1a; 当应用启动时&#xff0c;后台没有该应用的进程&#xff0c;这时系统会重新创建一个新的进程分配给该应用&#xff0c; 这个启动方式就叫做冷启动&#xff08;后台不存在该应用进程&#xff09;。冷启动因为系统会重新创建一个新的进程分配给它&#xff…

Ubuntu 安装 CUDA 与 CUDNN GPU加速引擎

一、NVIDIA&#xff08;英伟达&#xff09;显卡驱动安装 NVIDIA显卡驱动可以通过指令sudo apt purge nvidia*删除以前安装的NVIDIA驱动版本&#xff0c;重新安装。 1.1. 关闭系统自带驱动nouveau 注意&#xff01;在安装NVIDIA驱动以前需要禁止系统自带显卡驱动nouveau&#xf…

Diffusion Autoencoders: Toward a Meaningful and Decodable Representation

Diffusion Autoencoders: Toward a Meaningful and Decodable Representation (Paper reading) Konpat Preechakul, VISTEC, Thailand, CVPR22 Oral, Cited:117, Code, Paper 1. 前言 扩散概率模型 (DPM) 在图像生成方面取得了显着的质量&#xff0c;可与 GAN 相媲美。但是与…

独立站引流,如何在Reddit进行营销推广?

Reddit是目前最被忽视却最具潜力的社交媒体营销平台之一&#xff0c;它相当于国内的百度贴吧&#xff0c;是美国最大的论坛&#xff0c;也是美国第五大网站&#xff0c;流量仅次于Google、Youtube、Facebook以及亚马逊。 如果会玩&#xff0c;Reddit也可以跟其他的社交媒体营销…

Element UI搭建首页导航和左侧菜单以及Mock.js和(组件通信)总线的运用

目录 前言 一、Mock.js简介及使用 1.Mock.js简介 1.1.什么是Mock.js 1.2.Mock.js的两大特性 1.3.Mock.js使用的优势 1.4.Mock.js的基本用法 1.5.Mock.js与前端框架的集成 2.Mock.js的使用 2.1安装Mock.js 2.2.引入mockjs 2.3.mockjs使用 2.3.1.定义测试数据文件 2…

扫地机器人经营商城小程序的作用是什么

扫地机器人对人们生活大有帮助&#xff0c;近些年也有不少企业开创品牌&#xff0c;在电商平台每年销量也非常高&#xff0c;同行竞争激烈及私域化程度加深情况下&#xff0c;虽然第三方平台或线下方式也有生意&#xff0c;但互联网电商发展也为商家们带来了诸多痛点。 那么通…