<!--
package : 包 用来组织模块
namespace : 命名空间 是来用区分访问不同包下的action
extends : 继承 继承其他的包,包里面的任何东西都被继承

如何请求资源路径 : 主机名:端口号/应用工程名/命名空间/action.action
localhost:8080/struts2-2/hello/hello
localhost:8080/struts2-2/hello/hello.action

springmvc
controller 处理资源路径 requestMapping("/user")
controller 的方法 requestMapping("/user") return "" action
/user/user


-->
<package name="default" namespace="/hello" extends="struts-default">
<!--
action : 处理请求资源
name : 对应的请求资源路径
class : 处理请求资源的类 默认是:com.opensymphony.xwork2.ActionSupport
method : 指定处理请求资源类中的方法,默认的是:execute
-->
<action name="hello" class="com.opensymphony.xwork2.ActionSupport"
method="execute"
>
<!--
result : 响应请求的结果 ,结果可能有多个
name : 处理请求的方法返回的结果
type : 类型决定响应的方式
-->
<!-- <result name="success" type="dispatcher">
/WEB-INF/jsp/hello.jsp
</result> -->
<result name="success" type="redirect">
/index.jsp
</result>
</action>
</package>


struts2不是一个单例,那么它是线程安全的



jsp 向 action 传值

1.直接在action类中 添加属性,属性名和jsp中的name值必须一致 且 属性要提供setter方法接收

2.action类实现ModelDriven接口 ,ModelDriven这个是泛型接口需要指定类型,那么不指定类型也是可以的