SpringMVC——@RequestBody和@ResponseBody

@RequestBody用于接收前端传来的JSON数据并转换为Java对象,而@ResponseBody将方法返回值以特定格式输出到HTTP响应体。@Qualifier用于在有多个相同类型Bean时指定注入的特定Bean。@Configuration和@Bean则分别表示Spring配置类和定义Bean。

@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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值