Struts是基于MVC的一套框架,所以,在学习struts之前,我们一起来深入了解下MVC。

MVC模式

MVC是一种设计模式,它是Model-View-Controller的缩写,是一种著名的用户界面设计架构。在MVC经典架构中,把应用程序(也可以看做是应用程序的一个模块)分为三个部分:

模型(Model)

模型代表了应用程序的核心功能,它负责处理用户的数据,实现业务逻辑。同时,模型还为视图的显示提供数据,并可为多个视图所共用。

视图(View)

视图主要是与用户交互的界面,也就是应用程序的外观。视图可以接收用户的输入,但它并不包括任何实际的业务处理,它只是将数据交给控制器。同时,视图还负责展现模型传递给用户的数据,当后台模型更新数据时,视图也应当随之更新它的显示。

控制器(Controller)

控制器负责接收用户的请求和数据,接着它会做出判断将请求和数据交由哪一个模型来处理,最后调用视图来显示模型返回的数据。

在一次程序的运行过程中,首先是视图和用户打交道,它接收了来自用户的数据和请求,并将它发往控制器。控制器接收到了用户的请求,对请求进行判断,并选择合适的业务处理模型来完成用户的请求。当请求处理完成后,模型通知控制器,并选择合适的视图来向用户呈现处理结果。

很明显,MVC模式体现了分层设计的思想。它有以下几点好处:

从视图方面来说,由于多种视图共享一个后台模型,这就为实现多种用户界面提供了便利。例如:可以为用户设计通过浏览器访问的 界面,也就是Web方式;同样,还可以为用户设计通过手机访问的界面。这些方式共享一个后台模型,表示与逻辑互相独立,提高了代码的可重用性。当需要修改 界面时,无需改动后台模型,直接进行修改即可。

从模型方面来说,由于其实现和界面独立,因此模型只需提供借口供上层调用, 很好的体现了面向对象设计的封装原则。当需要修改模型时,只要保证借口不变,原有的上层程序都可以不用发生变动,程序依然可以正常工作。面向借口编程是面 向对象程序设计中非常重要的概念,它可以实现松耦合的程序结构,对于程序的可重用性、可扩展性和可维护性都有相当重要的意义。

从控制器方面来说,控制器作为介于视图和后台模型间的控制组件,可更好地维护程序流程,选择业务模型,选择用户视图,使程序的调用规则更加清晰,很大程度上优化了系统结构。

Struts

Struts是由Apache开源软件联盟提供的一套用于构建Java Web应用程序的框架。它的目标是希望分离Web程序的表示层、控制层和业务逻辑层,也就是实现著名的MVC模式,使程序员将更多精力投入后台的业务逻辑设计,而不是底层的Web基础架构。

控制器:Struts采用了ActionServlet和Action来作为控制器。在Struts应用程序中,所有的用户 请求都由ActionServlet接收,然后根据用户请求的不同样式到struts-config.xml文件中查找相应的子控制器,也就是 Action。Action执行具体的控制器功能,并且调用相应的后台模型完成业务逻辑。

视图:Struts中依然使用 JSP作为主要的视图工具。除了基本的JSTL标记外,Struts为了实现更纯净的HTML代码,又设计了大量的标记来支持用户的开发,使得开发工作变 得更加方便和快捷。当用户通过视图表单想Action发送数据时,使用到一个叫做ActionForm的组件,该组件通常也被归于视图层。 ActionForm的作用就是将用户提交的数据打包成一个Bean对象,除了基本的get和set方法之外,还提供了两种特殊的方法用于对用户提交的数 据进行一些初始化和验证工作。

模型:在Struts应用程序中,模型部分没有太多的规定,通常的做法是采用EJB或其他对象关系映射工具(如Hibernate)来实现模型组件。

java struts 介绍,Struts入门之MVC介绍相关推荐

  1. Struts 1基础入门

    学习内容 Ø 框架的概念 Ø Struts 1体系结构 Ø Struts 1运行流程 能力目标 Ø 了解MVC模式的优缺点 Ø 理解框架的概念 Ø 会使用MyEclipse进行Struts 1开发 本 ...

  2. Dubbo系列(一)dubbo介绍和入门

    Dubbo系列(一)dubbo介绍和入门 学习Dubbo 之前,先了解一下这几个问题: Dubbo是什么? 互联网发展的背景 Dubbo介绍 Dubbo的优势在哪里? 了解了dubbo之后,让我们从零 ...

  3. redis入门综合概要介绍

    redis入门综合概要介绍 概要介绍:个人感觉redis是一个将数据保存在内存的存取工具,类似一个增强的Map,所以存取比较快.数据的存取基本上是set(key,value),get(key)这种ke ...

  4. .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)

    原文:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下F ...

  5. Spring Boot 学习[一] 介绍与入门

    因为最近项目不是很急(进入测试阶段),后期项目可能会用到spring boot相关技术,今天来了解下spring boot入门. 主要是介绍和编写第一个HelloWorld示例! Spring Boo ...

  6. RStudio介绍及入门

    RStudio介绍及入门 1 R Studio 介绍 2 函数与对象 2.1 函数 2.2 数据输入 2.3 元素引用 3 R语言绘图 4 数据保存 5 学习建议 6 唠唠叨叨 Hello, 这里是行 ...

  7. 数据库入门理论知识介绍以及编译安装MySql

    数据库入门理论知识介绍以及编译安装MySql 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 1.目前90%以上的公司面临的运维的瓶颈都在后端 最常见的2大瓶颈就是: 1&g ...

  8. 1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍

    java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...

  9. Linux 岗位介绍及入门

    14天学习训练营导师课程: 互联网老辛< 符合学习规律的超详细linux实战快速入门> 学习一直在路上,14天打卡学习第 1 天内容记录 Linux 岗位介绍及入门 文章目录 1.运维学习 ...

最新文章

  1. FPGA在人工智能时代的独特优势
  2. go加载python_人生苦短我用python(02)动态加载模块-Go语言中文社区
  3. https是如何保证数据传输的安全
  4. [Contest20170910]string
  5. linux 修改 ko文件内核版本号
  6. 【Flutter】Image 组件 ( Image 组件简介 | Image 构造函数 | Image.network 构造函数 | Image.asset 构造函数 )
  7. ORACLE SQL SET运算符
  8. C语言写个贪吃蛇游戏
  9. php+js表单验证数字,.validate表单验证js
  10. easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13...
  11. Singleton in java
  12. java 抽象类 静态变量_Java基础之 接口、抽象类、构造方法、setXxx,getXxx、静态变量和成员变量、代码块、this和super的区别、final关键字、重写与重载...
  13. BDS和GPS、电离层相关SSR数据解码
  14. 机房巡检知识点(一)
  15. ElementUI表格序号翻页后重置的解决办法
  16. 复盘618:数字狂欢背后透露了哪些隐藏信号?
  17. 成都个人公司不注销有什么后果?
  18. 数据恢复原理与数据清除原理
  19. 浙江大学计算机学院沈吕可晟,敬廉崇洁,知诚讲信 ——求是学院廉洁诚信文化作品征集活动等你来参加!...
  20. 生鲜超市 学习进阶第三天 xadmin的后台管理

热门文章

  1. jvm lock低性能分析
  2. asp adodb连接mysql数据库语句_ASP连接MySQL数据库的方法
  3. Python的turtle库还能绘制这些有趣图形?
  4. 详解Python中的算术乘法、数组乘法与矩阵乘法
  5. Python字符串index()方法应用案例一则
  6. Python使用正则表达式检查书稿中不应该出现的重复字
  7. 如何用命令行写java程序_如何用java实现doc命令行
  8. mos 控制交流_小米智能排插的220V交流电压信号的开关控制电路设计
  9. python日期对照表_2020年日期表-python实现
  10. 《Essential C++》笔记之关联容器set的使用总结