SpringMVC框架中@Controller类的方法的返回值的详细介绍

目录

前言

1. 返回值类型为ModelAndView

2.  返回值为String(视图)

3.  返回值为void

4.  返回值为Object

5. 返回值为List<>

 6. 返回值为String(数据)


前言

在SpringMVC框架中,我们最常见的就是@Controller注解,可以说是只要见到了@Controller注解,就可以说明当前的项目使用了SpringMVC框架。那么在使用了@Controller注解的类,还有其他需要注意的地方吗?答案是有的。

SpringMVC框架中规定了,使用了@Controller注解后,那么@Controller注解所在的类里面的方法的返回值类型也有相应的规矩。返回值类型如下图:

接下来,我们就会仔细的介绍每一个返回值类型到底表示什么含义。

1. 返回值类型为ModelAndView

2.  返回值为String(视图)

3.  返回值为void

 4.  返回值为Object

5. 返回值为List<>

 6. 返回值为String(数据)




!!注意!!

兄弟们,下面东西是我每天必须背诵的内容,大家不喜欢的话,可以一个字都不用看。

三字经

                                                                                南宋 王应麟

人之初,性本善。性相近,习相远。

### 中断变量 `irq` 及 `controller_state` 和 `controller_data` 的作用 #### 1. 中断变量 `irq` 在 Linux 驱动开发中,`irq` 是指分配给设备的中断号。它是系统用于唯一标识某个硬件中断的一个整数值。当硬件触发中断时,内核通过该编号定位到相应的中断描述符 (`struct irq_desc`) 并调用其中定义的处理函数。 - **用途**: - 表示特定硬件中断的逻辑编号。 - 作为索引访问全局中断描述符表 `irq_desc[]` 来获取对应中断的相关信息[^3]。 - **实现细节**: ```c struct irq_desc { struct irq_common_data common; unsigned int irq; spinlock_t lock; void *chip_data; ... }; ``` --- #### 2. `controller_state` 的作用 `controller_state` 是一个指向私有数据的指针,通常由中断控制器驱动维护。它存储了与具体中断控制器相关的状态信息,这些信息可能包括但不限于: - 当前中断的状态(使能/屏蔽)。 - 控制器内部寄存器映射地址或其他配置参数。 - 特定于某种架构或芯片组的数据结构。 - **典型场景**: 在某些复杂的中断控制器设计中,`controller_state` 提供了一种机制来保存动态变化的状态信息,以便后续操作可以恢复或更新它们。例如,在多级中断域(multi-level irq domains)的设计中,不同层次可能会共享部分资源或者依赖共同的状态记录。 - **代码片段**: 下面是一个简单的例子展示如何初始化并利用此字段: ```c static int my_irq_control(struct irq_data *data, unsigned int cmd) { struct my_controller_state *state = data->chip_data; switch (cmd) { case IRQ_CMD_ENABLE: state->enabled = true; break; case IRQ_CMD_DISABLE: state->enabled = false; break; } return 0; } static void setup_my_irq(int irq_num, struct my_controller_state *init_state) { struct irq_data *data = irq_get_irq_data(irq_num); data->chip_data = init_state; } ``` --- #### 3. `controller_data` 的作用 相比之下,`controller_data` 更加静态化一些,主要用于传递固定的硬件相关信息至低层驱动模块。这数据往往是在启动阶段就已经确定下来不会轻易改变的内容,像物理基址、版本号或者其他固定属性等都可以归入此范畴之内。 - **常见应用领域**: 对应 ARM 架构下的 GIC(Generic Interrupt Controller),它的实例化过程就涉及到了这种类型的参数设定——即将实际平台上的硬件特性封装成易于理解的形式交给通用框架去解析运用。 - **样例说明**: 假设我们正在构建针对某款 SoC 上集成型 PIC(peripheral interface controller)的支持,则可以通过如下方式指定必要的初始条件: ```c const struct pic_config my_pic_cfg = { .base_addr = IO_BASE_ADDR, .num_interrupts = NUM_INTS, /* Additional configuration fields */ }; static int __init register_my_pic(void){ int ret; ret = request_resource(&iomem_resource,&my_pic_res); if(ret<0)return ret; ret=arch_setup_generic_chip(MY_PIC_NAME,(void*)&my_pic_cfg,...); return ret; } module_init(register_my_pic); ``` 上述代码展示了怎样把预先定义好的常量集合传送给更深层次的功能单元以完成最终绑定动作。 --- ### 总结 综上所述,`irq`, `controller_state`, 和 `controller_data` 各自承担着不同的职责范围内的任务:前者充当连接外部实体同操作系统核心之间的桥梁;中间者负责捕捉实时变动情况从而影响整体行为模式调整方向;后者则侧重提供基础层面不可变的知识点支撑整个体系正常运转下去。三者相互配合才能确保高效稳定的事件响应流程得以顺利展开[^4]. ---
评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44362089

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值