MVC框架强制性的把各层的实现功能划分开,各自处理各自的任务,利于解耦和,极大的增强了代码的可读性、维护性。
D(Dao)数据访问层(持久化层)——数据的增删改查,与数据库建立连接;封装了对数据库的curd操作
V(View)视图层——与用户交互的数据区
C(Controller)控制层——1、接收用户传递过来的数据,将数据封装到实体类中 2、调用业务逻辑层,处理进行业务逻辑的处理 3、根据业务逻辑层返回的结果,进行不同的页面跳转(显示)
S(Service)业务逻辑层——做一些业务逻辑地处理,并给控制层返回结果
另外,由工具层(util),实体类层(model/po/pojo)(——JavaBean只有私有的成员变量和getter/setter方法),公共层被其他层调用,为其提供服务
接下来就大致模拟一个前台买家登陆注册系统,来感受一下MVC分层的优势:
import java.util.Scanner;
public class UserController {
UserService us = new UserService();
// GoodsService gs = new GoodsService();
Scanner in = new Scanner(System.in);
public void regist(){
System.out.println("************欢迎进入用户注册模块****************");
//接收用户输入的数据
System.out.println("请输入用户名:");
String username = in.next();
System.out.println("请输入密码");
String password = in.next();
System.out.println("请输入手机号:");
String phone = in.next();
System.out.println("请输入Email:");
String email = in.next();
//将数据封装到实体类中(User)
User user = new User(username,password,phone,email);
us.regist(user);
}
public void login(){
System.out.println("欢迎进入用户登录模块");
System.out.println("请输入用户名:");
String username = in.next();
System.out.println("请输入密码:");
String password = in.next();
boolean flag = us.login(username,password);
if(flag){
System.out.println("登录成功");
// Goods[] goodss = gs.getAllGoods();
}else {
System.out.println("用户名或者密码错误");
}
}
}
public class UserService {
UserDao userDao = new UserDao();
public void regist(User user){
boolean flag1 = CheckUtil.noNullCheck(user.getUsername());
if(!flag1){
System.out.println("用户名不能为空");
return;
}
boolean flag = UserDB.contain(user.getUsername());
if(flag){
System.out.println("用户名已存在,不能注册");
return;
}
userDao.save(user);
userDao.printUsers();
}
public boolean login(String username,String password){
return userDao.checkLogin(username,password);
}
}
public class UserDao {
public void save(User user){
UserDB.saveUser(user);
}
public void printUsers(){
for(int i = 0; i < UserDB.user_count;i++){
User user1 = UserDB.USER_TABLE[i];
System.out.println(user1.getUsername() + "," + user1.getPassword() + "," + user1.getPhone());
}
}
//登录的dao层实现
public boolean checkLogin(String username,String password){
return UserDB.checkLogin(username,password);
}
}
//Goods类
public class Goods {
private int goodsId;
private String goodsName;
private String goodsDesc;
private double goodsPrice;
public Goods(int goodsId, String goodsName, String goodsDesc, double goodsPrice) {
this.goodsId = goodsId;
this.goodsName = goodsName;
this.goodsDesc = goodsDesc;
this.goodsPrice = goodsPrice;
}
public int getGoodsId() {
return goodsId;
}
public void setGoodsId(int goodsId) {
this.goodsId = goodsId;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public String getGoodsDesc() {
return goodsDesc;
}
public void setGoodsDesc(String goodsDesc) {
this.goodsDesc = goodsDesc;
}
public double getGoodsPrice() {
return goodsPrice;
}
public void setGoodsPrice(double goodsPrice) {
this.goodsPrice = goodsPrice;
}
}
//User类
public class User {
private String username;
private String password;
private String phone;
private String email;
public User(){}
public User(String username, String password, String phone, String email) {
this.username = username;
this.password = password;
this.phone = phone;
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
//Checkutil 类
public class CheckUtil {
public static boolean noNullCheck(String str){
if("".equals(str)){
return false;
}
return true;
}
}
//GoodsDB 类
public class GoodsDB {
public static final Goods[] GOODS_TABLE = new Goods[100];
public static int goods_count;
static {
//GOODS_TABLE[1] = new Goods(传参);
}
}
//MyArray 类
public class MyArray {
private Object[] objs;
}
//UserDB 类
public class UserDB {
public static final User[] USER_TABLE = new User[100];
public static int user_count;
public static void saveUser(User user){
USER_TABLE[user_count++] = user;
}
public static boolean contain(String username){
for(int i = 0; i < user_count; i++){ if(username.equals(USER_TABLE[i].getUsername())){
return true;
}
}
return false;
}
public static boolean checkLogin(String username,String password){
for(int i = 0; i < user_count; i++){
if(username.equals(USER_TABLE[i].getUsername()) && password.equals(USER_TABLE[i].getPassword())){ return true;
}
}
return false;
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) { System.out.println("****************************************");
System.out.println("* *");
System.out.println("* 欢迎来到睿乐购 *");
System.out.println("* *"); System.out.println("****************************************");
System.out.println("系统功能:1:用户注册,2:用户登录,-1:退出系统");
while(true){
System.out.println("请选择功能");
Scanner in = new Scanner(System.in);
int func = in.nextInt();
//退出系统
if(func == -1){
break;
}
switch (func){
case 1: { //用户注册
//调用控制层
UserController c = new UserController();
c.regist();
break;
}case 2: { //用户登录
break;
}default:
System.out.println("您输入的信息有误,再好好看,重新输入");
}
}
}
}