一MVC概念
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
二MVC三个层次
1.Model(模型)
体现:实体类(entity、Javabean、pojo、domain)、Dao层......
特点:模型表示业务数据和业务逻辑、一个模型能为多个视图提供数据
2.View(视图)
体现:JSP页面
特点:1.视图是用户看到并与之交互的界面
2.视图向用户显示相关数据
3.接受用户的输入
4.不进行任何实际的业务处理
3.Controller(控制器)
体现:servlet
特点:1.控制器接受用户的输入并调用模型和视图去完成用户的需求
2.控制器接受请求并决定调用哪个模型组件去处理请求,然后决定调用那个视图来显示模型处理返回的数据
三、框架和设计模式的区别
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。
框架模式有哪些?
MVC、MTV、MVP、CBD、ORM等等;
框架有哪些?
C++语言的QT、MFC、gtk,Java语言的ssh 、SSL
,php语言的 smarty(MVC模式),python语言的django(MTV模式)等等
设计模式有哪些?
工厂模式、适配器模式、策略模式等等
简而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。
四、逻辑图展示MVC处理过程
五、使用MVC模式实现基本的登陆功能
只展示一部分:
Buser
public class Buser {
private int ubid;
private String uname;
private String upass;
public int getUbid() {
return ubid;
}
public void setUbid(int ubid) {
this.ubid = ubid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public Buser() {
super();
// TODO Auto-generated constructor stub
}
public Buser(int ubid, String uname, String upass) {
super();
this.ubid = ubid;
this.uname = uname;
this.upass = upass;
}
public Buser(String uname, String upass) {
super();
this.uname = uname;
this.upass = upass;
}
@Override
public String toString() {
return "Buser [ubid=" + ubid + ", uname=" + uname + ", upass=" + upass + "]";
}
}
BuserDao
public interface BuserDao {
public boolean Login(Buser b);
public int addUser(Buser b);
}
BuserDaoImp
public class BuserDaoImp implements BuserDao{
@Override
public boolean Login(Buser b) {
boolean flage=false;
Connection connection=DBHelper.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=connection.prepareStatement("select * from buser where uname=? and upass=?");
ps.setString(1, b.getUname());
ps.setString(2, b.getUpass());
rs=ps.executeQuery();
flage=rs.next();
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBHelper.closeConnection(connection, ps, rs);
}
return flage;
}
}
BuserBiz
public interface BuserBiz {
public boolean Login(Buser b);
}
BuserBizImp
public class BuserBizImp implements BuserBiz{
private BuserDao buserDao;
public BuserBizImp(){
buserDao = new BuserDaoImp();
}
@Override
public boolean Login(Buser b) {
return buserDao.Login(b);
}
}