4. 剖析SpringMVC处理响应数据

SpringMVC处理响应数据

几种途径输出模型数据:

  1. Map
  2. Model
  3. ModelMap
  4. MadelAndView
1. Map 和 Model 以及 ModelMap

SpringMVC除过在方法上传入原生的request和session外还能怎么样把数据带给页面呢?

可以在方法处传入Map、或者Model或者ModelMap

给这些参数里面保存的所有数据都会放在请求域中。这样就可以在页面获取了

 /*
 *   	Map,Model,ModelMap:最终都是BindingAwareModelMap在工作;
 *   	相当于给BindingAwareModelMap中保存的东西都会被放在请求域中;
 * 
 * 		Map(interface(jdk))      Model(interface(spring))  
 * 			||							//
 * 			||						   //
 * 			\/						  //
 * 		ModelMap(class)			     //
 * 					\\				//
 * 					 \\	           //
 * 					ExtendedModelMap
 * 							||
 * 							\/
 * 					BindingAwareModelMap
 */
Map

success.jsp页面能拿到username的值 taoge

    @RequestMapping("/testMap")
    public String testMap(Map map){

        map.put( "username","taoge" );

        return "success";
    }
Model

success.jsp页面能拿到username的值 huige

addAttribute

    @RequestMapping("/testModel")
    public String testModel(Model model){
        /**
         * model = class org.springframework.validation.support.BindingAwareModelMap
         * model = org.springframework.validation.support.BindingAwareModelMap
         * */
        System.out.println( "model = " + model.getClass() );
        System.out.println( "model = " + model.getClass().getName() );

        model.addAttribute( "username","huige" );

        return "success";
    }
ModelMap

addAttribute

	@RequestMapping("/testModelMap")
	public String testModelMap(ModelMap modelMap){
		modelMap.addAttribute("msg", "你好棒!");
		System.out.println("modelmap的类型:"+modelMap.getClass());
		return "success";
	}
2. ModelAndView对象

控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型数据信息,而且数据是放在请求域中

  1. 两个重要的成员变量:

    • private Object view; 视图信息
    • private ModelMap model; 模型数据
  2. 添加模型数据:

    • MoelAndView addObject(String attributeName, Object attributeValue) 设置模型数据
    • ModelAndView addAllObject(Map<String, ?> modelMap)
  3. 设置视图:

    • void **setView(**View view) 设置视图对象
    • void setViewName(String viewName) 设置视图名字
  4. 获取模型数据

    • protected Map<String, Object> getModelInternal() 获取模型数据
    • public ModelMap getModelMap()
    • public Map<String, Object> getModel()
    
	 /*
     * ModelAndView对象一共就两个属性需要研究
     * //View instance or view name String
     *  private Object view ;
     *
     *  //Model Map
     *  private ModelMap model;
     *
     *  ModelAndView中的方法:
     * */

    @RequestMapping("/user")
    public ModelAndView testModelAndView(){

        //创建一个模型视图对象
        ModelAndView mv = new ModelAndView();
        
        //设置模型
        mv.addObject( "username","taoge" ); //实质上存放到request域中 

        //设置视图名称
        mv.setViewName( "success" );

        return mv;
    }
3. SpringMVC中的重定向和转发

关于重定向和转发

  • 一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理,即经过视图解析器处理。

  • 如果返回的字符串中带 forward: redirect: 前缀时,SpringMVC 会对他们进行特殊处理:将 forward: 和 redirect: 当成指示符,其后的字符串作为 URL 来处理

    • redirect:success.jsp:会完成一个到 success.jsp 的重定向的操作
    • forward:success.jsp:会完成一个到 success.jsp 的转发操作
    @RequestMapping("/testRedirect")
    public String testRedirect(Model model){

        model.addAttribute( "username","weige" );
        //转发 request
        return "forward:/WEB-INF/views/ok.jsp";

        //重定向
        //return "redirect:/index.jsp";
    }

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
weixin102旅游社交微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值