SpringMVC响应数据和结果视图

返回值类型

1.String

直接返回给视图解析器处理,拼接前缀后缀,访问对应的页面。

2. void

不做任何处理的情况下,会发生404。
可以在对应的Controller方法中获取Servlet原生resquest和response进行转发或者重定向。

也可以使用输出流直接向浏览器响应:

response.getWriter().print("hello");

响应中文乱码问题:
在输出之前设置字符集

response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
3. ModelAndView

ModelAndView对象存储数据与Model对象一样会将数据存到Request域中去。
setView(“success”);方法也会将字符串通过视图解析器解析进行跳转。
其实返回字符串的底层实现就是封装了一个ModelAndView对象。

springMVC提供的转发重定向

1. forward请求转发
/**
* 使用forward关键字进行请求转发 
* "forward:转发的JSP路径",不走视图解析器了,所以需要编写完整的路径 
* @return 
* @throws Exception 
*/ 
@RequestMapping("/delete") 
public String delete() throws Exception { 
System.out.println("delete方法执行了..."); 
// return "forward:/WEB-INF/pages/success.jsp"; 
return "forward:/user/findAll"; 
} 
2. redirect

redirect与原生的servlet重定向有不一样的地方。
不需要再去加http://ip/端口/项目,底层自动帮我们加了。
这里需要注意,与原生的Servlet一样,重定向还是不能访问WEB-INF目录下的内容。

/**
* 重定向 
* @return 
* @throws Exception 
*/ 
@RequestMapping("/count") 
public String count() throws Exception { 
System.out.println("count方法执行了..."); 
return "redirect:/add.jsp"; 
// return "redirect:/user/findAll"; 
}

ResponseBody 响应体

配合ajax,与json技术演示。
前端发送ajax请求,发送json数据。

$("#btn").click(function () {
    $.ajax({
        url : "testBody",
        type:"post",
        contentType : "application/json;charset=UTF-8",
        data :'{"name":"eddie","password":"123456"}',
        dataType : "json",
        success : function (data) {
        	//返回的新的json对象(取决于后端返回什么),取出对应的数据
            alert(data.name + data.password)
        }
    });
});

后端导入 jackson包后,使用RequestBody注解,即可把请求过来的json数据封装到一个对象中去。
通过ResponseBody注解,可以将User对象返回成json字符串,传到前端。

@RequestMapping(path="/testBody")
@ResponseBody
public User testBody(@RequestBody User user) {
    System.out.println("ajax begin");
    System.out.println(user);
    user.setName("eddievim");
    user.setPassword("666");
    return user;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值