Java:项目中 Controller 目录(控制层)作用

一、核心定位

Controller = 控制器,属于经典 MVC 架构里的 C(Controller),是整个项目对外的入口层。 简单一句话:接收前端 / 第三方请求,分发处理,返回结果

二、具体能干什么

1. 接收 HTTP 请求

前端页面、小程序、APP、Postman 发的接口请求(GET/POST/PUT/DELETE),全部先进到 Controller。

接收路径地址:@RequestMapping@GetMapping 定义接口 URL

接收参数:

路径参数 @PathVariable

请求体 JSON @RequestBody
表单 / 查询参数 @RequestParam

2. 调用业务层 Service

Controller 不写业务逻辑,只做调度: 拿到请求参数 → 校验基础参数 → 调用 Service 层方法处理业务 → 拿到返回数据。

3. 封装并返回响应结果

统一包装成固定格式 JSON 返回给前端,例如:

{ "code": 200, "msg": "操作成功", "data": { ... } }

4. 简单参数校验与请求拦截

对必填参数、参数格式做基础校验;

配合注解实现登录校验、权限判断、接口限流等前置拦截。

三、层级分工(对照整个项目结构)

层级

职责

能不能写业务

Controller 控制层

接请求、调 Service、返回数据

绝对禁止在Controller、Service中直接写SQL,所有数据库操作必须通过Mapper+Mybatis实现。

❌ 禁止复杂业务
不能写业务、不能写 SQL。 只干:接参数、调 Service、返回结果。

Service 业务层

核心业务逻辑、流程处理
绝对禁止在Controller、Service中直接写SQL,所有数据库操作必须通过Mapper+Mybatis实现。

✅ 主要写业务
专门写核心业务逻辑(判断、流程、计算、事务),是项目的大脑。

Mapper/DAO 数据层

操作数据库增删改查
该目录是 Mybatis 框架的专属层,承担项目所有数据库读写工作,完全对应JDBC数据操作职责,是Service层和数据库之间的桥梁

❌ 只写 SQL
不能写业务逻辑。 只干:数据库增删改查、执行 SQL。

Entity/Model

数据库实体类
Entity实体类:仅用来映射数据库表字段,不属于Mybatis核心操作层

❌ 存字段
不能写逻辑、不能写 SQL。 只干:定义字段,对应数据库表。

四、典型目录结构示例(SpringBoot 项目)

前端请求 → Controller(接收请求)→ Service(处理业务)→ Mapper(Mybatis执行SQL) → 数据库

src/main/java/com/xxx/project
├── controller    # 所有接口控制器放这里
│   ├── UserController.java
│   ├── OrderController.java
├── service
│   ├── impl      # service实现类
├── mapper
├── entity

五、通俗举例

你在浏览器访问 localhost:8080/user/get/1

1、请求先进入 UserController

2、Controller 拿到用户 id=1;

3、调用 userService.getUserById(1)

4、Service 调用 Mapper 查询数据库;

5、数据一层层回传到 Controller;

6、Controller 打包 JSON 发给浏览器展示。

六、编码规范要点

6.1、Controller 只依赖 Service,绝对不能直接调用 Mapper

6.2、一个业务模块对应一个 Controller(用户、订单、商品分开);

6.3、不写事务、不写复杂判断,只做请求转发与结果封装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值