package的名字不能重复
extends可以继承其他的package
abstract里面的action不生效
namespace命名空间,默认命名空间,跟命名空间,
访问action:/工程名字/命名空间/action名字
-------------------------
包含include分模块开发
----
常量constant,修改方式有两种,properties方式,2.constant标签(struts.xml)
1.Reqult type
redirectAction重定向到一个action
redirect:重定向到一个页面
dispatcher:转发到JSP*(默认)
chain,转发到action
<result><param type="redirectAction">actionName</param></result>
<result type="chain">
<param type="actionName">actionName</param>
<param type="namespace">/命名空间</param>
<param type="method">methodName</param>
</result>
(记得去哪里查)
获得共享对象的4种方法
-------------------------------------------------------------------------
intercept拦截器
自定义拦截器
intercept接口
AbstractIntercept适配器
MethodFilterIntercept粒度更细,可以排除一些不需要被拦截的方法,更加细致
---------------------------------------------------------------------------
OGNL
Struts2-core.......struts-tags.tld
<@taglib prefix='s' uri="/struts-tags">引用标签
<s:form action="", theme="simple">------------------ theme="simple"自己设置样式
List---------------------
<s:iterator value="hobby" value="h">
<s:property value="h"/>
</s:iterator>
<s:debug></s:debug> ---------值栈
静态方法: <s:property value='@类名@方法()'>
调用JDK中的静态方法JDK_Static <s:property value='@@random()'/>
调用JDK中的静态方法JDK_Static <s:property value='@java.lang.Meth@random()'/>
struts.xml中设置常量<constant name='' value=''/>
----------------------------------------------------
List<Users> list=new ArrayList<String>();
List<String> lv=new ArrayList<String>();
Users u1=new Users("张三","123","男","false",lv);
Users u2=new Users("张三","123","男","false",lv);
Users u3=new Users("张三","123","男","false",lv);
list.add().....
调用List当中的某一个元素:
1.--- List: <s:iterator value="list" var="aa" status='n'> ...设置步长n
<s:property value="list[#n.index].username"/>
</s:iterator>
2--- List <s:iterator value="list" var="uu" > ...
<s:property value='username'/>或${username}
</s:iterator>
-------------------------
set?----
Map?-------
Action----Users-----Address
List(Users)---Hobby(List)---------out
---------------------------------------------
<s:optiontransferselect doubleList="" list="" doubleName="" label="权限">
</s:optiontransferselect>
-----------国际化
国际化 i18n
1.改常量
<constant name="struts.custom.i18n.resources" value="globalMessage"> //在xml中配
2.建立文件,取名字
globalMessage_en_US.properties
globalMessage_zh_CN.properties
3.
引入标签
页面<s:text name="username"></s:text>
---------------------------------------
<s radio="#{'男':'男','女':'女'}" vlue="'男'" name="">
----------------------验证框架
*把公用的验证写在validate(),相当于全局变量,每次都先执行里面的验证
1、验证框架,自动验证
当做局部验证的时候不好用。
验证文件xml的格式------loginAction-registerAction-validation.xml
(注意,这里的registerAction值得不是Action执行的方法,而是action当中
虚拟路径,我们可以通过method标签,满足调用局部方法的功能。