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>