SpringMVC----@Controller和@RestController的区别?

@Controller

在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面

若返回json等内容到页面,则需要加@ResponseBody注解

//@Controller
public class UserController {
    @RequestMapping("j1")
    @ResponseBody//添加这个的话就不会走视图解析器,会直接返回一个字符串。
    public String json1() throws JsonProcessingException {

        //jackson  ObjMapper
        ObjectMapper objectMapper = new ObjectMapper();
        //创建一个对象
        User user = new User("张嘉琪",18,"男");
        String string = objectMapper.writeValueAsString(user);
        return string;
    }
}

@RestController

相当于@ResponseBody + @Controller在一起的作用。不走视图解析器,直接返回一个字符串,当前后端分离,只需要数据时用这个

@RestController
//相当于@ResponseBody + @Controller在一起的作用。不走视图解析器,直接返回一个字符串,当前后端分离,只需要数据时用这个
public class UserController {
    @RequestMapping("j1")
    public String json1() throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        //创建一个对象
        User user = new User("张嘉琪",18,"男");
        String string = objectMapper.writeValueAsString(user);
        return string;
    }
}
@RestController是一个特殊的@Controller注解,它用于标记在Spring框架中的控制器类,用于处理RESTful风格的请求。它可以处理HTTP请求,并将响应对象返回给客户端。@RestController注解使用了Spring4版本中引入的@ResponseBody注解,用于表示方法的返回值直接作为HTTP响应正文(ResponseBody)进行返回。 @Bean是一个注解,用于告诉Spring容器,需要将被注解的方法返回的对象作为Spring容器中的一个Bean进行管理。在Spring框架中,Bean是指由Spring容器管理的对象,它们的创建、销毁和依赖注入等生命周期都由Spring容器控制。@Bean注解通常用于配置类中的方法上,用于返回一个对象实例,该实例将被Spring容器管理。 SpringMVC的执行流程是: 1. 客户端发送HTTP请求到DispatcherServlet。 2. DispatcherServlet根据请求的URL调用HandlerMapping,通过HandlerMapping查找到对应的处理器映射器HandlerAdapter。 3. HandlerAdapter将处理器Handler交给DispatcherServlet。 4. DispatcherServlet调用处理器Handler进行处理,并将处理结果封装成ModelAndView。 5. 处理器Handler返回ModelAndView给DispatcherServlet。 6. DispatcherServlet调用ViewResolver对ModelAndView进行解析。 7. ViewResolver解析出对应的视图View。 8. DispatcherServlet将视图View返回给客户端。 @Bean通常用于Spring的配置类中,用于配置Spring容器中的Bean。例如: ```java @Configuration public class AppConfig { @Bean public SomeService someService() { return new SomeServiceImpl(); } @Bean public AnotherService anotherService() { return new AnotherServiceImpl(someService()); } } ``` 在上述代码中,someService()方法和anotherService()方法都被@Bean注解标记,它们将被Spring容器管理,someService()方法返回的对象会被注入到anotherService()方法中使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值