必看|springmvc中的Model对象在重定向中的数据传递

Posted 黑马程序员视频库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了必看|springmvc中的Model对象在重定向中的数据传递相关的知识,希望对你有一定的参考价值。

黑马程序员视频库

播妞QQ号:3077485083

传智播客旗下互联网资讯、学习资源免费分享平台



必看|springmvc中的Model对象在重定向中的数据传递


在springmvc框架中,一个handler方法中的参数可以内置接收Model类型的对象,主要用于存储数据之用,主要用在转发效果,那么能否用在重定向中呢?


必看|springmvc中的Model对象在重定向中的数据传递


我们先来看一个model的简单使用演示。


首先搭建好springmvc环境,springmvc使用的是5.0.2.RELEASE版本。——下面的代码只贴出核心部分


步骤一:web.xml
——主要配置springmvc的核心控制器<servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>


步骤二:springmvc.xml
<!-- 开启注解扫描 --><context:component-scan base-package="springmvc"/><!-- 视图解析器对象 --><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean><!-- 开启注解的支持 --><mvc:annotation-driven/>


步骤三:Controller类
package springmvc;@Controllerpublic class ModelAndViewTextController {//方法待实现}


步骤四:success.jsp
<body><h3>数据展示</h3>${message}</body>


下面来测试model的基本使用:

需求说明:

发送一个testModel请求,后台接收并转发到success.jsp页面,将访问成功的信息带过去。
下面是controller类中方法的完成:

@RequestMapping("/testModel")public String testModel(Model model){model.addAttribute("message","测试model成功");return "success";}


大家注意观察,此处model添加的属性名message要和jsp中的${message}相一致。启动服务访问后,效果如下:


必看|springmvc中的Model对象在重定向中的数据传递

上述演示的是model模仿request域对象完成转发带数据的效果。下面,我们来通过一个springmvc重定向的演示,来看一下model还能怎么用。


我们都知道,重定向表示会重新发起一个请求,采用的是不同的request对象,即,上一个request域对象中村的数据,下一次请求无法获取了,那么,model.addAttribute()方法存入的数据能不能在重定向时获取呢?


需求说明:

发起一个请求 “/dataRedirect?username=宙斯”传递用户名为宙斯,后台handler1接收该参数,并存放到model中,handler1再通过重定向到另一个url “redNext”,在该方法参数中,尝试获取handler1中model的数据。


我们在上述环境基础上,再次开发。


在Controller类中添加第一个处理方法:

/*** 使用请求路径 进行访问/dataRedirect?username=宙斯* @param username //接收请求参数数据*/@RequestMapping("/dataRedirect")public String redirectTest(Model model,String username){System.out.println("打印dataRedirect接收到的数据:" + username);model.addAttribute("name",username); //将接收到的数据放到model中return "redirect:redNext"; //重定向到redNext}


开发第二个重定向的处理方法
@RequestMapping("/redNext")//注意,参数中的name和上一个redirectTest方法中,model设置的属性名保持一致public String redNext(Model model,String name){System.out.println("从dataRedirect转发过来之后,接收的数据:" + name);//打印namereturn "success";//重定向到success.jsp页面}

 

启动项目查看效果,就可以看到预期运行打印结果。咱们model的这种完成重定向传参的效果演示完毕!




 前沿资讯/干货资料/免费课程 
尽在黑马程序员视频库

以上是关于必看|springmvc中的Model对象在重定向中的数据传递的主要内容,如果未能解决你的问题,请参考以下文章

在重定向期间切换协议

Passport.JS 卡在重定向

在springmvc中使用request向页面传值,是否不能向重定向传值

为啥 perror() 在重定向时会改变流的方向?

VueJs - 在重定向到页面之前获取数据

PHP 而不是 HTML 中的 <form> 从脚本发送表单并停留在重定向页面上?