回写数据
1. 直接返回字符串:
Web基础阶段,客户端访问服务器端,如果想直接回写字符串作为响应体返回的话,只需要使用 response.getWriter().print(“hello world”) 即可,那么在Controller中想直接回写字符串该怎样呢?
先来个原始的直接返回字符串,通过response 来返回,response 对象那里来呢? 也是通过形参,让SpringMVC帮我们自行注入即可:
跳转 + 返回.
@Controller public class TestController { @RequestMapping(value = "/go") //因为是直接用Response返回 所以返回值类型是void public void GoUrl(HttpServletResponse response){ try { response. setContentType("text/html;charset=UTF-8"); //处理乱码 response.getWriter().print("我是返回的语句"); //需要处理异常 } catch (IOException e) { e.printStackTrace(); } } }
所以你访问 http://localhost:8080/go 然后会跳转到s1 本来s1的内容会被你返回的覆盖(基础啊 这里不说那么多)。
当然 我们怎么可能用 这个原生的response? 我们肯定是用 注解啊:
将需要回写的字符串直接返回,但此时需要通过@ResponseBody注解告知SpringMVC框架,方法 返回的字符串不是跳转是直接在http响应体中返回。
单返回
@ResponseBody() 此注解 告知 返回的字符串是 响应体 而不是跳转Url:
@Controller public class TestController { @RequestMapping(value = "/go") @ResponseBody() public String GoUrl(){ //中文会有乱码 具体处理方法我也不知道.. return "我是通过注解responsebody注解响应的数据"; } }
中文处理方法暂时不详,后面得知.
一般我们处理数据的话 我们是不会单单返回字符串的,一般都是返回JSON:
用第三方的插件来写:这里用 jackson:
导入GAV:
<!--jackson--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency> <!--绑定的--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> <!--自动检测注解的--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.0</version> </dependency>
其实你也可以用其他 但这里用一下这玩意而已 这玩意要导入的东西好多...
代码:
@Controller public class TestController { @RequestMapping(value = "/go") @ResponseBody() public String GoUrl() throws JsonProcessingException { Student BiHu = new Student(); BiHu.setName("bihu"); BiHu.setAge(18); //开始用JSON插件生成JSON ObjectMapper objectMapper = new ObjectMapper(); String json = objectMapper.writeValueAsString(BiHu); //此方法抛异常 return json; } }
所以当你访问 xxx/go : 允许结果:
原文:https://www.cnblogs.com/bi-hu/p/14953640.html