J2EE复习笔记(二)——Struts

本文详细介绍了Struts框架在MVC模式中的实现机制,包括其组件组成、jar包介绍、配置文件解析及ActionForm、Action类的实现。重点阐述了Struts框架如何实现视图层和控制层的解耦,为大型项目开发提供了价值。并通过实例展示了如何整合Struts框架与其他技术(如Hibernate)进行业务逻辑处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Web开发的MVC模式中,Struts框架直接提供了一套控制层(Control)的实现机制,通过Controller Servlet(org.apache.struts.action.ActionServlet),ActionForm 和 Action之间的相互协作来完成控制层的功能。


框架组成:

1.Struts相关jar包;

2.struts-config.xml和web.xml配置文件;

3.ActionForm(数据Bean);

4.Action


Struts相关jar包简介:

commons-beanutils.jar
Commons-Beanutils 这个是jakarta commons项目中的一个子项目。这个项目开发的目的是帮助开发者动态的获取/设值Java Bean的属性,同时解决每次都要写getXXX和setXXX的麻烦。
commons-digester.jar
Digester本来仅仅是Jakarta Struts中的一个工具,用于处理struts-config.xml配置文件。显然,将XML文件转换成相应的Java对象是一项很通用的功能,这个工具理应具有更广泛的用途,所以很快它就在Jakarta Commons项目(用于提供可重用的Java组件库)中有了一席之地。
在内部, Struts 使用来自于Jakarta Commons[ASF, Commons] 项目的Digester 来解析Struts配置文件。Digester 使用struts-config DTD 来校验文档的格式,并且创建文档所描述的Java对象。如果XML文件包含了非正式文档化的元素,或者以非正式文档化的方式使用了元素,Digester 将不会处理这个文件。
commons-fileupload.jar
Commons-FileUpload FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力struts中上传文件要用到。


 struts的验证框架依赖以下的两个包:
commons-validator.jar
(校验方法)和校验规则。支持校验规则的和错误消息的国际化。 struts使用它对表单进行验证。
jakarta-oro.jar
Commons-EL Commons-Jexl Search Jakarta ORO Jakarta ORO一套文本处理工具,能提供perl5.0兼容的正则表达式,AWK-like正则表达式, glob表达式。还提供替换,分割,文件名过虑等功能。

struts.jar
struts核心包。
其他的一下jar包
commons-collections.jar
扩展了标准的Java Collection框架,提供了额外的Map、List 和Set实现以及多个有用的工具类库。功能比java.util.*强大。
commons-logging.jar
Apache Commons包中的一个,包含了日志功能。这个包本身包含了一个Simple Logger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的 java.util.logging,如果也找不到就用Simple Logger。
commons-logging.jar的出现是一个历史的的遗留的遗憾,当初Apache极力游说Sun把log4j加入JDK1.4,然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了,因此拒绝了Apache的要求,使用自己的java.util.logging,这个包的功能比log4j差的很远,性能也一般。
后来Apache就开发出来了commons-logging.jar用来兼容两个 logger。因此用commons-logging.jar写的log程序,底层的Logger是可以切换的,你可以选择 log4j,java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j,因为log4j性能很高,log输出信息时间几乎等于System.out,而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件,你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。  


配置文件

web.xml

实现*.do到ActionServlet的映射,同时设置初始化属性:

参数                             默认值                                 描述

config /WEB-INF/struts-config.xml       配置文件相对路径

debug 0         调试级别

detail 0         调试细节级别

locale true 是否在会话中储存一个Locale对象

null true 是否对无效消息键值返回null

validating true 是否对配置文件进行有效验证


<taglib>标签内定义Struts自带的标签集,用于代替部分html原始标签,方便开发,如用Flex进行web开发则可以忽略。


struts-config.xml

 

<form-beans>标签内部用来定义一个或多个ActionForm映射,赋予唯一的name(全局转发的逻辑名称)

<action-mappings>标签内用来定义一个或多个Action映射

<action>标签属性:

path:与该Action对应的请求的URL的相对路劲(不含后缀)

type:实现Action的类的完全限定名

name:与该Action相关联的ActionForm Bean的逻辑名称

scope:ActionForm Bean的作用域

validate:是否调用Action Bean的validate()方法进行数据验证

input:与ActionForm Bean相关联的Web页面的相对路劲


web.xml有关于ActionServlet的映射,对ActionServlet实现机制有兴趣的可以查看http://ltc603.javaeye.com/blog/68637


ActionForm

 

注:ActionForm必须带有不参构造函数和Setter,Getter方法


Action

 


整个框架由以上4部分构成,导入需要的lib,设置好配置文件部署在对应位置,实现ActionForm Action类方法,这样就实现了Struts框架

案例中为了比较简单的实现业务逻辑 用到了hibernate框架,关于这个框架再以后的复习中会仔细的整理,这里就当做一次数据库访问带过。

Struts框架能很好的实现视图层和控制层的解耦,这种解耦在项目中可能感觉不出它的优势,但项目做得越大,业务逻辑就会越复杂,就会慢慢体现它的价值了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值