一、MVC 模式的核心思想
MVC 是 软件架构模式,将应用分为三部分:
-
Model(模型层)
-
负责业务逻辑和数据处理(数据库操作、业务规则)。
-
不依赖 View 和 Controller,可独立复用。
-
-
View(视图层)
-
负责界面展示。
-
只负责数据显示,不包含业务逻辑。
-
-
Controller(控制层)
-
接收用户请求,调用 Model 处理数据,再选择合适的 View 渲染结果。
-
二、MVC 运行流程
-
用户在 View(页面)发起请求。
-
Controller 接收请求,调用 Model 处理业务逻辑和数据。
-
Model 将结果返回给 Controller。
-
Controller 将结果交给 View,渲染给用户。
三、MVC 模式示意图
+-------------+
| Controller|
+------+------+
|
v
+-------+-------+
| Model |
+-------+-------+
|
v
+------+------+
| View |
+-------------+
四、MVC 模式的优缺点
✅ 优点
-
关注点分离:职责清晰,降低耦合度。
-
可维护性高:Model、View、Controller 可以独立修改。
-
可扩展性强:支持多人协作开发(前端、后端分工)。
⚠️ 缺点
-
项目复杂度增加,小型项目可能显得笨重。
-
Controller 可能过于臃肿(称为“胖控制器”)。
-
View 和 Controller 仍可能存在依赖。
五、使用场景
-
Web 开发(Spring MVC、ASP.NET MVC、Django)
-
桌面应用(Java Swing、.NET WinForms)
-
移动应用(iOS MVC 架构,Android MVC 早期应用)
六、代码示例
以 Java Servlet + JSP + JDBC 为例:
1. Model(业务逻辑 + 数据操作)
public class User {
private int id;
private String name;
private String email;
// getter/setter
}
public class UserDao {
public User getUserById(int id) throws Exception {
Connection conn = DBUtil.getConnection();
String sql = "SELECT * FROM users WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
User user = null;
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setEmail(rs.getString("email"));
}
conn.close();
return user;
}
}
2. Controller(控制器)
@WebServlet("/user")
public class UserController extends HttpServlet {
private UserDao userDao = new UserDao();
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
int id = Integer.parseInt(req.getParameter("id"));
try {
User user = userDao.getUserById(id);
req.setAttribute("user", user);
req.getRequestDispatcher("userView.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
}
}
3. View(JSP 页面)
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<html>
<head><title>User Info</title></head>
<body>
<h2>User Information</h2>
<p>ID: ${user.id}</p>
<p>Name: ${user.name}</p>
<p>Email: ${user.email}</p>
</body>
</html>
七、总结
-
MVC 本质:通过分层架构降低耦合、提高维护性。
-
小项目:MVC 可能显得繁琐,可以用简化版(MVVM 前端框架更常见)。
-
中大型项目:MVC 是主流选择,尤其是 Java Web (Spring MVC)、前端 React/Vue 的 MVVM。
&spm=1001.2101.3001.5002&articleId=150615073&d=1&t=3&u=224b880ff0564b978ca1677f24bf0ebf)
8646

被折叠的 条评论
为什么被折叠?



