Action 中获取表单数据的三种方式

 

 

(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客)

Action 中获取表单提交数据的三种方式:

 

(1)使用ActionContext类来获取。

(2)使用ServletActionContext类获取。

(3)使用接口注入的方式获取。

 

 

先来说说获取表单数据的直接方法:

1、在Web开发阶段,我们提交表单到Servlet里边,在Servlet里面使用request对象的方法来获取提交数据,如getParameter,getParameterMap。

2、现在我们用Action代替了Servlet,所以提交表单到了Action中,但是Action中没有request对象,所以不能直接使用request对象。

 

 

下边分别对三种方式加以阐述:

 

(1)使用ActionContext类来获取。

  • 创建表单,提交表单数据到action中
  • 在action中使用ActionContext获取数据。

 

代码如下:

Form1DemoAction.java

package form;

import java.util.Arrays;
import java.util.Map;
import java.util.Set;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Form1DemoAction extends ActionSupport {

	@Override
	public String execute() throws Exception{
		//获取表单数据的第一种方法:ActionContext类获取
		/**
		 * 1、获取ActionContext对象
		 * 2、调用方法得到表单数据
		 */
		ActionContext context = ActionContext.getContext();
		//key是表单输入的name属性值,value是输入的值
		Map map = context.getParameters();
		
		Set keys = map.keySet();
		for(String key:keys){
			Object[] obj = (Object[]) map.get(key);
			System.out.println(Arrays.toString(obj));
		}
		
		
		
		return NONE;
	}
}


表单form1.jsp如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    My JSP 'form1.jsp' starting page
    
	
	
	    
	
	
	

  
  
  
   
    
username:
password:
address:


配置文件struts.xml如下:



	


    
	
		
		
		
				
	

     
          
     

 

在web.xml设置拦截器:



  Test_Struts2
  
  
        struts2
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    

    
        struts2
        /*
    
    
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  


        分析:我们首先写了一个表单,提交数据指向了form1.action。在配置文件中,将form1.action指向了我们自定义的action类

Form1DemoAction。当我们访问form1.jsp并且提交了表单数据后,Form1DemoAction类中的execute()将会执行,然后就可以得

到表单提交的数据了。

 

 (2)使用ServletActionContext类获取。

 

Form2DemoAction.java如下:

package form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Form2DemoAction extends ActionSupport {

	@Override
	public String execute() throws Exception{
		//获取表单数据的第二种方法:ServletActionContext类获取
		
		//1、使用ServletActionContext获取request对象。
		HttpServletRequest request = ServletActionContext.getRequest();
		
		//2、调用request里边的方法得到结果
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		String address = request.getParameter("address");
		
		System.out.println(username+":"+password+":"+address);
		return NONE;
	}
}

其中,在struts.xml我们需要配置再一个,如下:


		


在表单中,我们使用如下语句指向了form2.action

action="${pageContext.request.contextPath}/form2.action"



 

 (3)使用接口注入的方式获取。

  •  让action实现接口,得到request对象

 

Form3DemoAction.java

package form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;

public class Form3DemoAction extends ActionSupport implements ServletRequestAware {

	private HttpServletRequest request;
	@Override
	public String execute() throws Exception{
		//获取表单数据的第三种方法:使用接口注入方法来获取
		
		//2、调用request里边的方法得到结果
				String username = request.getParameter("username");
				String password = request.getParameter("password");
				String address = request.getParameter("address");
				
				System.out.println(username+":"+password+":"+address);
		
		return NONE;
	}

	@Override
	public void setServletRequest(HttpServletRequest request) {
		
		//1、得到request对象
	  this.request=request;
		
	}

	
}


 

其中,在struts.xml我们需要配置再一个,如下:


		


在表单中,我们使用如下语句指向了form2.action

action="${pageContext.request.contextPath}/form3.action"

 

 

 

       好了,以上就是Struts2中action获取表单数据的三种方式,其中,常用的是通过ActionContext和ServletActionContext来

获取数据。使用接口注入的方法不常用。

 

 如果对你有帮助,记得点赞哈~欢迎大家关注我的博客,随时加群交流哦~

 

 

 

转载于:https://www.cnblogs.com/lanzhi/p/6467238.html

你可能感兴趣的:(Action 中获取表单数据的三种方式)