<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 创建包default,继承struts-default -->
<package name="default" extends="struts-default">
<!-- 名为login的Action,实现类为LoginAction -->
<action name="login" class="com.action.LoginAction">
<!-- redirectAction返回类型 -->
<result type="redirectAction">
<!-- Action名参数 -->
<param name="actionName">userLogin</param>
<!-- 参数名 -->
<param name="username">${username}</param>
<!-- 命名 空间参数-->
<param name="namespace">/user</param>
</result>
<!-- 返回值为error, redirectAction类型,重定向到名为error的Action-->
<result name="error" type="redirectAction">error</result>
</action>
<!-- 名为error的Action -->
<action name="error">
<result>/error.jsp</result>
</action>
</package>
<!-- 名为user的Action,命名空间为/user -->
<package name="user" extends="struts-default" namespace="/user">
<!--名为userLogin的Action -->
<action name="userLogin" class="com.action.UserAction">
<result>/hello.jsp</result>
</action>
</package>
</struts>
其中hello.jsp 位于webroot 下。${username} 中的username 对应于login中的属性值,
即由页面传过来的值,而param 中 name="username" 中的username 对应于userLogin中的属性名称,即给该名称的属性赋值。
在hello.jsp中获取传递过来的属性 就要用到ognl表达式
<s:property value="username">
================================================================
动态调用方法
在struts.xml 中增加静态配置
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
增加后才可以动态调用方法;
动态调用方法首先在action得有对应的方法,被调用的方法与默认方法execute()类似
<action name="login" class="com.action.LoginAction">
<result>/result.jsp</result>
<result name="add">/add.jsp</result>
<result name="update">/update.jsp</result>
</action>
对象的请求
http://127.0.0.1:8080/helloworld/login!update.action