`
kiki1120
  • 浏览: 308928 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Struts开发帮助文档

阅读更多

一、    概述
struts是基于当前的一些相关标准的开发技术(servlet,xml…)基础之上,提供了一个开发框架的开放源码项目,由于我们开发web应用的复杂度随着系统的复杂度的要求越来越来复杂。特别是在代码重用,代码移植、代马可插扒等问题上出现了许多重复开发、维护困难等。Struts这个框架鼓励我们应用model2的MVC开发模型。当然我们在基于其上的开发中不一定要进行完全遵守。当前struts比较稳定的发行版时1.0,已经有了1.1的测试开发版。要了解详细的信息,请登陆
www.apache.org/struts .
二、    整体结构概述
在到处可以找到关于MVC结构和struts结构的图形。这里我就不对结构图进行描述。只站在对J2EE WEB 应用的相关标准了解的基础来对struts整个框架进行一描述。
其实struts框架完全是基于J2EE相关技术和标准之上的。Struts提供一个servlet来作为控制器对客户端的相应请求进行转接给后台的模型。它为了使各个部分能够分离,提供相应的配置文件(struts-config.xml)进行请求和处理类的映射。整个类的映射完全来自java技术的类反射和相应的请求过滤技术。通过标记扩展来实现相应的视图和模型的联系。整个结构就是这样的,请不要再多想。
三、    详细开发说明
¨    控制器
由struts自己实现,实现类为org.apache.struts.action.ActionServlet。开发者只需将相应的类映射配置在web.xml文件就可以。
请参考如下描述:

这里只对其中的初始化参数application加以介绍:其实这是struts控制器在启动时需要设置消息的属性文件,具体属性文件的格式完全遵守java属性文件的要求。属性文件的名称这里配置位ApplicationResources,当然我们可以修改,但该文件的路径必须是web-inf/classes/或者相应的包目录。
¨    模型
关于struts的许多文章都进行相应的模型描述,分为系统状态模型和业务逻辑。这些对我们理解struts,应用struts进行开发是很重要的。但这里我只介绍两个重要的类,一个是进行相应的请求数据维护java bean类,另一个是进行相应请求处理的普通类。前者在struts中要求继承org.apache.struts.action.ActionForm类,该类由struts提供,后者需要继承org.apache.struts.action.Action类,也由struts提供。在第一个实现的bean中,各种属性必须要和客户请求的各个字段名称对应,目的是完成客户请求数据的自动化获取,我们心里明白这一件实事就可以了:即只要我们满足这种要求,struts自动会将客户端的请求填充在相应的javabean中。并且我们可以重载相应的两个方法来实现对应的javabean的各个字段的校验和重置,以确保满足我们的要求。这两个方法分别为public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest)和public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest),在第一个方法中返回一个相应的处理错误对象,这个对象会自动添加到一个错误管理器中,我们直接可以在表示层的代码中进行调用,例如用标记<html:errors/>来显示当前的请求错误信息。第二个reset方法用来
¨    视图
视图是struts中自定义的一些标记库,其实没有struts我们为了解决视图和代码的分离,经常会采取一些自定义标记库。当然在jsp的扩展标记库应用中,也有相应的标记供我们使用。但为了和struts能进行紧密的结合,在使用struts时我们可以适当适用struts提供的标记库。对一些通过jsp标准的标记就能实现的,我们这里建议使用他们。这里分别将这些标记库进行介绍。
Bean标记库:
使用该标记前首先要在jsp的页面导入相应的标记定义,例如<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>。
使用的方法如<bean:*** id=””/>。
下面对该标记库做一介绍:
cookie :属性有id,name , multiple,value,id是对cookie在该页面中的唯一标识,在页面其它地方可以通过id进行引用。相当于用cookie直接引用。Name是相应的cookie名称。Multiple可以赋予任意值,如果该值被定义将会返回相应给定值数量的cookie数组,如果该值没有被定义Value在这里是一个默认值,当我们这里的调用的cookie不存在时,其值为我们这里的value值。
define:相当于jsp标记<jsp:useBean>,属性有id、name、property、scope、toScope、type、value。Id和cookie中的id起到了同样的作用;name是在相应的scope中唯一bean标识;scope将会在相应的范围内进行相应的查找;toScope如果在scope中找不见相应的bean,将会在toScope中建立相应的bean;type是该类完全类路径和类。
例如:<bean:define id="submitForm" scope="session" name="submitForm"
type="struts.test.SubmitActionForm"/>
<%=submitForm.getName()%>

例如:<jsp:useBean id="test1" scope="page" class="org.apache.struts.webapp.exercise.TestBean"/>
<bean:define id="test1_string" name="test1" property="stringProperty"/>
<bean:define id="test1_value" value="ABCDE"/>
<%= test1_string %>
<%= test1_value %>

header:通过该标记可以访问相应页面请求的头的信息,具体属性有id、multiple、name、value。具体的含义和cookie的类似。
例如:<%java.util.Enumeration names = ((HttpServletRequest) request).getHeaderNames();%>
<%while (names.hasMoreElements()) {
String name = (String) names.nextElement();
%>
<bean:header id="head" name="<%= name %>"/>
     <tr>
<td><%= name %></td>
<td><%= head %></td>
        </tr>
<%}%>
Include:属性有id、name、forward、anchor、href、transacttion、page。属性的说明参考相应apache的网站。
    例如:<bean:include id="index" page="/index.jsp"/>
    <%=index%>
message: 不常用,这里忽略。
page:不常用,这里忽略。
Parameter:属性有id、name、value、multiple。用来输出客户端的请求参数和值。
    例如:<bean:parameter id="param1" name="param1"/>
<bean:parameter id="param3" name="param3" value="UNKNOWN VALUE"/>
<%=param1%><br>
<%=param3%>
resource:属性有id、name、input。如果input属性被定义为任意值,导入的资源将会返回一个InputStream对象。如果不被定义的话,资源将会以字符串的方式返回。
    例如:<bean:resource id="webxml" name="/WEB-INF/web.xml"/>
    <bean:write name="webxml" filter="true"/>
size:用来对Cellection 或者Map类型的数据进行元素个数统计。属性有:id、collection、name、property、scope。
    例如:<%
    java.util.ArrayList data = new java.util.ArrayList();
    data.add("First");
    data.add("Second");
    data.add("Third");
    data.add("Fourth");
    data.add("Fifth");
pageContext.setAttribute("list", data, PageContext.PAGE_SCOPE);
%>
<bean:size id="dataSize" collection="<%= data %>"/>

<jsp:useBean id="list" scope="page" class="java.util.ArrayList"/>
<bean:size id="listSize" name="list"/>
struts: 不常用,这里忽略。
Write: 属性有bundle、filter、format、formatKey、ignore、local、name、property、scope。具体用法请参阅相关网站。
Html标记库:
使用该标记库首先要在相应的页面中引入标记库定义文件,如:<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>。其实该标记库的大多数标记可以用html的标记来实现。这里值对其无法用html实现的几个标记进行介绍。
Error: 属性有:bundle、name、property、local。如果以上属性都不定义,将会从对属性文件中的所有error.***错误信息显示出来。Bundle,邦定的错误信息管理器,如果没有定义,将默认是由action创建的应用程序级错误管理器。Name和property用来配合从相应的页面中调用错误信息管理bean来显示错误信息。Local是一个错误信息本地化处理器,默认会用是和本地的方式处理本地化。
属性资源文件中应该包含如下相应的信息,对错误信息的现实进行格式化:
errors.header 所有错误信息前面显示的内容,可以进行html修饰
errors.footer 所有错误信息后面的显示内容,可以进行html修饰
errors.prefix 每条错误信息前面的显示信息,可以进行html修饰
errors.suffix 每条错误信息后面的显示信息,可以进行html修饰
message: 属性有bundle、footer、header、id、local、message、property、name.具体的用法请参阅相关网站。
Logic标记库:使用该标记库首先要在相应的页面中引入标记库定义文件,如:<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>,具体的标记有:
Empty: 属性有name、property、scope。
Equal: 属性有cookie、header、name、parameter、property、scope、value。其中cookie和header、parameter是独立使用的。Name和property、scope结合使用,是相对系统中的bean的。如果是系统中某一个简单的参数,可以用name和scope结合就可以了。
Forward: 属性只有name。
GreaterEqual: 属性和equal一样。
GreaterThan:属性和equal一样。
LessEqual: 属性和equal一样。
LessThan: 属性和equal一样。
NotEmpty: 属性和empty一样。
Match: 属性和equal一样。
NotMatch:属性和equal一样。
NotEqual: 属性和equal一样。
NotPresent: 属性有coolie、header、name、property、parameter、scope、role、user。
Present:和notPresent一样。
MessageNotPresent:属性有message、name、property。
MessagePresent: 和messageNotPresent一样。
Iterate: 属性有collection、id、indexId、scope、name、property、length、offset、type。
¨    数据库访问,struts提供自己的数据源配置和管理器,但在版本1.0和1.1中相应的管理方式是不一样的。这里我强烈建议使用j2ee中的相关数据源配置情况。
¨    文件上传,struts提供了类org.apache.struts.upload.FormFile,只要我们在ActionForm中提供具有该类型的字段,然后在Action中进行处理就可以了。

分享到:
评论

相关推荐

    Struts2.3.4 API帮助文档chm格式

    这是我做的struts2的API帮助文档。可以看我的博客是如何做的。 http://blog.csdn.net/long2010yu2010

    struts2帮助文档

    struts2帮助文档,能够帮忙你快速开发

    Struts2.5chm帮助文档

    最新Struts2.5开发帮助文档,需要的可以自行下载最新Struts2.5开发帮助文档,需要的可以自行下载

    struts2.0 中文 帮助文档 java开发

    struts2.0 中文 帮助文档 java开发struts2.0 中文 帮助文档 java开发struts2.0 中文 帮助文档 java开发struts2.0 中文 帮助文档 java开发struts2.0 中文 帮助文档 java开发struts2.0 中文 帮助文档 java开发struts...

    struts2.3xwork2.chm中文帮助文档

    最全的struts2.3和xwork2.chm中文帮助文档

    struts2 帮助文档

    struts2开发帮助文档。可以进行搜索查询.希望可以对大家有帮助

    Struts1.x 中文帮助文档

    struts1.x已经出来很久,在这里仅为那些刚学struts的人提供一些帮助

    struts1和struts2 帮助文档

    帮助文档 API Struts框架开发必备工具,集合了Struts1和Struts2的api

    struts2+struts1帮助文档

    struts2+struts1帮助文档,开发必不可少的文档。。。

    Struts2.2.3.2chm帮助文档

    中国IT牛叉,struts2帮助文档chm格式的,希望对大家有帮助,大家多多下载哈哈,哥的资源便宜啊,有问题留言哈

    struts2 chm 开发帮助文档

    struts2-core-2.2.3.1 开发帮助文档 公开发应用 ,又要html版文档大小过大,so 无法上传 有需要的可以联系 并 给予分享,现提供chm版 开发文档 可供参考

    Struts2.2.1帮助文档

    Struts 2是Struts的下一代产品。是在 struts 和WebWork的技术基础上进行了合并,全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...

    Struts 1 学习文档

    Struts 1 学习文档 Struts 1 是一个基于 MVC 模式和面向对象设计的 Open Source 项目,由 Apache 基金会 Jakarta 项目组开发。Struts 拥有完整的社区与庞大的用户群体,为企业应用提供了良好的网络环境与充实的人才...

    struts2.0中文帮助手册.zip

    Struts作为MVC 2的Web框架,自推出以来不断受到开发者的追捧,得到用广泛的应用。作为最成功的Web框架,Struts自然拥有众多的优点: MVC 2模型的使用 功能齐全的标志库(Tag Library) 开放源代码 但是,所谓...

    struts1.0和struts2.0的中文教程及中文帮助文档

    struts1.0和struts2.0的中文教程及中文帮助文档,本人以前用过的资料,很容易看懂的,适合入门!

    struts2开发文档

    架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来 决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把...

    struts2官方中文帮助文档.chm

    。。。。。。。struts2官方中文帮助文档.chm

Global site tag (gtag.js) - Google Analytics