Struts程序各文件之间的关系(1)

关于struts2框架与MVC之间关系的分析 1、MVC模式基础 1.1、MVC模式简介   MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而达到更好的开发和维护效率。在MVC模式中,应用程序被划分成模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式(页面 阅读详情

Struts程序各文件之间的关系

 

 

下面介绍《如何实现最简单的Struts程序》例子中各文件之间的关系及源代码分析。

 

[相关链接]

《JavaWebStudio系列开发工具Visaul Struts版本简介》http://dev.youkuaiyun.com/develop/article/28/28871.shtm

《如何实现最简单的Struts程序》http://dev.youkuaiyun.com/develop/article/28/28946.shtm

《Struts下拉框的实现》http://dev.youkuaiyun.com/develop/article/28/28956.shtm

《Sruts单选框的实现》http://dev.youkuaiyun.com/develop/article/29/29042.shtm

《Struts复选框的实现》http://dev.youkuaiyun.com/develop/article/29/29043.shtm

开发环境:Java Web Studio系列开发环境visual strutst版本。

最新JavaWebStudio下载地址:ftp://210.36.64.79/kui

 

 

[背景知识]

Struts使用MVC结构;图2.1所示的逻辑图描述了框架的高层结构。

我们现在讨论图中的每个元素。

一个基于Struts的应用程序的表示层(view)使用Struts标签库(taglibs)构建。来自客户的请求被传递给叫ActionServlet的servlet,它作为controller.使用了Struts的应用程序,所有需要通过框架的请求都通过ActionServlet传递。这个ActionServlet把数据从请求传递到ActionForm JavaBean。

                                             

 

 

ActionForm是代表从一个表单View组件输入数据的JavaBean。这些表单由JSP用Struts html标签库产生。这个beam由  ActionServlet生成,带request参数,它还请求ActionForm来验证用户提交数据的合法性。

ActionServlet通过定义一组ActionMapping来配置。一个ActionMapping是一个对象,它将请求中的URL映射到由应用程序开发者提供的处理请求的组件。ActionServlet和ActionMapping的配置在XML配置文件中完成。

专用的应用程序用于处理请求的组件叫Action类。在MVC结构中,它们代表模型。它们可能用于验证用户输入的合法性,假如在信息处理过程中出现了应用程序错误,Action类可以创建一个error对象的实例,然后保存庆HTTP request对象中。如果在Action类中的逻辑成功地被招待类给Controller传递一个ActionForward对象,代表所需的描绘响应的JSP。ActionForward有两种:专门转发给特定的Action类或全局转发(任何一个Action类可以把这些ActionForwards转给Controller)。

 

 

本例主要文件之间的关系:

 

 

   初学者常会不清楚HelloWord.jsp、HelloWordForm.java、HelloWordAction.java、HelloWordOut.jsp这四个文件是如何关联在一起的,实际上它们正是通过struts-config.xml配置实现的。这些配置是Struts程序设计中的一个难点,幸运的是,在Java web Studio的Visual Struts中,所有这些配置都是在Struts文件向导中自动完成的。

 

[关键源代码分析]

1  输入JSP页面文件

    输入JSP页面文件名是hello.jsp,主要实现一个带有文本框的表单,文件代码如下:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<html:form  action="/ HelloWordAction.do"  method="post">

      <html:text property="mybeanvariable1" />

      <html:submit value="提交" />

      <html:reset value="重写" />

  </html:form>

</body>

</html:html>

 

    首先是把本页定义为支持中文显示,中文编码采用GB2312格式,程序语言为Java:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

接着定义支持四种Struts标签bean、html、logic和template,在该文件中没用到的标签可以去掉相应的定义,如果在文件中还需要用到自定义标签,也需要在这里加入相应的定义:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<html:html>就不用说了。<html:base/>标签对应HTML的<BASE>标签,用来设定测览器中文件的绝对路径,然后在文件中只需写下文件的相对位置,在测览器中测览的时候这些位置会自动附在绝对路径后面,成为完整的路径。在文档中所有相对地址形式的URL是相对于这里定义的UTRL而言的。一篇文档中的<BASE>标记不能多于一个,必须放于<head>标签内,并且应该在任何包含URL地址的语句之前定义。<html:form>这里用了黑体字,表示是要重点讲解的地方。

<html:form  action="/ HelloWord Action.do"  method="post">

      <html:text property="mybeanvariable1" />

      <html:submit value="提交" />

      <html:reset value="重写" />

  </html:form>

<html:form>标签定义了一个表单,提交时的目标URL是“/helloAction.do”,方法是“post”,Post方法是将用户在表单中填写的数据包含在表单的主体中,一起传送到服务器上的处理程序中,该万法没有字符的限制,它包含了ISO10646的字符集,是一种邮寄的万式,在测览器的地址栏不显示提交的信息,这种万式传送的数据是没有限制。当然也可以选择Get方法,Get方法是将表单内容附加在URL地址后面,所以对提交信息的长度进行了限制,最多不可以超过8192个字符,如果信息大长,将被截去,从而导致意想不到的结果,而且不能传送非ASCII码的字符。表单内包含一个文本输入框<html:text>,它的值与Bean中属性为"mybeanvariable1"的变量相对应,如果结mybeanvariable1付了初值,则在启动这个页面时文本框中就显示默认的mybeanvariable1初值。另外表单内还包含了两个最常见的提交按钮<html:submit value="提交" />和重写按钮<html:reset value="重写" />。

 

2  输出JSP页面文件

输出JSP页面文件名是HelloWordOut.jsp,主要实现输入文件提交的文本框的值,文件代码如下:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<bean:write  name="HelloWordForm"  property="mybeanvariable1" />

</body>

</html:html>

</body>

</html:html>

输出文件与前面输入文件唯一不同的是把<html:form>标签变成了<bean:write>标签:

<bean:write  name="helloForm"  property="mybeanvariable1" />

<bean:write>标签实现Bean属性值的输出,其中name保存Bean名,这里是“helloForm”,从后面的配置文件可以看出,它对应的类是helloForm类;property保存属性名,这里是“mybeanvariable1”,与输入文件的文本框取的属性名一至。

 

3  ActionForm Bean文件

Hello程序的ActionForm Bean文件实现只包含一个变量的Bean,文件名是HelloWordForm.java,文件代码如下:

package  emptyprj;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

public final class HelloWordForm extends ActionForm 

{

        private String mybeanvariable1;

        public String getMybeanvariable1()

        {

            return (this.mybeanvariable1);

        }

        public void setMybeanvariable1(String mybeanvariable1)

        {

            this.mybeanvariable1=mybeanvariable1;

        }

}

首先是定义package名:

package  emptyprj;

这是选用了JSPStudio默认的package名emptyprj,需注意的是package名要与目录名对应。接着引入了ActionForm Bean设计中常用的五个类HttpServletRequest、ActionError、ActionErrors、ActionForm和ActionMapping,这是JSPStudio自动加入的,实际上HelloWordForm类只用于ActionForm类,其它部分可以删除,但这里保留它以方便以后扩展程序时用。

        import javax.servlet.http.HttpServletRequest;

        import org.apache.struts.action.ActionError;

        import org.apache.struts.action.ActionErrors;

        import org.apache.struts.action.ActionForm;

        import org.apache.struts.action.ActionMapping;

接下来就是定义了HelloWordForm、一个参数mybeanvariable1和它对应的get()、set()函数,这与普通Bean定义的方法一模一样。

 

Struts1.x框架实现多文件上传教程 本文还有配套的精品资源,点击获取 简介:本教程讲解了如何在Java Web开发中使用Struts1.x框架上传多个文件。介绍了在HTML表单中使用 <input type="file"> 元素配置多文件上传,以及如何在Struts1.x的配置文件中声明处理文件上传的Action。接着详细说明了在Action类中使用Apache Commons Fi... 阅读详情

相关推荐

Struts1框架下的多文件上传实现指南

在Web开发的演变历程中,Struts1作为一个经典的MVC框架,曾经是Java开发者广泛采用的解决方案。本章节旨在简要回顾Struts1框架的核心价值以及其在现代Web应用中的地位。Apache Commons FileUpload是一个用于处理HTTP文件上传的Java库。它提供了非常方便的方法来处理文件上传的整个过程,包括请求解析、文件保存、异常处理等。使用此组件可以极大地简化文件上传的代码编写,并且它支持多文件上传,非常适合本章节讨论的主题。

weixin_42372837的博客 687

jsp技术与XML

1. 什么是jsp,什么是Servlet?jsp和Servlet有什么区别?jsp本质上就是一个Servlet,它是Servlet的一种特殊形式(由SUN公司推出),每个jsp页面都是一个servlet实例。Servlet是由Java提供用于开发web服务器应用程序的一个组件,运行在服务端,由servlet容器管理,用来生成动态内容。一个servlet实例是实现了特殊接口Servlet的Java类...

change的博客 1165

Java Web应用中Apache、Struts1和Struts2的文件上传下载技术解析

本文还有配套的精品资源,点击获取 简介:在Java Web开发中,文件上传下载功能不可或缺,尤其是对于处理大量数据和多媒体资源。Apache的Commons FileUpload、Struts1和Struts2作为流行的Java Web框架,提供了各自的文件处理方法。本文将深入探讨使用这三种技术实现文件上传和下载的过程,包括关键代码示例和解决方案。同时,还将涵盖在实际应用中...

weixin_33298352的博客 702

程序与文件

编写的代码文件是如何变成可用的程序呢? 代码文件之间是如何关联的?怎么实现? 大量的代码文件关联后,复杂度上升,容易error,如何debug?

OrPeel的博客 881

Java Struts1框架下的文件上传控制

本文还有配套的精品资源,点击获取 简介:本文介绍了如何在Java和Struts1框架下控制文件上传的大小、限制文件格式和自动转换文件名。文章首先对Struts1框架进行了简要介绍,然后详细说明了如何通过ActionForm和Action类控制上传文件大小,限制文件类型,并且对上传的文件名进行自动转换,以增强用户体验和系统的安全性。 1. Struts1框架简述 ...

weixin_42627459的博客 840

一文了解英伟达(NVIDIA)所有显卡芯片

英伟达(NVIDIA)的产品线庞杂繁复,从面向游戏玩家的GeForce RTX系列,到数据中心的H100、B200,再到Jetson、DRIVE等边缘智能平台,一般人很难以厘清其全貌。这篇文章将用通俗而专业的语言,一文打通英伟达显卡芯片体系,让你彻底读懂这个GPU帝国是如何运转的。

bjdx_001的博客 6349

浅析Struts 体系结构与工作原理(图)

基本概念    Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Serv...

weixin_34043301的博客 156

双有源桥DC-DC变换器:原理、软开关与移相控制深度解析

隔离型DC-DC变换器是电力电子系统的核心部件,通过高频变压器实现电气隔离与电压匹配,保障系统安全与灵活适配。其工作原理基于功率半导体器件的开关动作,通过调制策略控制能量传输。该技术的核心价值在于实现高效、高功率密度的电能转换,并支持双向能量流动,这对于提升系统整体能效和运行灵活性至关重要。在新能源储能、电动汽车V2G及数据中心供电等场景中,双向能量流成为刚性需求,推动了如双有源桥等先进拓扑的应用。本文聚焦于双有源桥这一实现高效双向隔离变换的“明星”方案,深入剖析其利用移相控制实现软开关的机理。通过分析谐振

weixin_34195142的博客 378

数据、程序、文件区别

** 数据、程序、文件、软件的区别 ** 1.数据:数据是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。 数据可以是连续的值,比如声音、图像,称为模拟数据;也可以是离散的,如符号、文字,称为数字数据。 在计算机系统中,数据以二进制信息单元0、1的形式表示。 在计算机科学中,数据是指所有能输入计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字、字母、符号和模拟量等的通称。计算机存储和处理的对象十分广泛,表示 这些对象的数据也随之变得

lihaotian111的博客 9495

SAP ERP与金蝶云星空的集成案例(新能源光伏行业)

通过建设PLM、SAP、MES、WMS、SCADA、EAM等多系统集成的工业互联网平台作为数字化工厂的控制中枢,不仅可以实现人员、设备、物料、工艺参数、产品等生产全流程追溯管理,同时也可以根据数据采集进行生产现场的控制调节,最大程度降低能耗水平。销售订单创建下推金蝶采购订单创建修改、销售订单创建下推金蝶销售订单创建修改、销售发货过账下推金蝶采购入库单、销售发货过账下推金蝶销售出库单:在SAP ERP系统创建销售订单、销售发货过账单后推送到云星空系统,进行采购/销售订单的创建修改、完成物料的入库和出库流程。

集信通 1615

别再为模糊的3D重建头疼了!手把手教你用3DSlicer处理DICOM数据,搞定医学影像三维可视化

本文详细解析了医学影像三维重建中常见的模糊问题,并手把手教你使用3DSlicer处理DICOM数据,实现精准的三维可视化。从层厚设置到数据格式转换,再到重建算法选择和渲染参数微调,提供了一套完整的优化方案,特别适合临床医生和医学影像处理人员提升工作效率。

weixin_28693447的博客 246

Struts 体系结构与工作原理(图)

    Struts 体系结构是目前基于java的 web系统设计中广泛使用的mvc构架。基本概念    Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用模型-视图-控制器(Model-View- Controller,简称MVC)模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面

冯立彬的博客 1万+

【BUAA】【计组】计算机组成 pre (含详细解析)

BUAA 计算机组成 本文章旨在为@走肖暂时无法接通的系列文章创造一个目录,收藏本文章,方便查阅! 1. 入门测试 2. 基础知识 3. Logisim   欢迎来到 Logisim 的世界   Logisim 门电路   Logisim 组合电路   Logisim 时序电路   Logisim 仿真与调试   应用与挑战 4. Verilog 与仿真工具   前言   ISE 入门   VCS 入门   Verilog 语法   Verilog 题目实例与分析   Verilog 工程的设计开发调试

Schrodinger007的博客 9809

Struts程序各文件之间的关系(2)

Struts程序各文件之间的关系  下面介绍《如何实现最简单的Struts程序》例子中各文件之间的关系及源代码分析。 [相关链接]《JavaWebStudio系列开发工具Visaul Struts版本简介》http://dev.csdn.net/develop/article/28/28871.shtm《如何实现最简单的Struts程序》http://dev.csdn.

kui的专栏 1506

【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能

在探讨计算机性能优化的旅程中,我们常常被引导去关注算法的复杂度、代码的优化,或是更高效的数据结构。然而,有一个经常被忽视的角色在幕后默默地影响着程序的运行效率——那就是缓存(Cache)。正如哲学家亨利·戴维·梭罗在《瓦尔登湖》中所说:“细节是造成美丽的源泉”,在软件开发的世界里,对缓存的理解和优化,就是那些决定程序性能优雅与否的细节。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 3732

面向企业级应用的 SAP UI5 troubleshooting 全景指南:从日志与调试到性能与可测试性

本指南系统化介绍了SAP UI5应用排错的完整流程和工具链。从基础的浏览器开发者工具使用,到SAP UI5专用调试工具(Technical Information Dialog、Support Assistant、Diagnostics Window),再到性能优化和日志管理,提供了一套工程化的解决方案。重点推荐组合使用UI5 Inspector扩展、Test Recorder测试工具以及性能测量模块,并强调将常见问题整理成团队知识库。通过制度化的排错步骤和工具组合,开发者可以快速定位、复现和修复问题,将调

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 280

MVC、Struts、SpringMVC之间的关系

MVC、Struts、SpringMVC之间的关系什么是MVC?什么是Struts?什么是SpringMVC?Struts与SpringMVC的区别:SpringMVC常用注解: 什么是MVC? MVC: 是一种架构,可以说是一种设计模式,它将视图与逻辑业务分离开来,也就是人们常说的降低代码的耦合度。 M(Model): 指的是模型层,最典型的代表是JavaBean(处理业务逻辑,也就是处理控制层...

itzhuangjh的博客 1071

【OS】AUTOSAR OS系统调用产生Trap的过程详解

AUTOSAR OS系统调用产生Trap的过程详解

qq_36056498的博客 2438

Struts1、struts2、webwork三者之间的关系

Struts1是第一个广泛流行的mvc框架,使用及其广泛。但是,随着技术的发展,尤其是JSF、ajax等技术的兴起,struts1有点跟不上时代的步伐,以及他自己在设计上的一些硬伤,阻碍了他的发展。          同时,大量新的mvc框架渐渐大踏步发展,尤其是webwork。Webwork是opensymphony组织开发的。Webwork实现了更加优美的设计,更加强大而易用的功能。   

mischen520的博客 2430

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Struts1文件上传、单文件、多文件上传【Struts1】

将struts1文件上传的操作汇总了一下,包括单文件上传和多文件上传,内容如下,留作备忘:  Struts2实现文件上传的文章(http://blog.csdn.net/itwit/article/details/7031785) 1、单文件上传 1)JSP页面(singleFileUpload.jsp) 文件上传 name: upload:

1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

struts1中的文件上传

在struts1和2中,分别对 commons-fileupload组件进行了包装,使文件上传操作更方便。 本文讲解如何使用struts1上传文件。 步骤: 1 编写jsp页面 2 给jsp中的form表单配置一个ActionForm 3 编写Action,处理文件上传功能 4 配置struts-config.xml文件 5 测试

zhanggnol的blog 2794

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Struts1 与 Struts2多文件上传的比较

[size=x-large][b]STRUTS 1 部分[/b][/size] STRUTS 1 的文件上传定义了专门的文件处理接口FormFile。查看源码才知道,FormFile与File完全不是一回事,所以想将FormFile转为File再处理就行不通了。 第一次写上传时,我使用了common-upload组件进行文件上传,后来发现STRUTS在request中根本读不到文件。后...

xwood 197

使用Struts1实现文件上传

使用Struts1实现文件上传(一) 今天研究了一下Struts的文件上传机制,可以方便的将客户端文件上传至服务器端,感觉很方便、实用,特此记录一下。       完成文件上传功能大致需要以下几个步骤:             (1)创建用于文件上传的JSP页面;      (2)创建用于承载数据的ActionForm;      (3)创建用于处理上传的Action;      (

Hello World! 8511

重温经典struts1之文件上传

struts1实现文件上传功能

dy051107的博客 1318

ajax struts1异步上传文件,浅谈struts1 & jquery form 文件异步上传

1.概述还在用struts1?是的,在地球的没写地方,落后的生产方式还在运转(老项目).从 继承org.apache.struts.action.Action, 继承org.apache.struts.action.ActionForm开始吧2. 代码2.1 html页面网页上传本地文件网页上传文件信息列表选择文件:标题:2.2 _fileUpload.js/***_fileUpload.js**...

weixin_39745013的博客 309
上一篇: 如何实现Struts 数据库应用程序(2)
下一篇: Struts程序各文件之间的关系(2)
kui
kui
博客等级 码龄25年 199粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值