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. classpath的总结

    转自:http://blog.csdn.net/javaloveiphone/article/details/51994268   版权声明:本文为博主原创文章,未经博主允许不得转载. 1.src不是 ...

  2. jQ的自定义插件

    此文运用的是优雅的Markdown而书 项目中写js时,有很多时候有需要重复利用的东西,我们可以给它们写成一个插件的形式,这样阅读性和适用性都会大大提高.最近抽个时间,好一番的研究了下 Jcrop 的 ...

  3. SVN权限配置

    初始化SVN仓库后,里面有以下文件. 其中conf是对授权.认证进行管理的,conf目录里的内容有: passwd设立账户密码: authz权限管理: 假设pwd里有user1,user2两个账户 @ ...

  4. JConsole是什么

    从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JConsole(或者,它更高端的 “ ...

  5. C# DLL文件注册问题(涉及AxInterop.WMPLib.dll等)

    近日遇到问题,给客户安装软件涉及视频等音影播放,安装软件启动过程遇到这样问题: 分析报错原因: 没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG ...

  6. Hibernate 配置详解(12) 其实我也不想用这么土的名字

    hibernate.hbm2ddl.import_files 这个配置用于在hibernate根据映射文件执行DDL之前,如果我们自己设置了要事先运行的SQL文件,hibernate就会先执行这些SQ ...

  7. JSONP跨域的原理解析及其实现介绍

    JSONP跨域的原理解析及其实现介绍 作者: 字体:[增加 减小] 类型:转载 时间:2014-03-22 JSONP跨域GET请求是一个常用的解决方案,下面我们来看一下JSONP跨域是如何实现的,并 ...

  8. js动画学习(五)

    九.多属性同时运动 前面的例子都是每个属性单独运动,如果想要多属性同时运动怎么办?比如,我想要一个div的onmouseover事件中宽和高同时变化.下面这个函数是单独变宽: window.onloa ...

  9. Objective-c 数组对象

    首先我们必须知道数组的概念:数组是有序的对象集合,一般情况下,一个数组的对象都是相同类型的.数组当中也存在可变数组和不可变数组. 1. 不可变数组 (NSArray) 可变数组 NSMutable 是 ...

  10. <精华篇>:iOS视频大全-持续更新

    注意:新浪微博分享的资料和简书分享的资料,略有不同! 小码哥swift3.0版 斗鱼项目视频:点击下载  iOS开发25个项目实战:点击下载 2016PHP全套下载:点击下载  黑马刀哥iOS视频精选 ...