struts 2はゼロから始まる(二)


知識点:1、動的アクション
2、値スタック
3、ウェブの中でどのようにウェブの対象を持ちます
1、動的actionの実現
1.1.struts.xmlでactionノードを構成するmethodプロパティはactionのメソッド名です
  
<struts>
	     <package name="mypackage" extends="struts-defaut">
	        <action name="test" class="cn.zhuojingxinxi.web.TestAction" method="save">
	        </action>
	     </package>

   
package cn.zhuojingxinxi.web;

public class TestAction {
	
	public String execute(){
		
		System.out.println("this is execute method```");
		return null;
	}
	
	
	
   public String save(){
		
		System.out.println("this is save method```");
		return null;
	}
   
   public String update(){
		
		System.out.println("this is update method```");
		return null;
	}
   
   public String delete(){
		
		System.out.println("this is delete method```");
		return null;
	}

}

1.2、ワイルドカードを使用して対応する方法*{}(コードは以下の通り)
       struts.xmlコード:
         
<struts>
	     <package name="mypackage" extends="struts-default">
	        <action name="test_*" class="cn.zhuojingxinxi.web.TestAction" method="{1}">
	        </action>
	     </package>

jspコード:
   
<body>
    
      <form action="test.action" method="post">
      
        <input type="submit" value="  " />
      </form>
      <form action="test_save.action" method="post">
      
        <input type="submit" value="  " />
      </form>
      <form action="test_update.action" method="post">
      
        <input type="submit" value="  " />
      </form>
      <form action="test_delete.action" method="post">
      
        <input type="submit" value="  " />
      </form>
  </body>

1.3、ページ上のformフォームでactionを使う!methodはactionの特定のメソッドを指定します
     struts.xmlコード:
    
 <action name="test" class="cn.zhuojingxinxi.web.TestAction">
	          <result name="success">/success.jsp</result>
	          <result name="error">/error.jsp</result>
	        </action>

jspページコード:
     
<body>
    
      <form action="test.action" method="post">
      
        <input type="submit" value="  " />
      </form>
      <form action="test!save.action" method="post">
      
        <input type="submit" value="  " />
      </form>
      <form action="test!update.action" method="post">
      
        <input type="submit" value="  " />
      </form>
      <form action="test!delete.action" method="post">
      
        <input type="submit" value="  " />
      </form>
  </body>

2、値スタック(値を格納するスタック領域)
2.1、保存されている役割ドメインはrequestである
       2.2、
3、ウェブの中でどのようにウェブの対象を持ちます
3.1、非IOC
   
public String save(){
	   
	      //    action       
	      ValueStack valueStack= ActionContext.getContext().getValueStack();
		  //           
	      
	      
	      //1、      (HttpServletRequest)
	      HttpServletRequest request= (HttpServletRequest) valueStack.getContext().get(StrutsStatics.HTTP_REQUEST);
		  request.setAttribute("hello", "     ");
		  
		  //2、      
		  HttpServletRequest request1= (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
	      
		  //3、  HttpServletRequest  
		  HttpServletRequest request2= ServletActionContext.getRequest();
		  
	      System.out.println("this is save method```");
		return null;
	}

3.2、IOC(set注入)サーブレットRequestAwareインタフェースを実現
    
 private HttpServletRequest httpServletRequest;
   
   public void setServletRequest(HttpServletRequest arg0) {
	this.httpServletRequest=arg0;
	
}

ソースのダウンロードはこちらをクリックしてください: