• 【Spring项目中的Controller理解】


    目录

    1. 添加依赖

    2. 关于异常


    1. 添加依赖

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

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

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

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

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

    1. @RestController
    2. @RequestMapping("/album")
    3. public class AlbumController {
    4. @Autowired
    5. private IAlbumService albumService;
    6. // http://localhost:8080/album/add-new?name=TestAlbum001&description=TestDescription001&sort=66
    7. @RequestMapping("/add-new")
    8. public void addNew(AlbumAddNewDTO albumAddNewDTO){
    9. albumService.addNew(albumAddNewDTO);
    10. }
    11. }

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

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

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

    2. 关于异常

    可能出现的异常

    • 如果某个方法会抛出异常,则谁调用,谁处理;
    • 如果调用的方法抛出了异常,当前方法也没有使用try...catch进行捕获并处理,相当于当前方法抛出了此异常;
    • 如果服务器端程序运行时出现了异常,始终未被处理,框架默认的行为是响应500错误,此时应该检查服务器端的控制台,在控制台中应该有异常的相关信息;
    • 处理异常的本质是:告诉客户端执行失败,且失败的原因是什么,以至于客户端下次提交请求时可能成功,另外,对于某些特殊的情景,可能还需要补充执行一些其它代码;
    • 关于异常的捕获处理和抛出,在典型的服务器端项目中,Mapper、Service都不能处理异常,因为它们不与客户端直接交互,如果它们处理了异常,Controller将不知道出现过错误,反而响应“成功”的结果到客户端,但客户端的请求是没有达到预期的目标的,而Controller有义务处理异常,因为它是与客户端交互的组件

    个人主页:居然天上楼

    感谢你这么可爱帅气还这么热爱学习~~

    人生海海,山山而川

    你的点赞👍 收藏⭐ 留言📝 加关注✅

    是对我最大的支持与鞭策

  • 相关阅读:
    pygame 入门实例教程 1 - 复古方块赛车游戏
    软件过程与建模学习之:Individuals,Motivation and Teams
    Vue3-ref函数、reactive函数的响应式
    Vue定时器的使用和设置(图文详解)附上源码
    Notepad++--列编辑模式--用法/实例
    【我的渲染技术进阶之旅】如何编译Filament的windows版本程序?
    一条SQL查询语句的执行
    Day04:Java数据类型
    如何平衡需求的优先级冲突?
    2022前端面试题上岸手册-性能优化部分
  • 原文地址:https://blog.csdn.net/weixin_72612071/article/details/128106584