RequestBody注解
作用:用于获取请求体内容。直接使用得到是key=value&key=value...结构的数据。get方式不适用。
属性:
- required:是否必须有请求体。默认值是:true。当取值为true时,get请求方式会报错。如果取值是false,get请求得到是null。
使用示例:
<fieldset> <h1>RequestBody注解</h1> <form action="${pageContext.request.contextPath}/user/useRequestBody" method="post"> username:<input type="text" name="username"/><br> password:<input type="text" name="password"/><br> age:<input type="text" name="age"/><br> <input type="submit" value="保存"/> </form> </fieldset>
@RequestMapping("/useRequestBody")
public String useRequestBody(@RequestBody(required = false) String body){
System.out.println(body);
return "success";
}
效果:

ResponseBody注解
作用:该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据:json,xml等,通过Response响应给客户端。
使用示例:
需求:使用@ResponseBody注解实现将controller方法返回对象转换为json响应给客户端。
springmvc默认用MappingJacksonHttpMessageConverter对json数据进行转换,需要加入jackson的包。

POM.xml导入依赖
<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>
由于要访问静态内容js,需要在spring配置文件中applicationContext.xml中设置<mvc:default-servlet-handler/>。因为在配置dispatcherServlet时配置<url-pattern>/</url-pattern>拦截所有请求,这时dispatcherServlet完全取代default Servlet,将不会再访问容器中原始默认的Servlet,而对静态资源的访问就是通过容器默认Servlet处理的,故而这时静态资源将不可访问。
<mvc:default-servlet-handler/>
<script type="text/javascript" language="JavaScript" src="${pageContext.request.contextPath}/js/jquery-1.10.2.js?t=1"></script> <script type="text/javascript"> $(function () { $("#btnSave").click(function () { $.ajax({ type:"post", url:"${pageContext.request.contextPath}/user/useResponseBody", contentType:"application/json;charset=utf-8", data:'{"username":"lisi","password":"123.abc","age":17}', dataType:"json", success:function (data) { alert(data); } }); }); }); </script> <fieldset> <h1>ResponseBody注解</h1> <label>${pageContext.request.contextPath}</label> <input type="button" value="提交" id="btnSave"/> </fieldset>
@RequestMapping("/useResponseBody")
public @ResponseBody User useResponseBody(@RequestBody(required = false) User user){
System.out.println(user);
return user;
}
posted on
浙公网安备 33010602011771号