Spring的Controller怎么应用

开发技术 作者:iii 2024-04-17 17:00:01
今天小编给大家分享一下Spring的Controller怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下...

今天小编给大家分享一下Spring的Controller怎么应用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

概述

Controller是Spring接受并处理网页请求的组件,是整个应用的入口,因此学会Controller的常用注解对理解一个应用是重中之重。SpringBoot的Controller中经常会用到注解@Controller、@RestController、@RequestMapping、@RequestBody等。

1. 添加依赖

首先,需要保障此项目中存在spring-boot-starter-web依赖项,否则,当前项目并不具备Web应用程序开发所需的依赖!

提示:spring-boot-starter-web是建立在spring-boot-starter的基础之上的,即包含了spring-boot-starter,所以,在此次调整依赖项时,只需要将原有的spring-boot-starter改为spring-boot-starter-web即可!

<!-- Spring Boot框架支持WEB开发的依赖项 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

当项目中存在以上依赖项时,就具备了Web开发的依赖,且此依赖项中内置了Tomcat,当启用项目时,会自动将当前项目编译、打包、部署到内置的Tomcat上,并启动Tomcat。

在根包下创建controller.AlbumController类,将此类配置为控制器类,并处理“添加相册”的请求:

@RestController
@RequestMapping("/album")
public class AlbumController {
    @Autowired
    private IAlbumService albumService;
    // http://localhost:8080/album/add-new?name=TestAlbum001&description=TestDescription001&sort=66
    @RequestMapping("/add-new")
    public void addNew(AlbumAddNewDTO albumAddNewDTO){
        albumService.addNew(albumAddNewDTO);
    }
}

完成后,启动项目,打开浏览器,通过http://localhost:8080/album/add-new?name=TestAlbum001&description=TestDescription001&sort=66可以测试添加数据!

提示:目前添加相册成功时,在浏览器中并不会有任何提示。

如果使用相同的请求参数反复提交请求,浏览器会显示500错误,这是因为没有处理异常所导致的!

2. 关于异常

可能出现的异常

  • 如果某个方法会抛出异常,则谁调用,谁处理;

  • 如果调用的方法抛出了异常,当前方法也没有使用try...catch进行捕获并处理,相当于当前方法抛出了此异常;

  • 如果服务器端程序运行时出现了异常,始终未被处理,框架默认的行为是响应500错误,此时应该检查服务器端的控制台,在控制台中应该有异常的相关信息;

  • 处理异常的本质是:告诉客户端执行失败,且失败的原因是什么,以至于客户端下次提交请求时可能成功,另外,对于某些特殊的情景,可能还需要补充执行一些其它代码;

  • 关于异常的捕获处理和抛出,在典型的服务器端项目中,Mapper、Service都不能处理异常,因为它们不与客户端直接交互,如果它们处理了异常,Controller将不知道出现过错误,反而响应“成功”的结果到客户端,但客户端的请求是没有达到预期的目标的,而Controller有义务处理异常,因为它是与客户端交互的组件。

以上就是“Spring的Controller怎么应用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注捷杰建站行业资讯频道。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_13030.html
spring controller