SSH-Struts(一)——基本原理「建议收藏」

SSH-Struts(一)——基本原理

大家好,又见面了,我是全栈君。

简单介绍

    Struts框架是MVC的一个实现,它非常好的结合了JSP、Servlet、JavaBean、Taglib等技术。它为MVC的各层提供了良好的支持,就像房地产商盖房子时先盖的大楼框架。

仅仅要引入到项目就相当于你已经有了主要的雏形。
    ok,在概念的层面去理解偏技术的知识,我不觉得这是一个好的出发点。对于这类知识的学习最好的方法应该是,动手。所以,我们不寻求准确的概念定义。而是从使用中来认知。

回想

    MVC

    作为MVC的一个实现。学习之前我们先简单的回想一下MVC的内容。MVC架构模式。将一个应用程序的出入、处理、输出流程分为:模型层、视图层、控制层。MVC模式下的各层关系和功能例如以下图(注:图片来源于《征服JSP企业站点开发》443页):

SSH-Struts(一)——基本原理「建议收藏」

    有关MVC的东西都在这张图里了,这里要提个题外话:MVC和三层的关系。听到也看到不少关于这两个的讨论,结论基本都是这两种模式没有关系。个人觉得这是从两种不同的角度去优化程序结构的。

MVC是从处理流程的角度去划分:显示、控制、处理;而三层则是从功能的角度出发:显示、逻辑处理、数据訪问。这两种模式是不冲突的!他们的关系也就是这么个关系了,不能简单的说是有或者没有关系。有点太粗暴了。

    Model1

    Model1也是MVC的一种,通过JSP+JavaBean来实现。由于JSP页面能够非常方便的写入JavaBean的代码涉及业务逻辑,也能够结合Html用用于显示。又能够通过Javascript来控制流转。也就是说JSP在应用程序中担当了多种角色:负责与client的通信、处理请求、处理回复。

这种结构的长处是简单、方便,能够高速的完毕应用开发。同一时候。也由于这种结构也导致了其开发的分配以及后期的维护的困难。如图为Model1的结构(注:图片来源《STRUTS有用开发指南 基于MVC+MYECLIPSE的JAVA WEB应用开发》3页)

SSH-Struts(一)——基本原理「建议收藏」

    Model2

    为了改善Model中JSP页面的指责过多而带来的问题,Model2引入了Servlet充当控制器,同一时候不在JSP中写入Java代码来直接訪问数据库。这样就是程序的各个部分职责单一明白了。即JSP页面仅仅负责显示。Servlet负责流转。

这样维护起来就相对easy。同一时候开发时的分工的界限也能够非常确定。这样做的导致的缺点则是处理流程变的复杂,本来一个JSP就能够搞定的事情如今则须要分多个步骤才干够完毕。Model2的结构例如以下图(注:图片来源同上一张,5页):

SSH-Struts(一)——基本原理「建议收藏」

Struts 

    Mode1和Model2仅仅是概念,Sturts则是实现。Struts是MVC的一种实现。说的准确一点应该是Model2的实现。

直接看图吧:

SSH-Struts(一)——基本原理「建议收藏」

    Struts对Model2的各个部分都做了实现,可是其最重点的是页面流转的部分。

即图中的ActionServlet+struts-config.xml的部分,使得页面流转的路径非常清晰。同一时候灵活性也非常好。
   小结:本篇博客主要是从MVC的概念到Struts的架构的实现一步一步的了解。从而可以知道Struts各个部分相应的MVC的什么概念。以及在应用程序中的角色。至于具体的Struts内的组件将在兴许的博客中介绍。

这样吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116151.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”「建议收藏」

    idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”「建议收藏」首先声明一下,我用的IntellijIDEA2018.3版本的,springboot的版本是2.0.5.RELEASE版本。当我喜滋滋的编写完测试代码,点击Debug的时候,睁大眼睛看控制台简直是看得一脸懵逼,控制台显示如下:SLF4J:Failedtoloadclass"org.slf4j.impl.StaticLoggerBinder".SLF4J:D…

    2022年10月3日
    3
  • 因果图方法是根据( )之间的因果关系来设计测试用例的_因果图法符号

    因果图方法是根据( )之间的因果关系来设计测试用例的_因果图法符号原标题:因果推断简介之五:因果图(CausalDiagram)编辑部于2019年10月在微信端开启《朝花夕拾》栏目,目的是推送2013年(含)之前主站发表的优秀文章,微信端与主站的同步始于2013年年初,然而初期用户量有限,故优质文章可能被埋没。这部分介绍JudeaPearl于1995年发表在Biometrika上的工作“Causaldiagramsforempirica…

    2022年8月14日
    5
  • vuex使用教程(最好最详细的乒乓教程)

    最详细的Vuex教程什么是Vuex?vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性。引入Vuex(前提是已经用Vue脚手架工具构建好项目)1、利用npm包管理工具,进行安装vuex。在控制命令行中输入下边的命令就可以了。npminstallvuex

    2022年4月14日
    115
  • [nginx源码]FastCGI模块详解

    [nginx源码]FastCGI模块详解目录1.初识FastCGI协议1.1消息头1.2消息体举例2.基础知识2.1FastCGI配置2.2FastCGI配置预处理3.构造FastCGI请求3.1FastCGI请求结构3.2计算请求第一部分长度3.3填充请求第一部分3.4填充请求第二三部分4.实战4.1配置4.2FastCGI请求包总结1.初识FastCGI协议…

    2022年7月11日
    19
  • BD和DVD区域划分

    BD和DVD区域划分BD和DVD区域划分BD:A区:只能是在美国、日本以及香港、台湾等东南亚地区正常播放;B区:只能在欧洲和澳洲等国家正常播放;C区:是在中国大陆、俄罗斯和印度三国才能正常播放。DVD:第一区为:美国、加拿大;第二区为:日本、欧洲、埃及、南非、中东;第三区为:中国台湾、中国香港特别行政区、南韩、东南亚;第四区为:澳洲、新西兰、中南美洲、南太平洋岛屿;第五区为:俄罗斯、蒙古、印度

    2022年7月11日
    33
  • TCP/IP协议详解

    TCP/IP协议详解认识HTTP协议它是互联网协议(InternetProtocolSuite),一个网络通信模型,是互联网的一个基本的构架。HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于从万维网(WWW:WorldWideWeb)服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件…

    2022年6月13日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号