Struts2-Action-3-系列问题(作用、namespace、定义自己的action)

来源:互联网 发布:阿里云服务器端口映射 编辑:程序博客网 时间:2024/05/17 15:05
  1. Action入门:
    Struts作用: 把请求和视图分开
  2. Namespace
    namespace决定了action的访问路径,默认为“”,表示可以接收所有路径的action
    namespace可以写为/,或者/xx,或者/xx/yy,对应的action访问路径为/index.action,/xx/index.action,/xx/yy/index.action
    namespace最好也用模块来进行命名

    <!--namespace和package(如果action的name相同,则可以用package来区分,与java中的包含义相似)一般用模块来命名--><--http://localhost:8080/hello/front/a/b/index.action--><package name="front" namespace="/front" extends="struts-default">    <action name="index">        <result>/front.jsp</result>    </action></package><!--namespace不写  相当于namespace=""   只要访问路径包括index.action则都访问--><--http://localhost:8080/hello/a/b/cc/ddd/index.action--><package name="main"  extends="struts-default">    <action name="index">        <result>/main.jsp</result>    </action></package>
  3. 定义自己的Action
    1.具体视图的返回可以由用户自己定义的Action来决定
    2.具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
    3.具体Action的实现(3种)可以是一个普通的java类,里面有public String execute方法即可;或者实现Action接口;但最常用的是ActionSupport继承,好处是可以直接使用Struts2封装好的方法
    4.stuts1和struts2一个很重要的区别是,struts1每次访问时,都是同一个对象,可能会产生同步访问的问题;而struts2每次访问时,都是new一个新的对象,无此问题。
<!--struts.xml中--> <package name="myAction" namespace="/myAction" extends="struts-default">        <action name="myaction" class="com.IndexAction3">            <result>/front.jsp</result>        </action>    </package>
// action中//方法1public class IndexAction1 {    public String execute(){        System.out.println("indexAction1");        return "success";    }}//方法2public class IndexAction2 implements Action{    public String execute() throws Exception {        System.out.println("indexAction2");        return SUCCESS;    }}//方法3  只记住这种import com.opensymphony.xwork2.ActionSupport;public class IndexAction3 extends ActionSupport{    @Override    public String execute() throws Exception {        System.out.println("IndexAction3");        return "success";    }}
0 0