通过Struts应用MVC设计模型

Apache Struts是一个基于Java的开源Web应用程序框架,它遵循模型-视图-控制器(MVC)设计模式 最后,响应被发送回Web客户端。Struts框架旨在帮助开发人员创建使用MVC架构的web应用程序,将应用程序的不同部分进行分离,使代码更模块化和可维护。CRUD操作支持:对于需要进行增删改查(CRUD)操作的应用程序,Struts框架提供了丰富的功能和组件支持。总的来说,Apache Struts是一个功能强大且灵活的Web应用程序框架,它使用MVC设计模式提高了代码的可维护性和可扩展性。通过使用Struts框架,开发人员可以将应用程序的各个模块分开开发和维护,大大提高了开发效率和代码的可维护性。 阅读详情
模型--视图--控制器(Model-View-Controller,MVC)体系突出了Servlets和JSP的优点,同时也令它们的缺点最小化。在实现中,用户请求被发送到一个控制器servlet,该servlet决定请求的性质,并且根据请求的类型传送给适合的处理器。每个处理器都和一个特别的模型相关,里面封装有商业逻辑来执行一些特别的函数集合。处理完毕后,结果会发送回处理器,处理器选择适合的视图显示它。

  Struts最早于2002年5月作为Jakarta项目的组成部分问世,Jakata项目由Apache Foundation.运做。项目的创立者希望该项目的研究改进和提高Java Server Pages (JSPs)、servlet、标签库以及面向对象的技术水准。Struts为使用MVC体系来编写应用提供了一个架构。Struts使用“ActionMapping”,它允许servlet将用户的请求转变为应用行为。ActionMapping通常指定一个请求的路径、在请求上进行动作的对象类型,以及指定其它需要的属性。

  Action对象作为ActionMapping的一个部分使用,负责处理请求,并且发送响应回适合的视图(通常是一个Web浏览器),或者传送请求至适合的模型。

  在模型和视图间的桥是一个form bean,它可以通过继承org.apache.struts.action.ActionForm得到。form bean用来保存处理前的用户数据,或者显示返回给用户的模型数据。Struts包含有自定义的标签,它可以由创建的form bean中自动组合字段。

  在实践中用户请求JSP页面,控制器servlet接收请求并决定由哪个应用处理它。Action对象传送该请求到包含有接收商业逻辑的JavaBean中。商业逻辑bean将连接数据库并进行查询,接收结果,然后返回结果给Action对象。Action对象将结果作为请求的一部分存放到一个form bean中。一旦收集完请求的全部数据,就可以格式化结果并且显示。最后是JavaServer Page以HTML表格的形式将结果显示出来。

  模型,控制器和视图

  Struts中的控制器的基本组件是ActionServlet类中定义的servlet,它是由ActionMappings定义的。ActionMapping类表示的是Action对象的名字和位置。当一个请求进入控制器时,它将请求的路径映射到Action的位置,并且将请求传送给Action。Struts的ActionMapping类还可能包含有其它的信息,这些信息可能只是与你的应用相关,例如本地变量,环境变量或者其它URIs。

  Struts的关键是控制器周围的活动。Struts控制器servlet映射事件到类(一个事件通常是一个HTTP POST, GET,或者类似的请求)。ActionServlet是MVC设计模型的司令部,也是Structs架构的核心。ActionServlet创建和使用Action,一个ActionForm和ActionForward。struts-config.xml是用来设置Action的。在创建Web应用期间,采用扩展Action和ActionForm来解决如何响应用户请求的问题。struts-config.xml则是告诉ActionServlet如何使用扩展类。也可扩展ActionServlet以令Structs应用带有一些自定义的特性。

  这个方法有几个优点。首先,应用的整个逻辑流都是在一个分等级的文本文件中。这样就可以比较容易地查看、理解应用,特别是大的应用。第二,编写网页的人在修改网页时就无需遍历Java代码来理解应用的流程,而Java开发者在改变流程的时候也无需重新编译代码。

  ActionForm为Web应用维护session状态。ActionForm是一个抽象类,它可以被每个输入表格模型扩展。它代表数据的一般概念,可以被HTML表格设置或者更新。例如,你的应用也许拥有一个被HTML表格设置的UserActionForm。Struts的架构将检查UserActionForm是否存在,如果不存在,就会创建一个该类的实例。Structs将会使用HttpServletRequest的相应字段来设置UserActionForm的状态。在传送UserActionForm给商业封装层的UserAction前,Struct架构先更新UserActionForm的状态。

  Structs模型包含有系统的状态和它可以接受的操作。可以使用各种各样的结构来表示模型(例如其它servlets或者JSP),不过在大多数的时候你都会使用JavaBeans。JavaBean的属性,或者在Enterprise JavaBeans (EJBs)中由外部数据源得到的数据--表示的是状态,而方法则是表示可以在上面进行的操作。操作并不需要被JavaBean方法定义;在简单的情况下,操作可以放置到Action对象中,虽然这样会令处理和分级之间的区别变得模糊。

  Struts MVC应用的视图通常由JSP构造,它可以使用HTML或者XML静态格式化页面,还提供了一个方法可动态插入自定义的内容来响应用户的请求。Structs的一个关键是它的自定义标签库,它提供了一个方法,可以很容易地使用JSP来创建用户界面。

  Structs架构包含有自定义的标签库,可以通过各种不同的方式使用。虽然就使用该架构来说,这些库并不是必须的,不过它们包含的标签在你的应用的许多地方都很有用。Structs的一些标签库包括有:

  . structs-html标签库。该库可以用作创建动态HTML用户界面或者表格。

  . structs-bean标签库。对于将JavaBean代码放到JSP页面,该库提供了一个加强方式,通过 标签实现。

  . struts-logic标签库。该库可以管理有条件地产生输出文本,遍历对象collections以重复地产生输出文本,还有应用流控制。

  . struts-template标签库。该库包含的标签可用作为页面创建动态的JSP模板,这些页面都拥有一个公共的外观或者公同的格式。

  使用这些标签库和其它的任何库都是一样的。因为库已经写好了,你所要做的就是告诉servlet引擎要使用它。在Tomcat中,你可以通过web.xml文件中的<taglib>标签来指定标签库的URI,以及Web服务器系统上标签库描述文件的位置。

  The Small Print

  Jakarta工程可让你下载Structs的二进制版本,或者直接由源代码中编译它。二进制版工作得很好,不过如果你拥有一个不常见的软件平台,或者想学习一下如何编译它,也不是很困难。无论你的选择如何,Structs都需要以下几个软件:

  . Java Development Kit (JDK). 你需要为你的操作系统下载和安装一个Java 2 JDK实现。

  .Servlet容器。你还需要下载和安装一个兼容Servlet API规范(2.2版以上)、JSP规范(1.1版以上)的servlet容器。一个好的选择是下载Apache的Tomcat,它可以支持网页服务,并且可以运行servlet和JSP。

  .XML解析器。Struts需要一个兼容Java API for XML Parsing (JAXP)规范(1.1版或以上)的XML解析器。

  .Servlet API类。为了编译Structs或者使用Structs的应用,你将需要一个包含有servlet和JSP API类的servlet.jar文件。大部分的servlet容器都包含有这个JAR文件。

  .JDBC 2.0 optional package类。Structs支持javax.sql.DataSource的一个可选实现,因此它需要这些API类来编译。你可以在这个网址下载这些包类:http://java.sun.com/products/jdbc/download.html

  要使用Structs来建立一个应用,需要遵从以下步骤。首先,将Structs中的lib/commons-*.jar和 lib/struts.jar文件拷贝到应用中的WEB-INF/lib目录。然后将Structs中的全部标签库描述文件(lib/struts-*.tld)拷贝到你的Web应用中的WEB-INF目录。

  拷贝完这些文件后,你就可以修改Web应用中的web.xml文件,令它包含有一个<servlet>元素来定义控制器servlet,还有一个<servlet-mapping>元素以指明哪个请求的URI被映射到这个servlet。如果你使用默认的目录来进行一个标准的安装,你可以使用Struts例子应用中的web.xml文件来作为一个参考,看它是如何设置的,然后你就可以修改Web应用中的web.xml文件来指定适当的标签库声明。再次申明,你可以由Structs的例子应用中学习如何设置。

  修改完web.xml文件后,在WEB-INF目录创建一个称为struts-config.xml的文件,在其中定义操作映射和其它与你的应用相关的特性。最后,在每个将使用Struts自定义标签的JSP页面的顶部,加入Struts自定义标签的声明。

  Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了帮助你减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用servlets和JSP的优点来建立可扩展的应用,Struct可以帮助你完成其中的一些工作。
AI应用架构师总结:智能问答系统用户意图识别的8种方法与实践! 意图识别是智能问答系统的大脑入口,其技术水平决定了系统能否准确捕捉用户的核心诉求。本文系统剖析了从基础规则到前沿PLM的8种核心意图识别方法透明简单,冷启动快,维护成本高。中等规模场景基线,依赖特征工程。利用词义和局部/序列信息,训练成本高。当前最优精度,需大量资源。添加意图灵活,冷启动友好,精度可能略逊。提升鲁棒性,系统变复杂。解决歧义和自然交互的关键(多轮)。增强专业领域理解和推理能力。成功的意图识别模块需要:精准的意图定义(Schema)是前提! 阅读详情

相关推荐

山东大学软件测试实验2——系统功能测试

​ 给出一个被测试的 Web 应用系统(SUT)。http://211.87.232.162:8080/注:友情链接不用延伸测试。针对被测试的 Web 应用系统进行功能测试,发现其存在的缺陷。 ​

m0_74033391的博客 2410

基于MVC模型框架之:Struts2

基于MVC模型框架之:Struts2 一、Struts2中的源码 1.struts2的执行过程分析: 示例代码 时序图 内部流程图 2.ContextMap ,ActionContext和ValueStack的作用及区别 ContextMap ActionContext ValueStack 3.OGNL表达式获取数据时的注意细节 4.Struts2中的国际化 什么是国际化 什么需要国际化 Struts2使用国际化的前提 Struts2中国际化资源包的搜索顺序 5.Stru

xiaotai1234的博客 384

三维荧光光谱(EEM)散射干扰实战:从识别到精准切除的完整流程

本文详细解析三维荧光光谱(EEM)中散射干扰的识别与精准切除流程,涵盖瑞利散射和拉曼散射的实战处理技巧。通过drEEM工具箱的应用示例和高级场景解决方案,帮助研究者有效消除散射干扰,提升数据准确性,特别适用于环境样品和生物活体样本分析。

weixin_42554042的博客 330

Struts2工作原理详解,从Struts2的角度来理解MVC模型

1、前言         先简单说一下Struts1.x,Struts1是真正意义上的MVC模式,发布后受到广大程序开发人员的认可。性能高效、松耦合、低侵入永远是开发人员追求的理想状态,而Struts1在这些方面又恰恰存在着不足之处。在这种情况下,全新的Struts2框架应运而生,它弥补了Struts1框架中存在的不足和缺陷,并且还提供了更加灵活与强大的功能。         需要注意的是,S

李清的博客 9284

DenseNet训练实践

在Cifar10上训练DenseNet,复现DenseNet论文的结果是后面两篇分析工作的基础,因此本系列的第一篇,将首先讨论深度学习的训练过程中的几个方面: 1. 数据集 1.1 Cifar10数据集 Cifar10数据集有6万张32X32的图片,是一个小型的数据集,但数据的复杂度足够,下图来自DenseNet论文,可以看出,不用数据增强的话,ResNet的正确率也很难超过90%,因而足以用来验...

一蓑烟雨任平生 1万+

Microsemi Libero系列教程(四)——PLL的使用

文章目录PLL是什么Libero中PLL的使用官方文档 系列教程:Microsemi Libero系列教程 PLL是什么 PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率...

whik1194的博客 7216

struts如何实现MVC,每一个模块都…

struts是java web目前最常用的实现框架。他采用mvc结构,将页面展现,流程控制和业务处理强有力的分开,结构清晰,思路明确,是进行java web的最好选择。       java web组件间的关系基本有三类:页面跳转(javax.servlet.RequestDispatcher.forward()方法),页面重定向(javax.servlet.response.sendRedire

beijirose的专栏 385

科研神器: 用Gemini 3

Edge藏了个科研开挂神器!免TZ/免谷歌账号用Gemini 3,1分钟上手(附保姆级教程) 做科研查文献、理数据总卡壳?想蹭Gemini 3的AI能力,却被“谷歌账号+TZ+节点筛选”三连劝退? 现在不用折腾了!Edge浏览器里装个插件,直接把Gemini 3揣进口袋——**免翻墙、免谷歌账号、国内直接用**,分分钟让你的科研效率翻三倍,导师都得问你“偷偷开了啥挂”!

ZhangJiqun&191cm&85kg 1161

Struts是一个实现了JSP Model 2设计标准的开源框架,它遵循模型-视图-控制器(MVC)的设计模式来构建Java Web应用程序

二、 Action的区别对于有着丰富的Struts1.x开发经验的朋友来说,都十分的清楚Action是整个Struts框架的核心内容,当然Struts2也不例外。Struts2中的拦截器堆栈是可配置的,而Struts1中的拦截器是硬编码的。然而,在Struts1中,拦截器是硬编码的,它们在ActionServlet中执行。相比之下,EL只能访问预定义的对象。Struts是一个实现了JSP Model 2设计标准的开源框架,它遵循模型-视图-控制器(MVC)的设计模式来构建Java Web应用程序。

[Blog][Domain] programb.blog.youkuaiyun.com 697

Allegro层叠中的介电常数如何填写指导说明

在用Allegro进行PCB设计的时候,需要在cross-section中设置好每个层的信息,包括层命名,每层的厚度等等信息。但是对于有仿真需求或者等长设计需要使用ps作为延时单位的设计的时候,需要额外在层叠中填写介电常数的值,如下图。按照经验值填写为2.8,因为外层和平面层不会被树脂填充,铜皮层还是完整的铜皮,如下图。对应层叠将每层介质的介电常数的数值填入到PCB中去,油墨的介电常数填4。层叠中只给出了每个介质的介电常数,铜皮的介电常数却没有给出。所以正确填写介电常数的结果如下图。需要按照下面的规则来。

weixin_54787054的博客 1395

PICO640红外探测器配置模块verilog

Ulis pico 640红外探测器配置模块

Go Forward Forever! 2034

第四篇:设计模式与Struts介绍篇

严重警告:只关心程序的人请跳过<o:p></o:p> 事先声明:本篇全是介绍性的东西,根本没谈到编程。本篇所有内容均不是本人作品。也没有修改的地方,只是删除了些内容。为什么要加这篇内容?看了能明白什么?等等诸类问题,本人概不知道,但要声明:觉得不是废话。<o:p></o:p> 设计模式(Design Patten) 简单来说,Design Patte...

fanjsp的专栏 122

Python无法拒绝的表白界面(完整代码)

Python制作一个无法拒绝的表白界面的完整代码。

AIGC 5万+

Struts2是一个用于创建企业级Java web应用的开源框架,它基于MVC(模型-视图-控制器)设计模式

Struts2是一个用于创建企业级Java web应用的开源框架,它基于MVC(模型-视图-控制器)设计模式,旨在简化整个开发周期,包括构建、部署和维护应用程序。随着技术的发展,虽然现在有许多新的框架和技术出现,但SSH依然是许多Java开发者的重要技能之一。此外,使用Struts2的好处包括封装常用功能、自动封装Web参数到JavaBean中,以及提供了一套完整的解决方案来处理Web层的常见任务,如表单验证、数据转换、页面导航等。,用于构建Java Web应用程序。Struts2是一个基于。

[Blog][Domain] programb.blog.youkuaiyun.com 417

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java struts2 mvc_struts2的MVC模式

MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率。在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式,也就是通常所说的页面或者是界面;而控制器部分负责协调模型和视图...

weixin_29025501的博客 310

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

mvc登录设计的详细设计_119、有关MVC设计模式的描述

使用 Servlet作为控制器Servlet也是一种Web组件,从完成的功能上来说,与JSP是相同的。Servlet是纯Java文件,是特殊的Java类。Servlet与JavaBean有什么区别呢?都是Java类,但是Serlvet可以接收用户的请求,客户端可以直接访问。但是JavaBean不能被客户端直接访问,必须由JSP或者其他的Java文件(包括Servlet)来调用。MVC 设计模式属于...

weixin_39731107的博客 183

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Struts对MVC的实现流程

文章的主题是Struts对MVC的实现流程,那么,首先要解决的问题是:什么是MVC?     MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。MVC中的模型、视图、控制器它们分别担负着不同的任务。    视图:视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进

孙晴 4087

基于MVC模式Struts框架研究

不做web开发多年了, 可偶尔去面试的时候, 还是会问道Struts实现mvc的细节。 很多东西都模糊了。 在网上找了下, 觉得这篇不错, 记下来防止以后用的着。 ‘ 分布式企业应用软件结构复杂、涉及多种技术,对设计开发人员提出了很高的要求。在此情况下,运用设计模式――可复用的设计方案进行软件的设计开发十分必要。MVC模式已被证明是一种成功的软件设计模式,本文主要讨...

Be a man 282
上一篇: JSP中Beans 与 Forms处理机制
下一篇: EJB 3.0简介
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值