温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

六、Spring MVC之返回数据

发布时间:2020-07-27 23:24:30 来源:网络 阅读:10134 作者:艾斯的梦想 栏目:开发技术

    前面几篇文章重点说明了一下怎么从前台传递参数到目标方法,还没有说怎么把结果返回给前台。本篇来讲述一下spring mvc怎么返回结果数据。

    从使用形式上看,有以下几种方式:ModelAndView、Map、Model,这几种方式都可以返回数据到前台,本质上来看都是通过map的形式返回数据的。本系列文章着重于使用,深层次的原因,感兴趣的同志可以去调适源代码,这里只是结合使用方式,做简单的样例和分析。


1、ModelAndView的使用

/**
 * 方法的返回值可以是ModelAndView类型,它可以包含视图和模型信息
 * spring mvc会把模型信息放入到request域对象中,可以跟踪源码调试
 * 这个类org.springframework.web.servlet.view.AbstractView
 * 这个方法exposeModelAsRequestAttributes
 * @return
 */
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView() {
    ModelAndView modelAndView = new ModelAndView("success");
    modelAndView.addObject("name", "Jack use ModelAndView");
    return modelAndView;
}

2、Map的使用

/**
 * 使用map返回数据,实际上是实例化了一个
 * org.springframework.validation.support.BindingAwareModelMap
 * @param map
 * @return
 */
@RequestMapping("/testMap")
public String testMap(Map<String, Object> map) {
    System.out.println(map.getClass().getName());
    map.put("name", "Jack use Map");
    return "success";
}


3、Model的使用,本质上与map一样

/**
 * 使用model和使用map一样,都是实例化了一个
 * org.springframework.validation.support.BindingAwareModelMap
 * @param model
 * @return
 */
@RequestMapping("/testModel")
public String testModel(Model model) {
    System.out.println(model.getClass().getName());
    model.addAttribute("name", "Jack use Model");
    return "success";
}

4、SessionAttributes的使用,可以把数据存放到session域中去,有两个属性,value和types,value执行需要放到会话中的属性的属性名,types指定需要放到会话中的属性的类型。


在类上添加注解:

@SessionAttributes(value = {"user"}, types = {String.class})


目标方法的定义

/**
 * 注解SessionAttribute可以通过属性名指定需要放到会话中的属性,实际上通过value属性
 * 还可以通过types指定哪些类型的属性需要放到会话中去
 * 但是该注解只能用于类上
 * @param map
 * @return
 */
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String, Object> map) {
    User user = new User();
    user.setAge(15);
    user.setUserName("lxy");
    map.put("user", user);
    map.put("name", "jack in sessionAttribute");
    return "success";
}


项目源代码:

https://git.oschina.net/acesdream/spring-mvc


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI