1.部署一个struts项目的步骤:
a,在WEB-INF下的lib文件夹下粘贴struts开发包;
b,在WEB-INF下的web.xml下添加filter和filter-mapping节点。方法也是复制粘贴。
c,在src目录下粘贴struts.xml文件(名字和位置是固定的)。


2. namespace决定了action的访问路径,默认为"",表示任意路径,namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action,或者/xxx/yyy/index.action。
如果为"",则/x/index.action与/x/y/index.action都可以访问名为index的action。namespace为""的作用是处理其它package处理不了的action。


3. name的作用同Java的包的作用,是为了区别不同的类防止重名以及条理化,与访问的url无关。name通常命名为模块的名字,比如用户管理写为user。


4.struts.xml中的result不写name属性,默认是"success";action不写class默认是ActionSupport;action不写method默认调用execute()方法


5.struts三种接受参数的方法:属性接受、DomainModel、DTO+ModelDriver,其中ModelDriver不需要set/get方法,域模型在jsp页面要带对象的名字,比如user.name。


6.action三种写法:一种是什么都不继承,一种是继承ActionSupport,一种是实现Action接口


7.默认action(空或找不到action的时候调用的action)调用方法

<package name="default" namespace="/" extends="struts-default">
    <default-action-ref name="index"></default-action-ref>
    <action name="index"><!--调用ActionSupport的execute方法-->
     <result>/default.jsp</result>
    </action>
</package>


8.模块包含
<struts>
   <constant name="struts.devMode" value="true" />
   <include file="login.xml" />
</struts>


9.result的type属性
a:dispacher服务器端跳转(forward),默认值
b:redirect客户端跳转
以上两个只能跳转到视图,不能跳转到action
c:chain可以跳转到action(forward到action),不加斜杠
d:redirectAction(redirect到action)
以上四个最常用

还有:freemarker,httpheader,stream,velocity,xslt,plaintext,tiles


10.<global-results>全局结果集、extends关键字
<package name="user" namespace="/user" extends="struts-default">
    <global-results>
     <result name="mainpage">/main.jsp</result>
    </global-results>    
    <action name="index">
     <result>/index.jsp</result>
    </action>    
       <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
     <result>/user_success.jsp</result>
     <result name="error">/user_error.jsp</result>
</action>    
</package>    
<package name="admin" namespace="/admin" extends="user">
    <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
     <result>/admin.jsp</result>
    </action>
</package>


11.动态结果
struts配置:
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
     <result>${r}</result>
</action>
UserAction中的代码:
public String execute() throws Exception {
 if(type == 1) r="/user_success.jsp";
 else if (type == 2) r="/user_error.jsp";
 return "success";
}
注:UserAction要声明type和r成员变量并加set/get方法。一般在客户端跳转时用到,用来加参数。


12.result类型是redirect时向jsp传递参数
<package name="user" namespace="/user" extends="struts-default">
   <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
   <result type="redirect">/user_success.jsp?t=${type}</result>
   </action>    
</package>
user_success.jsp中显示参数:
<s:property value="#parameters.t"/>
注:UserAction中要定义type成员变量,并加上set/get方法。


13.struts通配符配置示例
<struts>
   <constant name="struts.devMode" value="true" />
   <package name="actions" extends="struts-default" namespace="/actions">
       <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
           <result>/Student{1}_success.jsp</result>
       </action>

       <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
           <result>/{1}_{2}_success.jsp</result>
           <!-- {0}_success.jsp -->
       </action>
   </package>
</struts>