@RequestBody
@RequestBody用于接收前台传来的java对象,注意@RequestBody的元注解@Target(ElementType.PARAMETER),说明@RequestBody只用方法的对应形参上。
原理是读取http的请求,通过内置的HttpMessageConverter将读取到的内容转为json等格式,然后再转为java对象绑定到对应参数上。简单而言,就是将json等格式的数据转为java对象。
下面方法就会将前台转来的user对象(以json等格式),注入到user参数中
@RequestMapping("/test")
public void test(@RequestBody User user){
System.out.println(user.toString());
}
@ResponseBody
我们在使用@RequestMapping的时候,一般return的值都是跳转的页面,然而加上@ResponseBody之后,return的值会直接打印在@RequestMapping设置的页面上
//会跳转到success页面
@RequestMapping("/test")
public void test(User user){
return "success";
}
//会在test页面上打印success
@RequestMapping("/test")
@ResponseBody
public void test(User user){
return "success";
}
//会在test页面上打印user.toString()的内容(以json等形式)
@RequestMapping("/test")
@ResponseBody
public void test(User user){
return user;
}
所以@ResponseBody的效果等同与response.getWriter.write("")
这时注意一个@RestController注解,@RestController=@Controller+@ResponseBody,@RestController标注在类上标示这个类是一个controller同时类中所有方法的返回,都不会跳转页面而是打印在页面上
下面是一些其他的注解
@Qualifier
当出现多个同一类型的bean时,使用@Autowired注入会发生异常,这是要使用@Qualifier手动指定bean的ID
@Configuration和@Bean
标示这个类是spring配置类,一般与@Bean联用
所以@Configuration相当于配置文件中的<beans>,@Bean相当于<bean>
@Configuration
public class MyConfig {
@Bean
public User user(){
return new User("zhangsan");
}
}
上面这段代码就等价于(方法名就是id,return的类型就是class)
<beans>
<bean id="user" class="com.entity.User">
<constructor-arg>
<value>zhangsan</value>
</constructor-arg>
</bean>
</beans>
@RequestBody用于接收前端传来的JSON数据并转换为Java对象,而@ResponseBody将方法返回值以特定格式输出到HTTP响应体。@Qualifier用于在有多个相同类型Bean时指定注入的特定Bean。@Configuration和@Bean则分别表示Spring配置类和定义Bean。
993

被折叠的 条评论
为什么被折叠?



