必看|springmvc中的Model对象在重定向中的数据传递
黑马程序员视频库
播妞QQ号:3077485083
传智播客旗下互联网资讯、学习资源免费分享平台
在springmvc框架中,一个handler方法中的参数可以内置接收Model类型的对象,主要用于存储数据之用,主要用在转发效果,那么能否用在重定向中呢?
我们先来看一个model的简单使用演示。
首先搭建好springmvc环境,springmvc使用的是5.0.2.RELEASE版本。——下面的代码只贴出核心部分
——主要配置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>
<!-- 开启注解扫描 -->
<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/>
package springmvc;
@Controller
public class ModelAndViewTextController {//方法待实现}
<body>
<h3>数据展示</h3>
${message}
</body>
下面来测试model的基本使用:
需求说明:
发送一个testModel请求,后台接收并转发到success.jsp页面,将访问成功的信息带过去。
下面是controller类中方法的完成:
@RequestMapping("/testModel")
public String testModel(Model model){
model.addAttribute("message","测试model成功");
return "success";
}
上述演示的是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);//打印name
return "success";//重定向到success.jsp页面
}
启动项目查看效果,就可以看到预期运行打印结果。咱们model的这种完成重定向传参的效果演示完毕!
END
- 推荐阅读 -