Leetcode 739. 每日温度(单调栈)

12C语言结构体(进阶)

  返回  

SpringMVC数据响应

2021/7/21 0:09:03 浏览:

数据响应方式

在这里插入图片描述

1) 页面跳转

  • 直接返回字符串
  • 通过ModelAndView对象返回

2) 回写数据

  • 直接返回字符串

  • 返回对象或集合

页面跳转——返回字符串形式

在这里插入图片描述

页面跳转—— ModelAndView

Model:模型 作用封装数据, View:视图 作用展示数据

  • 控制器处理方法的返回值如果为 ModelAndView,则其既包含视图信息,也包含模型数据信息。
  • ModelAndView对象常见方法
    • 添加模型数据:
      • MoelAndView addObject(String attributeName, Object attributeValue)
      • ModelAndView addAllObject(Map<String, ?> modelMap)
    • 设置视图:
      • void setView(View view)
      • void setViewName(String viewName)

Controller中方法返回ModelAndView对象

  • 在Controller中方法返回ModelAndView对象,并且设置视图名称
@RequestMapping(value="/quick2")
    public ModelAndView save2(){
        /*
            Model:模型 作用封装数据
            View:视图 作用展示数据
         */
        ModelAndView modelAndView = new ModelAndView();
        //设置模型数据
        modelAndView.addObject("username","olivia");
        //设置视图名称
        modelAndView.setViewName("success");

        return modelAndView;
    }
  • 在Controller中方法形参上直接声明ModelAndView,无需在方法中自己创建,在方法中直接使用该对象设置视图,同样可以跳转页面
 @RequestMapping(value="/quick3")
    public ModelAndView save3(ModelAndView modelAndView){
        modelAndView.addObject("username","Olivia");
        modelAndView.setViewName("success");
        return modelAndView;
    }

完整示例

  • 增加控制器方法
/**
 * 目标方法的返回类型可以是ModelAndView类型
 *                 其中包含视图信息和模型数据信息
 */
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
System.out.println("testModelAndView");
String viewName = "success";
ModelAndView mv = new ModelAndView(viewName );
mv.addObject("time",new Date().toString()); //实质上存放到request域中 
return mv;
}

② 增加页面链接

<!--测试 ModelAndView 作为处理返回结果 -->
<a href="springmvc/testModelAndView">testModelAndView</a>

③ 增加成功页面,显示数据
success.jsp

time: ${requestScope.time }

回写数据——返回字符串

  • 通过SpringMVC框架注入的response对象

    • 使用response.getWriter().print(“hello world”) 回写数据,此时不需要视图跳转,业务方法返回值为void
  • 直接return 返回一个字符串

  @RequestMapping(value="/quick7")
        @ResponseBody  //告知SpringMVC框架 不进行视图跳转 直接进行数据响应
        public String save7() throws IOException {
            return "hello itheima";
        }
    
        @RequestMapping(value="/quick6")
        public void save6(HttpServletResponse response) throws IOException {
            response.getWriter().print("hello itcast");
        }

回写数据—— 直接回写json格式字符串(

  • 手动拼接json格式
@RequestMapping(value="/quick8")
    @ResponseBody
    public String save8() throws IOException {
        return "{\"username\":\"zhangsan\",\"age\":18}";
    }
  • 通过jackson转换json格式字符串,回写字符串(需要配置maven依赖)
@RequestMapping(value="/quick9")
    @ResponseBody
    public String save9() throws IOException {
        User user = new User();
        user.setUsername("lisi");
        user.setAge(30);
        //使用json的转换工具将对象转换成json格式字符串在返回
        ObjectMapper objectMapper = new ObjectMapper();
        String json = objectMapper.writeValueAsString(user);

        return json;
    }

回写数据——返回对象或集合(利用处理器适配器)

spring-mvc.xml中进行如下配置:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
            </list>
        </property>
    </bean>
@RequestMapping(value="/quick10")
    @ResponseBody
    //期望SpringMVC自动将User转换成json格式的字符串
    public User save10() throws IOException {
        User user = new User();
        user.setUsername("lisi2");
        user.setAge(32);
        return user;
    }

回写数据——返回对象或集合2(使用mvc的注解驱动)

<mvc:annotation-driven/>
  • 代替原来处理器适配器中的springmvc.xml的配置

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号