SpringMVC---返回数据的几种方式

学完Servlet之后在学SpringMVC,我发现挺容易的,无外乎就是接收和返回参数的形式是不一样的。

上一篇博客说了controller如何接收参数,那么这篇博客主要说controller如何返回数据。

其返回数据的类型基本由四种:

  • ModelAndView
  • String
  • void
  • 自定义类型

第一种类型:ModelAndView

 返回的类型的意思是说:你把要返回的数据和要返回的界面名称都给ModelAndView,都让它带回去

如何添加数据和界面呢?

@Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView md = new ModelAndView();
        md.addObject("hello","Hello,SpringMVC");
        md.setViewName("first");
        return md;
    }

第二种类型:String

这种类型的是说要返回的界面的名称

@RequestMapping("/welcome.do")
    public String welcome() throws Exception{

        //直接填写要跳转的jsp的名称
        return "welcome";
    }

上面代码的结果就是直接跳转到welcome.jsp页面去了

这其中还有另外一种情况,就是还可以利用model对象:

@RequestMapping("/welcome1.do")
public String welcome1(String name,Model model) throws Exception{

    //这种写法spring mvc会自动为传入的参数取名
    model.addAttribute(name);
    model.addAttribute("username", name);

    //直接填写要跳转的jsp的名称
    return "welcome";
}

这个代码的意思是:model是携带的数据,将model和页面一起返回给前端。

第三种类型:void

字面理解是什么都不返回,一般用于ajax响应,我觉得这种用法不好,不是我喜欢用的,就不做过多的介绍了。。。

第四种类型:Object

这种类型的意思就是,在controller内有一个对象,将对象转换成json,然后发送给前端,这需要用一个json库来实现json的类型转换

我用的是阿里的fastjson

具体的代码:

@RequestMapping(value = "/handel1.do",produces = "text/html;charset=utf-8")
    @ResponseBody
    public Object handel1(String username, String age) {
        System.out.println(username);
        System.out.println(age);
        Student student = new Student();
        //创建一个对象并赋值
        student.setUsername(username);
        student.setAge(age);
        //利用阿里的库  直接把对象转换成json字符串
        String stu = JSON.toJSONString(student);
        return stu;
    }

上面代码的大致意思就是:接收前端Ajax发送过来的请求,然后将数据保存在Student对象中,将Student对象转换成json字符串返回给前端,因为代码中有一行:@ResponseBody注释,所以他代表只返回一个字符串,不是返回界面。

produces = "text/html;charset=utf-8"这行代码的意思是指定返回类型和编码,防止乱码问题!!!

今天就学到这吧!!!明天接着学。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值