建立一个使用struts的程序其实步骤并不是很多,
1, 在web.xml里面配置好过滤器,
2, 导入需要的struts Jar包。
3, 设置struts.xml的监听 ,决定action由谁来处理
4, 完成设置的action监听类。
过滤器的种类貌似很多,还不是很清楚它们之间的区别。
通过.properties文件进行字符串配置,可以配置出多种语言, android也有类似的语言国际化方案。使用的时候,通过
<(struts标签名):text name="(字符名)"/>
来调用。
EL表达式:
${sessionScope.user} 表示session中取出user
struts.xml的监听方案很灵活,可以做很多的配置
比如下面这个,客户端提交的表单的action是login,则调用第一个
loginAction 第二个
LoginAction 第三个
<packagename="lee" extends="struts-default">
<!-- 配置name="*Action"的第二个Action -->
<action name="*Action"class="org.crazyit.app.action.TwoAction">
<resultname="success">/welcome.jsp</result>
</action>
<!-- 配置name="*"的第一个Action -->
<action name="*"class="org.crazyit.app.action.FirstAction">
<resultname="success">/welcome.jsp</result>
</action>
<!-- 配置name为LoginAction的第三个Action -->
<action name="LoginAction"class="org.crazyit.app.action.LoginAction">
<resultname="error">/error.jsp</result>
<resultname="success">/welcome.jsp</result>
</action>
</package>
当有多个方法需要选择执行的时候,可以在struts.xml配置,也可以直接使用
actionname!methodname.action的方式,比如如下配置:
<packagename="lee" extends="struts-default">
<!-- 配置loginAction,处理类为LoginRegistAction
默认使用execute方法处理请求-->
<action name="login"class="org.crazyit.app.action.LoginRegistAction">
<!-- 定义逻辑视图和物理视图之间的映射关系 -->
<resultname="input">/login.jsp</result>
<resultname="error">/error.jsp</result>
<resultname="success">/welcome.jsp</result>
</action>
<!-- 配置registAction,处理类为LoginRegistAction
指定使用regist方法处理请求-->
<action name="regist"class="org.crazyit.app.action.LoginRegistAction"
method="regist">
<!-- 定义逻辑视图和物理视图之间的映射关系 -->
<resultname="input">/login.jsp</result>
<resultname="error">/error.jsp</result>
<resultname="success">/welcome.jsp</result>
</action>
</package>
如果需要注册,点击注册的时候,使用javascript将form的action改为regist,就会调用注册方法。
<inputtype="submit"value="注册"onclick="regist();"/>
<scripttype="text/javascript">
function regist()
{
//获取页面的第一个表单
targetForm = document.forms[0];
//动态修改表单的action属性
targetForm.action = "regist";
}
</script>
如果使用!方式调用,如formaction="login!regist.action" 则仍然调用的是regist方法。
还可以为action配置 namesapce
action="HelloWorld" namespace="/tt" 等价于
action="/tt/HelloWorld.action"
还可以使用类似{}的字符处理方案,如<action name="*Action" class="com.namespace.LoginRegistAction" method="{1}"> 动态选择执行的函数
<action name="*Action" class="com.namespace.{1}Action">
还可以使用el表达式动态设定结果的目标页面 <result name="success">/${target}.jsp</result>
target由Jsp通过form提交到Action处理类,