struts2从零开始(二)

     知识点:1、动态action
             2、值栈
             3、web中怎么拿web对象


    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、web中怎么拿web对象
    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注入)实现ServletRequestAware接口
    
 private HttpServletRequest httpServletRequest;
   
   public void setServletRequest(HttpServletRequest arg0) {
	this.httpServletRequest=arg0;
	
}


     源码下载请点这里:
   
     

猜你喜欢

转载自1136051009.iteye.com/blog/1768727