基于MVC的Struts在财务系统中的应用

Spring MVC文件上传生产级实战:大小限制、中文名、临时文件与并发控制 文件上传是Web系统中最基础也最易出错的功能模块,其本质涉及HTTP multipart协议解析、Servlet容器配置、JVM内存管理及操作系统I/O调度等多层协同。理解MultipartFile工作原理、CommonsMultipartResolver参数语义与Tomcat底层限制,是保障大文件、中文文件名、高并发场景稳定性的前提。本文聚焦Spring MVC中单文件与多文件上传的真实工程挑战,涵盖上传边界科学设定、UTF-8全链路中文兼容、临时文件自动清理、内存/磁盘缓冲策略切换及并发资源限流等核心实 阅读详情
摘要 对于项目开发人员来说,要加快系统的开发速度、提高系统的可维护性和可扩展性,首要的任务是划分好系统的层次结构,合理地设计表示逻辑、业务处理逻辑和数据逻辑。MVC模式就是一个很好的将表示、控制和业务处理相分离的解决方案,本文则主要介绍了Struts框架下的财务系统的设计和实现。
  关键词  MVC模式;Struts框架;Web应用
  中图分类号 TP391      文献标识码  A

  引言
  软件开发工作中遇到的很多问题都可能在以往开发同类软件的过程中同样出现过并且已经被解决,解决问题时所用到的好的方法、技术经过积累并不断的归纳、总结形成一种固定的解决方案、一种模式,以便在日后的系统开发过程中专门用来解决同类问题。设计模式就是对以往开发经验的总结,它的提出使开发人员可以简单、方便的复用成功的设计方案,而不必每次都做重复的工作。

  财务系统具有所涉及的业务逻辑复杂、需求灵活,甚至个别业务可能会在系统使用过程中发生变化的特点,因此如何组织应用程序以使其易于维护和升级便成为摆在开发人员面前的首要问题。早些时候的应用程序开发是用过程化语言来完成的,它们将数据库查询语句这样的数据层代码和HTML这样的表示层代码混合在一起,这样一来无论是对业务逻辑的变更还是对界面显示的修改都会涉及到应用程序的整体,使程序维护起来相当困难。
  Web层的解决方案——MVC模式
  MVC模式的提出彻底解决了上述问题。MVC是Model(模型)——View(视图)——Controller(控制器)的缩写,它适用于大型可扩展的Web应用的开发,它强制性地将应用程序的输入、处理和输出分开,将其划分为模型、视图和控制器三个核心部分,使它们各司其职,各自完成不同的任务,其中任何一部分的修改都不会影响其它两部分。
  在MVC模式中,模型封装了应用问题的核心数据、逻辑关系和业务规则,提供了业务逻辑的处理过程。模型一方面被控制器调用,完成问题处理的操作过程,另一方面为视图获取显示数据提供了访问数据的操作。因为模型是与数据格式无关的,因此一个模型可以为多个视图提供数据,这样一个模型一次编写可以被多个视图重用,从而避免了代码的重复编写。

  视图是MVC模式下用户看到的并与之交互的界面。视图从模型处获得数据,视图的更新由控制器控制。视图不包含任何业务逻辑的处理,它只是作为一种输出数据的方式。
  MVC模式中,控制器主要起导航的作用,它根据用户的输入调用相应的模型和视图去完成用户的请求。控制器本身不输出任何东西,它接受用户请求并决定调用哪个模型构件去处理,以及由哪个视图来显示模型处理之后返回的数据。

  MVC的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,并决定由哪个模型来进行处理,然后模型通过业务处理逻辑处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过显示页面呈现给用户。图1所示为模型、视图、控制器这三个模块各自的功能以及它们之间的相互关系:

图1

  Struts是实现MVC模式的框架

  设计模式是软件开发经验的总结,它是一个概念,是一个逻辑实体,而框架可以看成是基于某一特定平台的一种或几种设计模式的物理实现。设计模式比框架更抽象,设计模式只有其实例才能表示为代码,而框架本身可以用代码表示,框架是一套设计详细的类,类与类之间功能各异,又彼此联系,相辅相成,形成了对某一类问题的可重用的、易扩展的解决方案。
  Struts是实现MVC模式的通用框架,它由四个主要部分组成,模型、视图、控制器和XML文件。模型通常由Java Bean或EJB组件实现,负责处理业务逻辑;视图包括一组JSP文件,这些文件主要由JSP标签或客户化标签构成,它简化了JSP页面的编码工作;在Struts框架中控制器主要包括Action Servlet类和Action类,Action Servlet是Struts的核心部件,它接受用户的Http请求,根据配置信息将请求转发给适当的Action对象,Action类负责调用模型的方法,并帮助控制应用程序的流程;Struts包括Web.xml和Struts—config.xml两个配置文件,其中Web.xml是Web应用的发布描述文件,Struts—config.xml是与Struts相关的特殊信息配置的描述文件。

  Struts框架下的财务系统的设计与实现
  整个项目由财务系统、物流系统和客户管理系统三个部分构成,由于财务的结算业务与采购、出入库和销售等物流环节都存在着一定的联系,因此,财务系统功能的实现以及维护的方便与否对于整个项目的成败起着致关重要的作用。

  财务系统主要包括与结算相关的业务处理,如供货商结算、客户结算、返款处理、各种帐簿的查询、科目表的维护等等。下面以客户结算为例说明Struts框架下系统的设计与实现。
  用户选择客户结算子菜单后进入客户结算页面,在该页面上需填入客户名称、销售单编码、费用的支付方式以及详细的收款信息。其中客户名称和销售单编码支持模糊查询功能;支付方式包括现金、银行、预收款三种方式,可点选输入;详细的收款信息包括业务员姓名或编码、总的结算金额、登录帐簿。以上信息均填写完毕后,可点击提交,若填写的信息符合结算条件,则经业务处理逻辑处理后,系统向用户显示结算单页面,若提交不成功,则显示错误信息。Web组件之间信息的转发关系如图2所示 

图2

  CtmBForm作为ActionForm Bean可以在视图和控制器之间传递HTML表单,其属性与表单中的字段是一一对应的,CtmBForm的Validate()方法可以完成与表单的数据格式和语法相关的有效性检查,如销售单编码、结算金额不能为空等。

  Struts框架的核心控制器组件ActionServlet的doGet()或doPost()方法在收到用户请求后都会调用其process()方法处理请求。首先选择能够处理当前请求的子应用模块,并在request范围内写入配置信息和消息资源;之后完成一些预处理请求操作,在预处理请求操作的尾部创建并保存CtmBAction实例,并调用CtmBAction实例的execute()方法,该方法再调用相应模型进行实际的业务逻辑处理,完成用户的请求;最后根据execute()方法返回的结果执行请求转发或重定向。

  在系统中模型由EJB组件实现,系统多层结构的设计如图3所示:

 
                                 图3

  CtmBEJB作为一种JNDI资源运行在EJB容器中,在多层结构中CtmBEJBDelegateImpl业务代理实现类无法创建CtmBEJB组件,而是通过查找名为“ejb/CtmBEJB”的JNDI资源获得该资源的引用。

  IctmB接口的作用是削弱客户程序与模型的关系,客户程序通过该接口来访问EJB组件的业务方法。
  CtmBAction对EJB组件进行调用的时序图如图4所示:


图4

  在多层结构中,业务对象BO主要封装了一些实体,如客户CustomerBO、销售单SalesSlipBO、结算单BalancingSlipBO、应收款帐AccountsReceivableBO、预收款帐PreReceivingBO、现金帐CashAccountBO和银行帐BankAccountBO等等。图5所示为上述七个业务对象之间的关联关系,以及部分业务对象的属性和方法:                               
 

图5

  数据访问对象(Data Access Object,简称DAO)是实现持久化框架的一种设计模式,它的引入可以削弱业务处理逻辑和数据库访问之间的联系,它一方面可以将对业务对象BO的处理转化为对数据库的操作,另一方面也可以把查询数据库的结果映射为业务对象BO。DAO提供了对关系数据库操作的接口,如创建数据库,定义表、索引,对表进行增、删、改、查询等操作。系统选用了OJB软件,它是一种采用DAO设计模式实现的持久化框架。

  结束语

  Struts为Web应用程序的开发提供了框架结构,JSP页面中不包含任何业务逻辑,控制器组件ActionServlet可使用Struts框架所提供的,开发人员只需将大部分精力集中到实际业务逻辑的处理,这样有利于快速有效的开发出Web应用程序。Struts框架下用户显示、控制逻辑和业务处理逻辑相分离,若业务需求发生变化则主要修改用于处理业务逻辑的EJB或JavaBean组件,因此便于系统的维护和升级。总之,Struts框架适用于可扩展的大型Web应用的开发。
单细胞多组学数据整合分析实战:从原始数据到跨平台合并 本文详细介绍了单细胞多组学数据整合分析的实战流程,从原始数据处理到跨平台合并分析。通过Seurat和Harmony等工具的应用,帮助研究者有效解决批次效应问题,保留真实的生物学信号。文章包含代码示例和常见问题解决方案,特别适合需要进行单细胞合并分析的研究人员参考。 阅读详情

相关推荐

三菱PLC通信库大比拼:手把手教你用C#实现最高效的McProtocol数据读写

本文深入比较了三菱PLC通信库的性能,重点介绍了如何使用C#高效实现McProtocol数据读写。通过实测数据对比HslCommunication、McProtocol-next和自定义方案的优劣,提供优化技巧和代码示例,帮助开发者在工业自动化场景中提升通信效率。

m0n1o2p的博客 255

个人账目管理系统(MVC框架)

package com.tcl.tallyView; import java.util.Scanner; public class PersonTallyMain { public static void main(String[] args) { System.out.println("+----------------------------+"); System.out.pri

♛ 走心。的专栏 3314

Dify实战应用指南(上传需求稿生成测试用例)

摘要: Dify是一款开源大语言模型应用开发平台,通过低代码/无代码方式支持AI应用开发。平台提供五种核心应用类型,包括聊天助手、文本生成、Agent、ChatFlow和Workflow,适用于不同场景。本文以ChatFlow为例,演示如何上传需求稿自动生成测试用例。通过条件分支、文档提取器和LLM设置,实现从需求文档到测试用例的自动化转换,显著提升测试效率并降低人工误差。该方案适用于需要快速生成测试用例的软件开发场景,尤其适合非技术人员使用。

Linda的自动化测试之旅 2744

Struts框架在小区物业管理系统中的应用

 摘要  Struts提供了一个非常好的MVC框架,在Web应用开发中把界面和业务逻辑分离,提高了代码的可重用性和灵活性。文中首先介绍了Struts概念和体系结构,阐述了Struts的工作原理。然后介绍了小区物业管理系统各个功能模块以及整个系统基于Struts的开发流程。最后,通过一个应用示例,详细介绍了Struts框架在系统开发中的应用。   关键词  MVC;Struts框架;Web;物业

gaulhor的专栏 3302

Dify与钉钉轻量级集成:打造企业内部AI助手

企业级聊天机器人开发已成为提升内部协同效率的关键技术。其核心原理在于通过API集成,将AI模型能力与即时通讯平台无缝连接,实现智能问答与自动化流程。从技术价值看,这种集成方案能够显著降低AI应用落地门槛,将前沿的AI能力快速转化为实际生产力。在应用场景上,它尤其适用于HR答疑、IT技术支持、产品知识库等高频内部服务场景。本文聚焦于Dify与钉钉的轻量级集成方案,通过Stream模式实现高效消息处理,并利用AI卡片支持流式输出,为企业构建体验自然的智能机器人提供了完整实践路径。该方案特别强调配置简化与部署便捷

weixin_27155667的博客 696

基于GEC6818开发板的C/C++贪吃蛇小游戏

f.开始游戏(进入游戏,并没有马上开游戏,需要点击播放才能开始)2.相关宏,全局变量(可以根据自己需要进行修改)k.显示文字前的相关初始化。k.自定义font.h文件。1.需要的主要头文件。l.在开发板上显示字1。m.在开发板上显示字2。a.显示固定大小图片。h.线程1:获得坐标。

2301_77273301的博客 2132

struts源代码阅读(struts 初始化)

struts作为J2EE的MVC框架已经取得了很大的成功,下面将分几篇文章说明struts源程序的结构。第一篇  struts的初始化struts 的核心类是org.apache.struts.action.ActionServlet,这个类将会在struts第一次使用时,作为servlet初始化并存入tomcat容器。很显然的,初始化将会调用init方法初始化相应的数据。一、initIntern

独舞九天的技术专栏 1182

OpenSpec 完全指南 config.yaml文件

不管是项目内还是全局存放,自定义工作流都要遵守以下规则,否则会导致OpenSpec无法识别,新手一定要记牢:一个文件夹 = 一个工作流:工作流文件夹的名称,就是中schema字段要填写的名称;每个工作流文件夹必须包含:这是工作流的核心定义文件,没有它,OpenSpec无法识别这个工作流;模板文件统一放templates/目录:如果需要自定义生成文件的模板(比如统一的提案模板、任务模板),就放在工作流文件夹下的templates/里,OpenSpec会自动识别;

h a 6 6 6 c k 为 你解决复杂难题! 1419

基于MVC模式的Struts框架在财务系统中的应用

基于MVC模式的Struts框架在财务系统中的应用

dxf零星专栏::技术与哲学的探讨 antilogy 1343

XYC Q8开源掌机刷第三方系统教程

分区结束后直接将各种游戏文件放入OD分区的Roms文件夹下

m0_60352504的博客 4569

【100%通过率】华为OD机试真题 JavaScript【数字最低位排序】【最低位排序】

2023华为OD机试真题 JavaScript【数字最低位排序】【最低位排序】 给定一个非空数组(列表) 起元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素,相对位置保持不变 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位

MISAYAONE的博客 587

Struts开发资源合集

更多滚动 8 Web程序从Struts向Stripes框架的移植 朱先忠|天极开发|2006-08-25 15:26 把你的现有Struts应用程序移植到Stripes框架能够简化Web开发,并且这一移植过程要比你想象的更为容易。 使用AJAX的Struts验证框架

ark1111的专栏 3460

基于ENVI完成影像的去云操作以及后续处理

利用ENVI完成重采样影像的去云操作 由于SNAP重采样之后的影像是分波段保存的,ENVI的波段运算工具一次也只能输出一个波段,所以去云的操作分波段进行,原理是掩膜法 下面是打开所有波段后的界面 去云的依据是以quality_scene_classification栅格文件为基础,该文件是哨兵2数据自带的场景质量分类图,包含12个级别,可以通过SNAP软件查看,如下图所示: 对于去云操作而言,我们只需要DARK_FEATURE_SHADOW(地形等),CLOUD_SHADOW(云阴影)、CL

lemon_tttea的博客 2万+

《跟我一起做J2EE版Blog–jPress》8(神器Freemaker的妙用)

这几天在给去年遗留下来的东汽财务系统做修正,所以手上的jPress进度稍微有些慢,没事,慢工出细活。这一讲我们来聊聊Freemarker,又是一个神器级的小玩意儿。Freemarker本身可以独立使用,生成任何结构的文档(我经常用它来生成XML和JSON,比jdom之流好用多了),当他配合上Struts以后,完全能够取代JSP成为WEBROOT目录下的主角。 先来讲讲用Freem...

weixin_30628077的博客 134

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

怎样设计一个好架构:八个评价维度、四层思考深度,以及 23 种设计模式各自解决什么问题

架构要解决的是变化、理解、故障和协作的成本。本文从耦合、可迁移、可适配、复杂度等八个维度讲怎么评价架构,讲维度之间怎么取舍、架构思考可以分几层,再用可编译的 C 代码过一遍 23 种设计模式。

weixin_52400878的博客 332

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

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

设计模式与生活⑰:空腹体检,单子领着人走

一年一度的体检,约在了周二。早上打完卡,没开电脑,先去体检机构——公司指定的那家。空腹,早饭留着查完再吃。前台登记,递身份证,领回一张指引单:姓名、条码,今天要查的项目按房间号排成一列。抽血、心电图、视力……单子一到手,人就被单子领着走了。先查哪项看哪边排队人少,但单子上的项目,一项落不下。去年也是这套流程。单子上的项目换了几样,走的科室还是那几个。身体还是这副身体,单子年年换。这事儿跟代码里的一种结构,是一回事。单子一到手,人就被单子领着走了今天聊的:元素稳定,操作多变;

工一木子 293

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

设计模式 - 访问者模式

概述 访问者模式(Visitor Pattern)是一种行为型设计模式,它通过为对象结构中的每个元素添加一个访问操作,使得可以在不改变元素类的前提下定义作用于这些元素的新操作。

2601_96797912的博客 185

工作流 vs 自主 Agent:5 种设计模式与 3 种建模方式详解

本文基于 Anthropic《Building Effective Agents》指南,系统梳理了AI应用中的两类核心架构:Workflow(编排式)与Agent(自主智能体)。强调“能画流程图就不上Agent”,提出从简单提示链到复杂自主决策的5种可组合工作流模式,并给出选型口诀与工程实践建议。核心观点:优先用确定性、可审计的Workflow,仅在任务路径未知时启用Agent,避免盲目复杂化。

分享大数据、java相关的技术 158

Agent Skill 五大设计模式:从工程实践到落地指南

Skill 不是一段临时 Prompt,而是一个可复用、可测试、可迭代的任务流程模板。通常通过SKILL.mdWhen:什么情况下触发How:按什么步骤执行What:最终输出什么:哪些行为必须遵守、哪些行为禁止fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;用户意图Skill 路由工具调用 / MCP / API结构化输出检查与交付。

m0_62458145的博客 198

设计模式速查

本文梳理12个核心设计模式,涵盖创建型、结构型与行为型,提供简洁Java实现与面试要点。重点解析单例(静态内部类)、工厂(方法/抽象)、建造者(链式构建)等高频模式,强调代码可维护性与扩展性,附速记口诀与对比表格,助力开发与面试双提升。

ttlovet的博客 170

设计模式与生活⑬:你坐几号线,谁来运营是另一回事

一到周五,小王的心情就会好一点。倒不是工作少了,而是想到这一天忙完,后面接着双休,心里就有盼头。地铁上,他抬头看标识,发现一件平时没留意的事:5 号线、10 号线常见的是“北京地铁”,4 号线却写着“京港地铁”。再想想,北京的机场也各有各的名字:首都机场、大兴机场。可在成都坐地铁,日常看到的统一称谓就是“成都地铁”。都是出行,名称和背后的主体并不完全一样。对乘客来说,常做的事还是那几样:查线路、进站、上车、到站下车。坐几号线是一条信息,谁来运营是另一条信息,不必揉成一团。同样是在北京坐地铁,线路和运营方并不

工一木子 230

设计模式概述

设计模式的意义、作用、分类等

lzy15192536135的博客 403

设计模式与生活⑩:地铁没变,你换了个状态

周二,没什么特别。小王照旧早起、吃早餐、坐地铁,到公司做日常开发。中午吃完饭,再去公司旁边遛一圈。普通的牛马的一天。地铁上倒有两个小片段。刚上去没座,他一只手扶杆,一只手刷手机。等他反应过来,已经坐过了一站。后来有了座,他靠着窗户,没一会儿睡着了。还是那班地铁,人已经从刷手机切到了睡觉还是小王,还是“列车到站”这件事,可他的反应已经不一样:刷手机时没留意,坐着清醒时会看站名,睡着后又听不见报站。今天聊的就是这个思路:**状态模式(State)——对象的内部状态变了,处理同一件事的方式也跟着变。

工一木子 176

设计模式与生活⑭:一栋楼,共用一份热

今天是立冬。天气预报说夜里有暴雪,白天最高也就 4 度。早上起来,屋里比外面强不了多少。窗玻璃上蒙着一层水汽,摸一把暖气片,凉的。物业群里发了通知:今天开始试供暖,暖气片会慢慢热起来,顶层记得排气,边户留意自家热不热。隔了会儿再摸,暖气片上热下凉,温温的,不烫手。再晚一点,整间屋子总算有了点热乎气。一天里最踏实的一件事,是知道这栋楼里不只自己一户在等热。热力站烧的是一锅水,顺着管网送到每家,各家只管拧自己那个阀门。试供暖第一天,暖气片温而不烫今天聊的。

工一木子 351
上一篇: Struts框架技术在J2EE中的研究和应用
thb28
博客等级 码龄24年 3粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值