JSP开发模式
jsp开发模式的发展
1.模式1:(适合小型项目的技术的开发)
    a.第一版本号。纯jsp(封装数据。处理数据,显示数据)
    b.第二版本号,Jsp+JavaBean.
        jsp:收集数据,显示数据
        JavaBean:封装、处理
2.模式2:servlet+Jsp+JavaBean(是mvc在java中的详细的实现,是java技术实现的详细的内容)
    a.servlet:负责协调jsp和javabean,获得数据,处理数据(业务逻辑),封装到javabean中,选择jsp去显示数据。
    b.jsp:显示
    c.JavaBean:封装和简单处理
思想:业务处理与显示数据相分离。

软件设计模式
1.MVC软件设计模式(和java无关)
是一种分离业务逻辑和显示界面的设计方法。
M:model模型
V:view视图
C:Controller控制器

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHlta2luZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

2.对于javaweb开发的mvc模式:

servlet(controller)+jsp(view)+javabean(model)

那么经典的三冊架构的体系图例如以下:
达到这样的经典的三层架构以后。javaweb的架构已经非常不错了。可是从软件project角度分析,上述架构还是存在问题。

那么看一下上述架构的使用。

在中心的黄色部分:也就是服务端部分。层与层之间的调用关系。

举一个样例:

web层:UserServlet.java类

service层:UserService类

dao层:UserDao类

javaBean:user

那么层与层之间的调用关系就该是这样:

在UserServlet.java中调用UserService。

那么调用的方式仅仅能是在UserServlet类中去创建UserService的对象。

例如以下:

class    UserServlet{

UserServcie userService=new UserService();

//调用userService的相关方法进行业务逻辑的操作

。。



}

同理:UserService调用UserDao的时候,也有类似上述的代码。

有上述的分析得出结论1:

1.那么上述代码之间的层与层之间的关系就非常紧密。

是违背了软件project的设计思想的。

软件project要求,模块与模块之间的耦合式越低越好。一句经典的软件project设计的话是这种。

“高内聚。低耦合”。

同一时候上述的dao层,我们看一下既有对xml的操作,也有对db的操作,甚至还有很多其它。

得出了结论2:

          2.上述架构。同一时候违背了“高内聚。低耦合”中的高内聚的思想。

于是上面的架构体系又有了例如以下的增进:

对于上述的架构图进行分析:

看service层。dao层

    1.解决dao层的内聚问题,把xmlDao和dbDao进行分离。

    2.对dao层抽取一个共性的接口出来。Dao接口

    分析:之前的架构中,service层调用dao层是这种。

UserService中须要写这种代码:XmlDao xmlDao=new XmlDao()//此时没有接口

    加上接口以后,Dao dao=new XmlDao();

    3.加入工厂

    上面的写法变成:Dao dao=Factory.getXmlDao();

    那么工厂怎样调用dao层的相关方法呢?假设直接调用,出现的结果是尽管攻克了service层和dao层之间的耦合关系,可是事实上仅仅只是演变

    成了工厂和dao层之间的高耦合。

那么增加了xml技术,工厂通过读取xml文件。然后利用java的反射,去创建所需创建的对象就ok了。

    而在xml中仅仅要提供了类的全路径。然后做相关配置,目的是方便工厂去读取xml文件去创建对象。

    4.加入配置文件。

配置文件不过字符串。和dao层之间没有耦合关系。

总结:对于第三种架构(高内聚。低耦合),便于维护,便于扩展。

为什么便于扩展,举个样例:比方。dao层中。又有了新的持久化技术,service层实际上无所知道不知道。仅仅要改动配置文件。

工厂就会去有

对应的操作。这样一来,是不是便于维护和扩展。



上面了。我们看了service层。dao层,通过接口,工厂类,配置文件的方式实现了解耦。

同理,web层,service层也能够通过同样的方式的进行解耦。

在上图中没有全然体现。



随着技术的发展。出现了非常多mvc的框架比方struts+spring+hibernate/springMvc.

在刚出现这些框架的时候,基本上都是通过上述方式进行解耦。

用过框架的人都知道,框架多基于配置文件,反射原理,内省等。

再发展了现在,搞架构的那些人,认为。写配置文件也非常费劲。就有了现在的基于注解模式的框架设计。

可是。上述的架构思想,和演变过程,是后期框架技术的源头哦。

后期,我也会对JavaWeb项目开发过程的框架技术结合MVC设计模式做更深入的分析。

通常javaweb+框架技术的开发,被人们称

作java企业级开发。

也就比較的流行的J2EE/JAVAEE.

补充:在javaweb项目的基于MVC软件设计模式,通常会进行例如以下分包结构:

使用分包描写叙述结构

com.ghsy ,公司域名倒写(安徽安庆高恒塑业有限责任公司)

com.ghsy.项目名称

com.ghsy.项目名称.dao                   
dao接口

com.ghsy.项目名称.dao.impl              
dao实现类

com.ghsy.项目名称.service               
service接口

com.ghsy.项目名称.service.impl          
service实现类

com.ghsy.项目名称.web.servlet           
servlet处理类

com.ghsy.项目名称.web.filter            
过滤器处理类

com.ghsy.项目名称.web.listener          
监听器处理类

com.ghsy.项目名称.domain                
javabean 封装数据(bean)

com.ghsy.项目名称.utils                 
工具类

com.ghsy.项目名称.exception             
自己定义异常

com.ghsy.项目名称.constant              
java常量 Xxx.NAME

/WEB-INF/  jsp页面,安全

* 使以请求转发显示器jsp页

版权声明:本文博主原创文章。博客,未经同意不得转载。

MVC设计模式JavaWeb实现的更多相关文章

  1. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  2. javaweb三大框架和MVC设计模式

    javaweb三大框架和MVC设计模式 转载,原文请见https://blog.csdn.net/sunpeng19960715/article/details/50890705 一.MVC设计模式 ...

  3. JavaWeb笔记——MVC设计模式和JavaWeb经典三层架

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

  4. 转载 javaweb三大框架和MVC设计模式 (自己加拉些内容)

    javaweb三大框架和MVC设计模式 一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基 ...

  5. IT兄弟连 JavaWeb教程 MVC设计模式

    MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它强制性地把应用程序的数据展示.数据处理和流程控制分开.MVC把应用程序分成3个核心模块:模型.视 ...

  6. MVC设计模式与JavaWEB三层架构

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

  7. Javaweb MVC设计模式

    Javaweb MVC设计模式 一.Java EE开发流程 二.MVC设计模式 什么是MVC? MVC是Model-View-Controller的简称,即模型-视图-控制器. MVC是一种设计模式, ...

  8. 浅谈javaweb三大框架和MVC设计模式

    一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...

  9. MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

    设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...

随机推荐

  1. php install extension

    wget http://nginx.org/download/nginx-1.8.0.tar.gz wget http://nginx.org/download/nginx-1.8.0.tar.gz ...

  2. Linux学习之挂载

    linux的系统组织方式是——整个系统从根开始,按树形目录依次向下逐渐扩大,分类存放不同用途的文件,/读作“斜线”,英文slash:当其写作一个路径时,第一个/表示根,即root,其他的/表示路径分割 ...

  3. MySql按指定天数进行分组数据统计分析 2

    上次的随笔1中写的分组方式,经分析,是从前往后进行分组,即若选择2014的数据进行统计每11天为一组的话,1的分组方式, 按照2014-01-01——2014-01-11为一组,之后每11天为一组. ...

  4. C++の友元の例

    #include<iostream> #include<cmath> using namespace std; class Point { public: Point(doub ...

  5. POJ 1823 Hotel 线段树

    题目链接 线段树的区间合并. 和上一题差不多....第三种操作只需要输出maxx[1]的值就可以. #include <iostream> #include <vector> ...

  6. [Java]使用队列求解josephus问题

    约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环. 有个囚犯站成一个圆圈,准备处决.首先从一个人开始,越过个人(因为第一个人已 ...

  7. linux之sed

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  8. .NET DataGrid 导出Excel 无分页

    #region 导出Excel // protected void BtnExcelClick(object sender, EventArgs e) { ToExcel(); } public vo ...

  9. 简单makefile的写法

    一个项目下的文件比较多,如果单个的输入,比较费劲,所以就需要把编译过程写进一个MakeFile文件中. 下面建立5个文件,3个cxx文件,2个hxx头文件 //filename main.cxx #i ...

  10. c++程序内存泄露检測工具

    功能: 用于检測c++程序的内存泄露. 原理: 事实上非常easy,就是通过函数的重载机制,捕获应用程序的new, new[] , delete , delete[], malloc,calloc,f ...