• MVC设计模式JavaWeb实现


    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控制器
    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页


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

  • 相关阅读:
    Python中读取文件中的json串,并将其写入到Excel表格中
    Python中替换敏感字
    Python写一个批量生成账号的函数
    解决MySQL不允许远程连接的问题
    Jenkins安装与配置
    Jmeter监听tomcat
    onlyoffice document docker版安装使用总结
    onlyoffice-DocumentServer 的权限验证
    docker 部署es
    docker部署graylog使用教程
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4797966.html
Copyright © 2020-2023  润新知