??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美色爱综合,中文在线免费视频,在线不卡的avhttp://www.aygfsteel.com/SevenDays/archive/2009/02/10/254008.htmlSevenDaysSevenDaysTue, 10 Feb 2009 02:27:00 GMThttp://www.aygfsteel.com/SevenDays/archive/2009/02/10/254008.htmlhttp://www.aygfsteel.com/SevenDays/comments/254008.htmlhttp://www.aygfsteel.com/SevenDays/archive/2009/02/10/254008.html#Feedback0http://www.aygfsteel.com/SevenDays/comments/commentRss/254008.htmlhttp://www.aygfsteel.com/SevenDays/services/trackbacks/254008.html struts-config.xml    Struts配置文g
ActionServlet  控制?br /> Action Class  包含事务逻辑
ActionForm  昄模块数据
ActionMapping  帮助控制器将h映射到操?br /> ActionForward  用来指示操作转移的对?br /> ActionError  用来存储和回攉?br /> Struts标记?nbsp; 可以减轻开发显C层ơ的工作

struts框架的优?br /> 1.良好的架构和设计
2.可重用,模块化,扩展性好
3.Open source

struts-config.xml

Struts-config.xml集中了所有页面的D定义。对于大型的WEB目Q通过此配|文件即可迅速把握其脉络Q这不管是对于前期的开发,q是后期的维护或升都是大有裨益的。掌握Struts-config.xml是掌握Struts的关键所在?

FormBean部分

<struts-config>
  <!--  Form Bean Definitions -->
  <form-beans>
    <form-bean name=“testform" type="com.cjea.test.TestForm" />
  </form-beans> 

全局转发部分

<!-- Global Forward Definitions -->
  <global-forwards>
    <forward   name="failure"     path="bad.jsp"/>
    <forward   name="success"     path="/good.jsp" />
  </global-forwards>

action部分

<action-mappings>
   <action path=“/test/test.jsp" type=“com.cjea.test.testAction" name="testform" scope="request">
        <forward name="success" path="/test/good.jsp" />
   </action>
<action-mappings> 
</struts-config>

 ActionServlet

ActionServlet 是struts框架 MVC 实现?controller 部分Q它是这一框架的核心?br /> ActionServlet 创徏q?Action、ActionForm ?ActionForward?/p>

ActionServlet的基本功?/p>

截获用户的Httph
把这个请求映到相应的ActioncR?br /> 创徏一个ActionForm bean实例,formh攑օformbean的实例中
调用Action实例的perform()Ҏ(gu)
ActioForm bean,Action Mapping对象,request和response对象传给Action的perform()Ҏ(gu)
performq回一个ActionForword对象Q根据方法执行情况{到相应的jsp面.

 

Action Classes


Action cL业务逻辑的一个包装。Action cȝ用途是?HttpServletRequest 转换Z务逻辑?/p>

ActionForm

ActionForm l护 Web 应用E序的会话状态?br /> ActionForm 是一个抽象类Q必Mؓ每个输入表单模型创徏该类的子cR?/p>


ActionForm的?/p>

假定有一个由 HTML 表单讄?TestActionForm。Struts 框架执行以下操作:
?TestActionForm是否存在Q如果不存在Q它?yu)创cȝ一个实例?br /> Struts ?HttpServletRequest 中相应的域设|?TestActionForm的状态?br /> Struts 框架在将 TestActionForm传递给TestAction 之前更新它的状态?
struts-config.xml 文g控制 HTML 表单h?ActionForm 之间的映关pR?br /> 可将多个h映射?TestActionForm ?/p>

Struts标记?br /> Struts框架包括自定义标{ֺQ它可以?在很多方面。尽这些库q不要求用框 Ӟ但用它们会有助于程序的开发?/p>

Struts标记?br /> struts-bean taglibQ包含在讉Kbean和bean属性时使用的tagQ也包含一些消息显C的tag?br /> struts-html taglibQ包含用来生成动态HTML用户界面和窗体的tag?br /> struts-logic taglib Q包含的tag用来理Ҏ(gu)条g生成输出文本Q和其它一些用来控制的信息?br /> struts-template taglib包含的tag用来定义模板机制?/p>

Bean Taglib
用于定义新bean、访问bean及其属性的标记
在struts-bean.tld中定义了它的标记库描q器
Bean Taglib主要功能
创徏和复制bean的标?br /> 脚本变量定义标记
bean译标记
消息国际化标?br /> Bean复制标记 (<bean:define>)
可定义新beanQ可复制现有beanQ还可从现有bean复制属性?br /> 定义新字W串常数
现有的bean复制到新定义的bean对象
复制现有bean的属性来创徏新的bean
<bean:define>标记属性:
Id 新定义的bean脚本变量名称Q必设|?br /> Type 定义引入脚本变量的类
Value 为id属性定义的脚本变量分配一个新的对?br /> <bean:define>标记属性:
Name 目标bean的名U。若value属性没有设|,q个属性就必须讄
property Name属性定义的bean的属性名Uͼ用来定义新的bean
Scope 源bean的作用域。若没有讄Q搜索范围是从页作用域到应用E序作用?br /> toScope 目标bean的作用域。若没有讄Q默认值是作用域
举例
定义一个bean:
<bean:define id="test" value="this is a test"/>
源bean在页作用域中被拷贝到h作用域中的另一个bean:
<bean:define id="targetBean" name="sourceBean"
scope="page" toScope="request"/>
脚本变量的标?br /> 从多U资源中定义和生成脚本变量,q些资源包括cookie,h参数QHTTP标头{等?br /> 脚本变量的标记属性:
Id        脚本变量和要定义的页作用?nbsp;                属性的名称
Name    cookie/标头/参数的名U?br /> Value    如果没有匚w的cookie?nbsp;   数|p回这个属性指    定的默认?/p>

脚本变量的标记属性:
multiple 如果q个属性设|了L一个数|所有匹配的cookie都会被积累ƈ存储C个Cookie[](一个数l?cd的bean?nbsp;          若无讄Q指定cookie的第一个值将作ؓCookiecd的?br /> 举例
<bean:cookie id="myCookie" name="userName"/>
脚本变量名称是myCookieQ用来创个属性的cookie的名U是userName?br /> <bean:header id="myHeader" name="Accept-Language"/>
脚本变量名称是myHeader,h标头的名U是Accept-Language.

举例
<bean:parameter id="myParameter" name="myParameter">
脚本变量名称是myPatameter,它保存的h参数的名UC是myParameter
逻辑标记
Struts逻辑标签库包含的标记能够有条件地产生输出文本
在对象集合中循环从而重复地产生输出文本Q以及应用程序流E控?br /> 它也提供了一l在JSP中处理程控制的标?br /> 逻辑标记装在文件名为struts-logic.tld的标记包?br /> 逻辑标记库的功能
条g逻辑
重复
转发/重定向响?br /> 条g逻辑标记
W一cd以比较下列实体与一个常数的大小
W二cd计算标记体之前判断特定的目是否存在
W三cL据模板匹配的l果查标C的内?br /> W一cL仉辑标记
<equal>  如果常数与被定义的实体相{,q回true
<notEqual> 如果常数与被定义的实体不相等Q返回true
<greaterEqual> 如果常数大于{于被定义的实体Q返回true
W一cL仉辑标记
<lessEqual> 如果常数于{于被定义的实体Q返回true
<lessThan> 如果常数于被定义的实体Q返回true
<greaterThan> 如果常数大于被定义的实体Q返回true
举例
判断名ؓ"name"的请求参数的值是否是"SomeName"?br /> <logic:equal parameter="name" value="SomeName">
        The entered name is SomeName
</logic:equal>
举例
判断在页的作用域中是否有一个名?bean"的beanQ它有一个prop属性,q个属性的值是否大??br /> 如果q个属性能够{化ؓ数|p行数值比较,否则p行字W串比较?br /> <logic:greaterThan name="bean" property="prop" scope="page" value="7">
The value of bean.Prop is greater than 7
</logic:greaterThan>
W二cL仉辑标记
<logic:present>
<logic:notPresent>
W三cL仉辑标记
<logic:match>
<logic:notMatch>
重复标记<logic:iterate>
它能够根据特定集合中元素的数目对标记体的内容q行重复的检?br /> 集合的类?br /> java.util.Iterator
java.util.Collection
java.util.Map
java.util.List
数组
举例
Strlst是一个包含字W串的ListQ现在要他内部的字W串全都昄在浏览器?br /> <logic:iterate id="element" name="strlst"  indexId="index">
<%Q?String)element)%>
</logic:iterate>
转发标记
<logic:forward>标记能够响应{发给重定向到特定的全局ActionForward?br /> ActionForward的类型决定了是用PageContext转发响应Q还是用sendRedirect响应进行重定向
此标记只有一?name"属性,用来指定全局ActionForward的名Uͼ例如Q?br /> <logic:forward name="myGlobalForward"/>
重定向标?br /> <logic:redirect>标记是一个能够执行HTTP重定向的强大工具?br /> Ҏ(gu)指定的不同属性,它能够通过不同的方式实现重定向?br /> 它还允许开发h员指定重定向URL的查询参数?br /> HTML标记
Struts HTML标记可以大致地分Z下几个功能:
昄表单元素和输入控?br /> 昄错误信息
昄其他HTML元素
模板标记
Struts模板标记可以大致地分Z下几个功能:
插入标记<template:insert>
攄标记<template:put>
获得标记<template:get>



SevenDays 2009-02-10 10:27 发表评论
]]>
Struts 初始化处理流E?/title><link>http://www.aygfsteel.com/SevenDays/archive/2009/02/10/254007.html</link><dc:creator>SevenDays</dc:creator><author>SevenDays</author><pubDate>Tue, 10 Feb 2009 02:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/SevenDays/archive/2009/02/10/254007.html</guid><wfw:comment>http://www.aygfsteel.com/SevenDays/comments/254007.html</wfw:comment><comments>http://www.aygfsteel.com/SevenDays/archive/2009/02/10/254007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/SevenDays/comments/commentRss/254007.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/SevenDays/services/trackbacks/254007.html</trackback:ping><description><![CDATA[Struts 初始化处理流E?<br />    Ҏ(gu)在web.xml中配|的初始化参敎ͼServlet容器决定在在容器的W一ơ启动,或第一ơ客戯求ActionServlet 的时机加载ActionServlet Q不哪U方式加载,和其它Servlet一PActionServlet 的init( )Ҏ(gu)被调用Q开始初始化q程。让我们来看看在初始化过E中发生些什么,理解了这些,对于我们debug和扩展自q应用更加得心应手?<br />    1   初始化框架的内部消息l定Q这些消息用来输出提C,警告Q和错误信息到日志文件中?<br />        org.apache.struts.action.ActionResources用来获取内部消息Q?<br />    2   加蝲web.xml中定义的不同参数Q用以控制ActionServlet 的不同行为,q些参数包括 config, debug, detail, and convertNull Q?<br />    3   加蝲q初始化web.xml中定义的servlet 名称和servlet映射信息。通过初始化,框架的各UDTD被注册,DTD用来在下一步校验配|文件的有效性; <br />    4、ؓ默认应用加蝲q初始化Struts配置文gQ配|文件即初始化参数config指定的文件。默认配|文件被解析Q?nbsp;产生一个ApplicationConfig对象存于ServletContext 中。可以通过关键?nbsp;org.apache.struts.action.APPLICATION 从ServletContext 中获取ApplicationConfigQ?<br />    5   Struts配置文g中指定的每一个消息资源都被加载,初始化,q存在ServletContext 的合适区?Z每个message-resources元素的key 属?Q如果key 属性没有设|,则ؓorg.apache.struts.action.MESSAGEQ?<br />    6   Struts配置文g中声明的每一个数据源被加载ƈ且初始化Q如果没有配|数据源Q这一步蟩q; <br />    7   加蝲q初始化Struts配置文g中指定的插g。每一个插件的init()Ҏ(gu)被调用; <br />   8   当默认应用加载完成,init()Ҏ(gu)判断是否有应用模块需要加载,如果有,重复4?完成应用模块的加载?<script type="text/javascript"> //<![cdata[ Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1')); Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90); //]]> </script> <img src ="http://www.aygfsteel.com/SevenDays/aggbug/254007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/SevenDays/" target="_blank">SevenDays</a> 2009-02-10 10:26 <a href="http://www.aygfsteel.com/SevenDays/archive/2009/02/10/254007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">н</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">۶</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ǩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ĺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">±</a>| <a href="http://" target="_blank">Ž</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˹</a>| <a href="http://" target="_blank">¹</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">º</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">཭</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԭƽ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>