将Struts 1.2.1结构文档进行到底

Apache Struts 1.x 中文API开发文档 Struts 1.x 是一个基于Java EE的MVC(Model-View-Controller)框架,它将Web应用的模型、视图和控制器三个核心组件相互分离,旨在简化与提高Web应用开发的效率与质量。Struts框架通过引入Action、ActionForm、ActionMapping、ActionForward等核心组件来实现其架构,让开发者能够将业务逻辑与展示逻辑清晰地分离开来。 阅读详情

Struts 1.2.1新特点简介(1)

 

目前Struts得到了广泛的应用,有人称它为Java Web框架默认的事实标准,自2003年6月apache推出Struts 1.1版本以来,apache对Struts修改和升级工作,其中Struts 1.2.1版本是这一年修改和升级工作的直接结果。Struts 1.2.1版本改正了Struts 1.1版本中存在的错误和不足,同时,增强、改进以及增加了许多新的功能,这些特点,值得广大Struts学习、开发者的关注。建议有条件的开发人员,可升级到Struts 1.2.1版本来开发,这样能充分利用Struts的新功能。有关Struts 1.2.1版本的介绍,可到Struts官方网站http://struts.apache.org/userGuide/release-notes-1.2.1.html查看,还可以到http://cvs.apache.org/dist/struts/v1.2.1/下载。JavaWebStudio开发工具的Visual Struts最新版本也完全支持Struts 1.2.1版本的开发(http://javawebstudio.51.net/)。

 

1、不再提供GenericDataSource和GenericConnection接口

从http://struts.apache.org/userGuide/release-notes-1.2.1.html看,GenericDataSource和GenericConnection接口都已不再提供,从下载的jakarta-struts-1.2.1也看出,已去掉了Struts1.1中的struts-legacy.jar,即整个legacy都去掉了。但struts.jar中还是保留了DataSourceConfig类。还保留了datasources管理功能。

GenericDataSource并不是非常必要的好用,其中因为之一是这个datasource需要用ActionServlet中定义的方法从Action类访问数据源,不能从其它类中用它。

在Struts实现自定义数据库连接池的方法很多,其中JavaWebStudio(详情可参考《Struts开发实例》)提供的自定义数据库连接池,通过web.xml配置引入是一种方法,另外,也可采用Struts1.2.1建议的通过Plug Ins Configuration (插件配置)的方法实现,例如struts自带例子struts-config.xml中的配置:

<plug-in className="org.apache.struts.webapp.example.memory.MemoryDatabasePlugIn">

    <set-property property="pathname" value="/WEB-INF/database.xml"/>

  </plug-in>

另外,Jakarta的DBCP也是一个选择。

 

2、增加的数据验证组件(Validator enhancements)

·         ValidWhen:Struts的 Validator支持 ValidWhen 规则,可实现一个数据的验证依赖于另一个数据的验证;

·         IntRange:可验证单选select-one标签和radio标签功能. Example: This allows populating combo boxes with valid choices plus one additional choice with a caption something like "Choose one" and a value 0f "-1". Then when the user attempts to submit the form, you can look for the value of "-1" and advise if nothing was selected.

·         可强制客户端Javascript validation去较验所有的约束,代替在第一次出错造成的中断。

·         "required" 数据的验证处理checkboxes, radio,select-one, 和 select-multiple标签.

·          标准的validateUrl规则可检查URL的有效性.

Designing Complex Validations with validwhen

一个常用的数据验证设计是验证一个数据域依赖于另一个数据域的情况(例如,如果你要用户输入两次密码,如果这两个密码相同才能通过),还有就是只有当某一个数据域依赖于有效时其它的一个数据域才有效. validwhen 数据验证规则提供上述情况的实现方法.

例如:

(1)

<field property="emailAddress" depends="validwhen">

      <arg0 key="userinfo.emailAddress.label"/>

        <var>

          <var-name>test</var-name>

          <var-value>((sendNewsletter == null) or (*this* != null))</var-value>

        </var>

      </field>

 

(2)

    <field property="quantity" indexedListProperty="orderLines" depends="validwhen">

      <arg0 key="orderform.quantity.label"/>

        <var>

          <var-name>test</var-name>

          <var-value>((orderLines[].partNumber == null) or (*this* != null))</var-value>

        </var>

      </field>

 

(3)

    <field property="nbaPointGuard" depends="validwhen">

      <arg0 key="careers.nbaPointGuard.label"/>

        <var>

          <var-name>test</var-name>

          <var-value>((heightInInches >= 60) or (*this* == null))</var-value>

        </var>

      </field>

 

 

 

Unstoppable JavaScript Validations

可强制客户端Javascript validation去较验所有的约束,代替在第一次出错造成的中断。通过设置一个新的属性stopOnFirstError在Validator PlugIn实现来完成第一次出错设置. 例如struts-config.xml设置片段:

  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
   value="/WEB-INF/validation.xml,/WEB-INF/validator-rules.xml"/>
  <set-property property="stopOnFirstError" value="false"/>
  </plug-in>

 

3、通配符

在action-mappings配置中,可采用通配符的配置方式 ,例如Struts自带的例子中的struts-config-registration.xml文件中有:

<!-- Generic edit* mapping -->
<action    
    path="/edit*"
    type="org.apache.struts.webapp.example.Edit{1}Action"
    name="{1}Form"
    scope="request"
    validate="false">
    <forward 
        name="failure" 
        path="/mainMenu.jsp"/>
    <forward 
        name="success" 
        path="/{1}.jsp"/>
</action>

“/edit*”代表了所有以“edit”开头的路径,{1}代表了“*”在实际表单提交中的内容(字符串)。

通配符模式可包含一个或多个如下的专门符号:

*

不含斜线 ('/') 字符.

**

含斜线 ('/') 字符.

/character

反斜线字符用于分隔顺序. /* 匹配 ('*'), and //匹配('/').

在action mapping 和 action forwards中, 通配符{N}的序号取值N 可取从 1 到 9 . 所有的请求 URI 可采用通配符{0}.

目前action mapping支持通配符的属性有:

·         type

·         name

·         roles

·         parameter

·         attribute

·         forward

·         include

·         input

action mapping将要支持通配符的属性有:

·         path

 

4、Maven 项目文件

 在Struts项目本身的开阶段就已用到了Maven的管理. 核心JAR 和 TLDs可利用Maven编译生成. 在Struts 源代码概目录中我们可看到当前的 maven.xml and project.xml 文件. 当然,在当前,原来的Ant编译文件还是官方编译Struts的方法.

    值得关注的是,Maven将为我们的项目开发带来很大的方便,详细情况可参考http://maven.apache.org/start/use.html。

 

5、新的 Configuration DTD

Configuration 1.1 DTD 已不推荐使用, struts-config_1_2.dtd 成为首选,struts-config_1_2.dtd为struts-config新增了两个元素<display-name> 和 <description>.可用于描述项目(或配置)的版本号等信息。例如:

<display-name><![CDATA[

     account maintenance

  ]]>

  </display-name>

    <description><![CDATA[

     Allows the updating of users accounts and subscriptions.

  ]]>

  </description>

 

6、Session-scoped ActionMessages

可在session中保存ActionMessages及在第一次使用后进行清除。通过 Action.saveMessages() 保存信息到 session中.可通过 ActionMessages.isAccessed() 返回已保存的信息. 如果要清除信息,RequestProcessor.processCachedMessages() 通过 isAccessed()进行检查.

   这一功能对于信息的重复使用是非常有效的。

 

7、JA Mailreader

Struts 自带的例子Mailreader Example包含了日本资源文件,虽然我们不需要日本资源,但它对于我们学习如何实现“国际化信息”是非常有好处的,实现方式很简单,例如自带的例子welcome.jsp有如下语言类型选择:
<ul>
<li><html:link action="/Locale?language=en">English</html:link></li>

<li><html:link action="/Locale?language=ja" useLocalEncoding="true">Japanese</html:link></li>

<li><html:link action="/Locale?language=ru" useLocalEncoding="true">Russian</html:link></li>

</ul>

在LocaleAction.java中进行处理:

public ActionForward execute(ActionMapping mapping,

                 ActionForm form,

                 HttpServletRequest request,

                 HttpServletResponse response)

    throws Exception {

 

        String language = request.getParameter(LANGUAGE);

        String country = request.getParameter(COUNTRY);

 

        Locale locale = getLocale(request);

 

        if ((!isBlank(language)) && (!isBlank(country))) {

            locale = new Locale(language, country);

        }

        else if (!isBlank(language)) {

            locale = new Locale(language, "");

        }

 

        HttpSession session = request.getSession();

        session.setAttribute(Globals.LOCALE_KEY, locale);

 

        String target = request.getParameter(PAGE);

        if (!isBlank(target)) return new ActionForward(target);

 

        target = request.getParameter(FORWARD);

        if (isBlank(target)) target = mapping.getParameter();

        if (isBlank(target)) {

            log.warn(LOCALE_LOG);

            return null;

        }

        return mapping.findForward(target);

    }

 

.

8、Tiles EL

Tiles标签支持基于JSTL 的Struts EL标签库.

 

9、truts-mailreader

对struts 自带例子struts-mailreade进行改进。特别是增加了Welcome页。

在index.jsp中,只有两行代码,主要是实现到"/Welcome"的转发功能。

<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<logic:redirect action="/Welcome"/>

 

从struts-config.xml可看出"/Welcome"的Action处事文件是WelcomeAction.java文件:

<action    path="/Welcome"

                 type="org.apache.struts.webapp.example.WelcomeAction">

          <forward name="failure" path="/Error.jsp" />

          <forward name="success" path="/welcome.jsp" />

      </action>

 

WelcomeAction.java文件的execute()函数如下:

public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response)

        throws Exception {

 

        // Setup message array in case there are errors

        ArrayList messages = new ArrayList();

 

        // Confirm message resources loaded

        MessageResources resources = getResources(request);

        if (resources==null) {

            messages.add(Constants.ERROR_MESSAGES_NOT_LOADED);

        }

 

        // Confirm database loaded

        UserDatabase userDatabase = getUserDatabase(request);

        if (userDatabase==null) {

            messages.add(Constants.ERROR_DATABASE_NOT_LOADED);

        }

 

        // If there were errors, forward to our failure page

        if (messages.size()>0) {

            request.setAttribute(Constants.ERROR_KEY,messages);

            return findFailure(mapping);

        }

 

        // Forward to our success page

        return findSuccess(mapping);

 

    }

 

其中核心代码是:

UserDatabase userDatabase = getUserDatabase(request);

        if (userDatabase==null) {

            messages.add(Constants.ERROR_DATABASE_NOT_LOADED);

        }

用户检查用户数据是否已存在。

 

10、Action 包

Action Package是修改最多的部分,其中大的修改有25处,

先从http://blog.youkuaiyun.com/kui/archive/2004/07/15/42075.aspx抄袭过来,请kui兄谅解。以后必整理出自己的东东,以作回报。

struts1.2下载包 jsp中 struts1.2 包 asdasdasd dasd a 立即下载

相关推荐

struts1.2包

Struts框架所需的包(commons-beanutils.jar、commons-collections.jar、commons-digester.jar、commons-fileupload.jar、commons-logging.jar、commons-validator.jar、struts.jar、jtds-0.8.1.jar)

struts1.2介绍

                   Struts中是apache组织的MVC框架下表列出了Struts中用到的lib包及其用途包名称用途Common-beanutils.jar简单易用的 Java 反射和内省 API 包装器Commons-collections.jar一组用于扩展和增强 Java Collections F

zhangxinwei的专栏 2007

Struts1,2所有经典开发文档

包含了struts1和struts2所有经典文档j2ee交流群:42470459 数据库交流群:46693629 webService,soa交流群:42470725 欢迎大家一起交流

struts1.2 学习笔记(教程)

status学习笔记及历程第一讲:1. 了解struts工作流程:首先struts基于MVC模式, 用户发送的请求讲被ActionServlet处理,转发,但是它是怎样实现的了??实现原理:web.xml 配置:     action    org.apache.struts.action.ActionServlet          config     

toyouheart的专栏 1万+

struts1.2 学习文档

用于struts1.2学习资料,用于查询时用的

STRUTS1.2中文文档

STRUTS1.2中文文档.rar,里边包含很多的STRUTS1.2相关文档,认真的看看,你会有收获的

常用框架学习(一)——Struts2

1.1  Struts2概述1.1.1  什么是Struts2Struts2是由Apache社区的Struts1和Opensysmphony的Webwork整合而来,Struts负责对http请求的处理,Webwork负责业务逻辑处理。1.1.2 运行环境搭建1.导入13个jar包(在Struts2自带的demo中可以找到最少所需包)2.需要在web.xml文件中配置StrutsPrepareAn...

不忘初心的博客 3万+

struts1.2资源整合

struts1.2源码.rar 核心源码 struts-1.2.4-lib Struts1.2API chm格式

vue打印结果时为proxy对象,如何获取值。json.parse()和json.stringify()的使用和区别

vue打印结果为proxy对象

pipizhou16的博客 7324

从零到一:如何用GraphRAG Visualizer打造你的第一个3D知识图谱

本文详细介绍了如何使用GraphRAG Visualizer从零开始构建3D知识图谱,涵盖环境准备、Parquet数据处理、可视化操作及高级分析功能。通过简洁的步骤和实用技巧,帮助用户快速掌握这一强大的知识图谱可视化工具,提升数据分析和关系挖掘效率。

rock5的博客 221

数字IC后端层次化Hierarchical Flow子系统Sub-System模块 block partition和pin assignment细节盘点

数字IC后端培训教程之Hierarchical Flow子系统block partition和pin assignment详细教程

weixin_37584728的博客 1609

struts2 配置文件模板

"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"     "http://struts.apache.org/dtds/struts-2.1.dtd">

MeGoodtoo的专栏 396

工业金属表面缺陷检测:4种光学成像方案(明/暗/漫/背光)选型与实测对比

本文深入探讨工业金属表面缺陷检测中的4种光学成像方案(明/暗/漫/背光),详细解析其物理原理、适用场景及实测效果。通过对比不同照明方案在铝合金轮毂、不锈钢餐具等实际工业场景中的表现,提供科学的选型决策树,帮助提升缺陷检出率至99%以上,为计算机视觉在工业质检领域的应用提供实用指南。

weixin_33624741的博客 389

初识Struts2

1、在 jsp/servlet 开发中,首先使用的是 Model1 开发模式,在 jsp 内嵌 javaBean 代码。好处 是执行效率比较高。在项目规模比较大的时候,代码非常乱,维护起来非常麻烦。不利于分工,也不利于代码的重用。 2、由于 model1 的不足,发展为了 Model2。Model2 将代码分为了 3 块,视图 View,模型 Model,控制器 Contr...

weixin_30664539的博客 119

激光光束质量评估与光斑尺寸计算:从理论到MATLAB实践

本文详细解析激光光束质量评估与光斑尺寸计算的理论基础及MATLAB实践方法,重点介绍M²因子的测量与应用。通过高斯光束模型、CCD成像法和MATLAB算法实现,帮助读者掌握从理论到实践的完整流程,提升激光系统调试与评估能力。

weixin_29083373的博客 452

安卓集成华为HMS Scankit实现自定义扫码功能

实现扫码功能 使用的是集成华为扫描的SDK,UI界面借鉴的是谷歌官方的Zxing项目中的自定义view,两者结合实现。 先上效果图: 先在项目根级别(build.gradle)当中配置HMS Core SDK的Maven仓地址。 // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huaw

qq_47625961的博客 5514

Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(三)

转自:Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(三)   在前两章我为大家详细分析了JAR包的选择和必须的配置文件,那么这一章,我就对例子的层次结构进行说明,并实现除WEB层的功能代码。    第三部分:建立框架代码    工程结构        大家可以看到,本例一共分为:dao、entity、service、web四层。另外在这些层次下,...

阿O、不拽 137

手把手教你用NE555+LM324搭建红外倒车雷达(附Multisim仿真文件)

本文详细介绍了如何使用NE555定时器和LM324运算放大器搭建一个红外倒车雷达系统。内容涵盖从核心原理拆解、模块电路设计(包括红外发射、接收放大、检波与电压比较)到实战焊接调试的全过程,并提供了Multisim仿真验证思路,帮助电子爱好者与初学者将模拟电路理论转化为可工作的实用项目。

echo99的专栏 680

Struts2与Struts1的比较

Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物。 简单来说二者的区别是:         一个是Stuts1 ,一个是Stuts2,这是最大的区别,技术方面,Stuts1有个核心控制器,但是只提供了一个接口,也就是execute,还要配置a

(Java) 3515

复旦微实现串口在线升级BOOT.BIN

将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash

wangjie36的博客 3174

【STK】手把手教你利用STK进行导弹和反导仿真02 - STK/MMT模块01 导弹任务分析工具概述

种工具:导弹设计工具(Missile Design Tool,MDT )、导弹飞行工具(Missile Flight Tool,截弹,或者用内置拦截弹编辑器创建的个性化的拦截弹, IFT 能够对 ―一对一 ‖动能拦截。导设置系统参数, 并对其有效性进行验证, 画性能图,保证该设计是可行的。(SAIC)公司联合开发研制,极大扩展了 STK 原有的导弹对象的功能,能够精确仿真。IFT 能够对拦截飞机、 导弹、卫星等目标进行仿真和分析。(2)推进系统参数,包括推力,比冲,秒流量,推力持续时间,喷嘴出口面积,

weixin_44184852的博客 1881

Struts1 整合 Struts2 的方法以及插件使用范例 官方文档

Apache Struts 2 Documentation Struts 1 Plugin The Struts 1 plugin allows you to use existing S...

chinaishi2491的博客 279

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...

Struts2与Struts1的对比学习(一)

写在前面: Struts1官方已经停止更新,现在用的也比较少,但是了解Struts1可以帮助我们更好的理解Struts2. 我们不能简单的把Struts2理解为Struts1的升级,甚至可以说这样理解是错误的。Struts2与Struts1有巨大的差别,Struts2以WebWork为核心,吸收了Struts1的优点,尽量解决Struts1存在的问题。正是这种差距,将两者放到一起对比,可以更好的理解

区块链领域填坑的java程序猿 2338

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

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

上一篇: struts相关资料,优快云 Struts blog秀
下一篇: struts 标记细节
csdnloading
博客等级 码龄11年 0粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值