写了几天代码,然后对之前学到的知识,进行反思,写出来放在QQ空间上和博客上,目的是互相学习,然后希望可以得到编程高手的补充!这是我转载加修改的博客。

这是我做了2、3天左右的JavaWeb管理系统,bean package放JavaBean类,dao package放数据库操作方法的接口类。daoimpl是实现dao接口的类。factory package是dao工厂类。util package是工具包类,里面有数据库连接类和 分页类。servlet package是servlet类,是整个JavaWeb项目的控制类。view文件夹里全是.jsp文件。

学习MVC设计模式之前,先学习DAO设计模式。下面是我转的博客,是个挺不错的例子

DAO设计模式:

1、DAO简介:

DAO设计模式是属于J2EE数据层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性。

2、DAO各部分详解:

DAO设计模式包括以下5个主要部分:

(1)、数据库连接类;

数据库连接类的主要功能是连接数据库并获得连接对象,以及关闭数据库。通过数据库连接类可以大大的简化开发,在需要进行数据库连接时,只需常见该类的实例,并调用其中的方法就可以获得数据库连接对象和关闭数据库,不必再进行重复操作。例:

Package com.javaweb.dao1

Import java.sql.*;

Public class DataBaseConnection{

Private final String DBDRIVER = “com.mysql.jdbc.Driver”;

Private final String DBURL = “jdbc:mysql://localhost:3306/javaweb”;

Private final String DBUSER = “root””;

Private final String DBPASSWORD = “585762”;

Private Connection conn = null;

Public DataBaseConnection(){

Try{

Class.forName(DBDRIVER);

This.conn =

DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);

}catch(Exception e){

System.out.println(“加载数据库驱动失败!”);

}

}

Public Connection getConnection(){

Return conn;

}

Public void close(){

Try{

Conn.close();

}catch(){

System.out.println(“数据库连接关闭失败!”);

}

}

}

Package com.javaweb.dao1Import java.sql.*;Public class DataBaseConnection{ Private final String DBDRIVER = “com.mysql.jdbc.Driver”; Private final String DBURL = “jdbc:mysql://localhost:3306/javaweb”; Private final String DBUSER = “root””; Private final String DBPASSWORD = “585762”; Private Connection conn = null; Public DataBaseConnection(){ Try{ Class.forName(DBDRIVER); This.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); }catch(Exception e){ System.out.println(“加载数据库驱动失败!”); } } Public Connection getConnection(){ Return conn; } Public void close(){ Try{ Conn.close(); }catch(){ System.out.println(“数据库连接关闭失败!”); } }}

(2)、VO类:

VO类是一个包含属性和表中字段完全对应的类,并在该类中提供setter和getter方法来设置并获取该类中的属性。例:

Package com.javaweb.dao1

Public classs User{

Private int userid;

Private String username;

Private String password;

Public int getUserid(){

Return userid;

}

Public void setUserid(int userid){

Return userid;

}

Public String getUsername(){

Return username;

}

Public void setUsername(String username){

Return username;

}

Public String getUserpassword(){

Return userpassword;

}

Public void setUserid(String userpassword){

Return userpassword;

}

}

Package com.javaweb.dao1Public classs User{ Private int userid; Private String username; Private String password; Public int getUserid(){ Return userid; } Public void setUserid(int userid){ Return userid; } Public String getUsername(){ Return username; } Public void setUsername(String username){ Return username; } Public String getUserpassword(){ Return userpassword; } Public void setUserid(String userpassword){ Return userpassword; }}

(3)、DAO接口:

DAO接口中定义了所有的用户操作,如添加记录、删除记录及查询记录等。不过因为是借口,所以仅仅是定义,需要子类实现。例:

Package com.javaweb.dao1;

Import java.util.*;

Public class UserDAO{

public void insert(User user)throw Exception;

Public void update(User user)throw Exception;

Public void delete(int userid)throw Exception;

Public User queryById(int userid)throw Exception;

Public List queryAll()throw Exception;

}

Package com.javaweb.dao1;Import java.util.*;Public class UserDAO{ public void insert(User user)throw Exception; Public void update(User user)throw Exception; Public void delete(int userid)throw Exception; Public User queryById(int userid)throw Exception; Public List queryAll()throw Exception;}

(4)、DAO实现类:

DAO实现类实现了DAO接口,并实现了接口中定义的所有方法。

(5)、DAO工厂类:

在没有DAO工厂类的情况下,必须通过创建DAO实现类的实例才能完成数据库操作。这时就必须知道具体的子类,对于后期的修改非常不方便。

使用DAO工厂类,可以比较方便地对代码进行管理,而且可以很好地解决后期修改的问题,通过该DAO工厂类的一个静态方法来获取DAO实现类实例。这时如果要替换DAO实现类,只需要修改该Dao工厂类中的方法代码,而不必邀修改所有的操作数据库代码。例:

Package com.javaweb.dao1;

Public class DAOFactory{

Public static UserDAO getUserDAOInstance(){

Return new UserDAOImpl();

}

}

Package com.javaweb.dao1;Public class DAOFactory{ Public static UserDAO getUserDAOInstance(){ Return new UserDAOImpl(); }}

3、使用DAO完成数据库操作:

(1)、添加记录:

(2)、更新记录:

(3)、删除记录:

(4)、查询记录:

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC模式最早由Trygve Reenskaug在1978年提出施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

(控制器Controller)- 负责转发请求,对请求进行处理。

(视图View) - 界面设计人员进行图形界面设计。

(模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型:模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusionComponents这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

优点:

在最初的JSP网页中,像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心地计划和不断的尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它带给我们的好处是毋庸置疑的。

首先,多个视图能共享一个模型。如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能够通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同时能提供Internet界面和WAP界面。在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。

其次,控制器是自包含(self-contained)指高独立内聚的对象,与模型和视图保持相对独立,所以可以方便的改变应用程序的数据层和业务规则。例如,把数据库从MySQL移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变控制器即可。一旦正确地实现了控制器,不管数据来自数据库还是LDAP服务器,视图都会正确地显示它们。由于MVC模式的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。

此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的的视图将处理结果显示给用户。

MVC的优点

1.低耦合性视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。2.高重用性和可适用性随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。3.较低的生命周期成本MVC使开发和维护用户接口的技术含量降低。4.快速的部署使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。5.可维护性分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。6.有利于软件工程化管理由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。

ea设计 mvc模式_MVC设计模式相关推荐

  1. java设计与模式_设计模式《JAVA与模式》之状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...

  2. jsp的MVC模式设计用户登陆注册

    jsp的MVC模式设计用户登陆注册 用户登陆功能 1.实验内容 2.实验步骤 3.实验结果 4.实验分析 用户登陆功能 通过设计用户的登陆和注册,来学习jsp的MVC模式,熟练掌握MVC模式各部分的内 ...

  3. python的设计模式之MVC模式

    模型-视图-控制器模式 关注点分离(Separation of Concerns,SoC)原则是软件工程相关的设计原则之一.SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注 ...

  4. [软件工程-设计模式] GRASP软件设计的模式和原则

    GRASP 模式 前言 1. 信息专家 (Information Expert) 2. 创造者(Creator) 3. Low coupling (低耦合) 4. High cohesion (高内聚 ...

  5. mvc设计模式_MVC设计模式

    mvc设计模式 MVC Design Pattern is one of the oldest architectural pattern for web applications. MVC stan ...

  6. 设计模式中,MVC模式与MVT模式的区别

    1.MVC模式 有一种程序设计模式叫MVC,其核心思想是分工.解耦,让不同的代码块之间降低耦合,增强代码的 可扩展性和可移植性,实现向后兼容. MVC的全拼为Model-View-Controller ...

  7. 设计模式-MVC模式

    上文(设计模式-访问者模式):https://blog.csdn.net/qq_16498553/article/details/106912484 目录 背景 MVC模式模式是什么? 角色: 优点: ...

  8. Java面向对象和MVC模式设计练习——快递管理系统

    快递管理系统 一.任务概述 二.MVC设计模式 1.定义 2.优点 a.低耦合 b.复用性强 三.思路梳理 1.MVC架构设计 a.Controller b.Model c.View 2.流程控制 3 ...

  9. 基于MVC模式下的二手车拍卖平台设计

    课程名称:<软件体系结构与设计模式> 实验项目名称:基于MVC模式下的二手车拍卖平台设计 实验内容 按下列要求编写程序并上机调试运行: 拍卖系统要又三个显示界面,分别是车体图片,文字描述和 ...

最新文章

  1. 提取Jar2Exe源代码,JavaAgent监控法
  2. python函数的用法详解(作用、定义、调用、函数参数、函数返回值、函数说明文档、函数嵌套使用)
  3. Linux常用命令及技巧4
  4. 九九乘法表的python复习
  5. 企业核心员工的长期激励计划
  6. Chrome 前端 插件
  7. oracle 创建用户且只有查看权限
  8. android asynctask源码分析,Android异步任务AsyncTask的使用与原理分析
  9. 基于SSM的旅游管理系统
  10. Rocket-chip-Cache
  11. 《那些年啊,那些事——一个程序员的奋斗史》二
  12. 阅读STC(宏晶)公司的芯片手册知识
  13. oracle spatial 更新,oracle Spatial(空间数据库)概述
  14. FDTD_谐振腔的Q值计算(2D/3D)
  15. 重启Android手机代码
  16. 平开式窗帘有哪些选购要点?-好佳居窗帘十大品牌
  17. 2015境外人气餐厅榜单!你吃过几家?
  18. Python数据分析6——数据规整
  19. SpringBoot 官方强烈推荐,连接池,太快了!
  20. html中图片不溢出,防止图片过大超出DIV的CSS样式

热门文章

  1. localStorage.setItem()与localStorage.getItem()的使用
  2. 小黑盒不显示服务器,刚买的游戏小黑盒为什么不显示 | 手游网游页游攻略大全...
  3. 电脑安装打印机设备搜索不到解决记录
  4. Vue修改自带组件el-input样式
  5. 编程实现恐龙识别系统编程表示
  6. 电磁铁和永久性磁铁的相同点和不同点
  7. [附源码]计算机毕业设计Python甜品购物网站(程序+源码+LW文档)
  8. EndNote输出样式(Output Style)的应用与编辑
  9. Centos7下安装RabbitMQ教程
  10. 苹果蓝牙耳机怎么接电话_苹果蓝牙耳机哪种好?音质最佳的五大爆款耳机