全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

10 | MVC架构解析:控制器(Controller)篇

Model 对象传入
属性绑定
setAttribute 方法
注解方式
配置文件方式
注解方式处理
自动参数注入
参数获取
CoC 原则
注解支持
自定义映射匹配逻辑
视图指向配置
路径映射配置
动手实现一个简单的 MVC 系统
控制器层代码逻辑
MVC 框架配置方式
Spring MVC
Struts
Servlet
Spring MVC
Struts
Spring MVC
Struts
Servlet
MVC 框架
Servlet
转给 View 层去渲染
构造和绑定上下文
调用 Model 层获取业务数据
校验参数
接收请求
扩展阅读
选修课堂
总结思考
视图上下文绑定
参数验证
请求参数绑定
路径映射和视图指向
控制器
MVC 架构解析:控制器(Controller)篇

该思维导图由 AI 生成,仅供参考

你好,我是四火。
今天我们继续学习 MVC 架构,主要内容就是 MVC 架构的第三部分——控制器(Controller)。
控制器用于接收请求,校验参数,调用 Model 层获取业务数据,构造和绑定上下文,并转给 View 层去渲染。也就是说,控制器是 MVC 的大脑,它知道接下去该让谁去做什么事。控制器层是大多数 MVC 框架特别愿意做文章的地方,我相信你可能耳闻、了解,甚至熟练使用过一些 MVC 框架了。
那么与其去抽象地学习这一层的重要概念、原理,或是单纯地学习这些框架在这一层略显乏味的具体配置,我想我们今天“不走寻常路”一次,把这两者结合起来——我们来比较 Servlet、Struts 和 Spring MVC 这三种常见的技术和 MVC 框架,在控制器层的工作路数,以及和业务代码整合配置的方式,看看任这些框架形式千变万化,到底有哪些其实是不变的“套路”呢?
随着请求到达控制器,让我们顺着接下去的请求处理流程,看看控制器会通过怎样的步骤,履行完它的职责,并最终转到相应的视图吧。

1. 路径映射和视图指向

我们不妨把 MVC 架构的控制器想象成一个黑盒。当 HTTP 请求从客户端送达的时候,这个黑盒要完成一系列使命,那么它就有一个入口路由和一个出口路由:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了MVC架构中的控制器层在Servlet、Struts和Spring MVC三种常见技术和框架下的工作方式和配置方法。文章首先介绍了路径映射和视图指向的实现方法,包括在web.xml中配置路径映射、使用XML配置路径映射和视图指向、以及使用注解实现路径映射和视图指向。其次,文章讨论了请求参数绑定的实现方式,包括在Servlet中使用编程方式实现参数获取、Struts中通过属性设置实现参数自动注入、以及Spring MVC中使用注解处理参数绑定。通过比较不同框架的实现方式,读者可以了解到各种技术和框架在控制器层的工作方式和配置方法,以及它们的优缺点和适用场景。文章还提到了控制器层的两大绑定方式,即参数验证和视图上下文绑定,以及对MVC框架中两种常见的配置方式进行了讨论。最后,文章通过动手实现一个简单的MVC系统来巩固所学知识。整体而言,本文通过比较学习不同框架的“套路”,帮助读者深入理解MVC架构中控制器层的工作原理和实现方式,以及如何根据实际情况进行选择和权衡。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • pyhhou
    1. 更喜欢把配置放在单独一层,这么做的好处是部署的时候,更改配置比较方便而且基本不会有遗漏。这里不知道是不是可以使用二者结合的方式,对于那些经常变的配置,比如 IP 地址,端口号,token,数据库连接可以考虑放在单独一层,其他和具体业务逻辑相关的,不容易改变的配置,利用注解和实现逻辑放在一起 2. 控制层基本上就做数据验证、然后 mapping 到对应的业务处理函数,业务处理函数处理好请求后会将结果返回,控制层将业务处理函数返回的结果作为响应返回给前端页面 选修课堂的例子,web.xml 和 BookSevlet.java 所做的事情都属于 controller 层的范畴,book.jsp 里面对应的是 Model 层和 view 层,因为使用了 JavaBean 这里应该算是 View 去直接接触 Model?

    作者回复: 👍

    2019-10-09
    4
  • 鹏😎
    1. 配置方式,自己更喜欢通过注解的形式,之前实践过程中就是感觉比较简单,用时直接配置。但今天通过学习老师的课程感觉任何技术都与优势和劣势,对于配置方式,最大的缺点就是路径映射分散,难于统一管理,后期维护起来比较麻烦,以后项目要多注意这块。 2. 接口调用:controller收到请求,验参,将请求转化为内部服务调用,同步反馈处理结果或者异步回掉结果,视图请求:请求,验参,服务调用,返回视图。 四火老师后续的客户是否包含前后端分离技术?

    作者回复: 前面说得挺好,最后的问题没有看懂。

    2019-10-12
  • Paradise丶朽木
    选修课堂补充我自己遇到的两个问题: 1. win10 环境下编辑java文件,环境变量那里替换成 $env:CATAIINA_HOME(powershell) 2. Tomcat启动之后页面报错500(javax.servlet.ServletException: Error instantiating servlet class [com.xxx.BookServlet]),配置web.xml时,servlet-class 只保留类名就可以了

    作者回复: 👍

    2019-10-10
  • anginiit
    思考题: 1: 我更喜欢把配置和业务放到一起,因为这样更直接,我可以直接对应到控制层方法,查错也更直接一些,在工作中很少去查看所有路由的。 2:现在的项目都在使用springmvc,控制层很简单,只是去请求服务层,在一些特殊的情况下会有一些校验逻辑。

    作者回复: 👍

    2019-10-08
  • 四喜
    Django使用配置文件,Flask使用装饰器。
    2019-10-03
    3
  • 不记年
    平时更多的是配置和注解混用的方式,配置多用于宏观一点的东西,例如控制器的注册。注解更偏向于微观一点,例如参数绑定
    2019-10-10
  • leslie
    MVC这块知识对于早期做面向过程开发的而言只能慢慢的循环啃了、、、本来以为不用再碰这些,绕了一圈发现不懂还是不行,不过啃起来确实蛮辛苦
    2019-10-10
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部