MVC核心思想:
将业务/数据/界面分离,各司其职,从而降低了耦合性。
MVC设计思想示意图:
MVC思想小例子 ——登陆功能
1.控制台模拟前端 —— View
// 控制台模拟前端
public class Demo01 {
MyController con = new MyController();
@Test
// -> 登录
public void loginTest() {
// 0.填写用户名/密码 - 前端
// 1.获得用户名/密码 -> 对象
Scanner console = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = console.nextLine();
System.out.println("请输入密码:");
String password = console.nextLine();
// 封装成对象,输入封装成User很简单,代码不再展示
User user = new User(name, password);
// 将对象交给控制器 -> 登录操作
User loginUser = con.login(user);
// 4.结果显示 - 前端
System.out.println(loginUser.getName() + " 欢迎登录!");
}
}
2.Controller
//控制器
public class MyController {
public User login(User user) {
// 调用数据库的操作,将参数传给数据库
UserDAO ud = new UserDAO();
User loginUser = ud.findUserByUserAndPwd(user.getName(), user.getPassword());
if (loginUser == null) {
// 实际开发中,是自定义的异常
throw new RuntimeException("用户名/密码错误");
}
return loginUser;
}
}
**3.操作数据库的UserDAO **
// 操作数据库 DAO: Data Access Object
public class UserDAO {
// 2.获得数据库连接
// 3.操作增/查 -> 对象
public User findUserByUserAndPwd(String username, String password) {
Connection conn = C3P0Utils.getConnection();
String sql = "select * from user_bao where username=? and password=?";
try {
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
// 将查询结果封装成对象
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("username"));
user.setPassword(rs.getString("password"));
return user;
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
4.module——就是前面的User类(JavaBean),不再详细阐述