`

通过流的方式获取Request中的参数

阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.beanutils.BeanUtils;

/**
 * requst流对象工具类
 * @author LUSHUIFA242
 *
 */
public class RequestStreamUtil {
	
	/**
	 * 将request流中的数据转换成String
	 * @param request
	 * @return
	 */
      public static String toString(HttpServletRequest request){
		    String valueStr = "";
		    try {
				StringBuffer sb = new StringBuffer();
				InputStream is = request.getInputStream();
				InputStreamReader isr = new InputStreamReader(is);
				BufferedReader br = new BufferedReader(isr);
				String s = "";
				while ((s = br.readLine()) != null) {
					sb.append(s);
				}
				valueStr = sb.toString();
			} catch (IOException e) {
				e.printStackTrace();
				valueStr = "";
			}
			return valueStr;
      }
      
	   /**
	  	 * 将request流中的数据转换成Map
	  	 * @param request
	  	 * @return
	  	 */
	    public static Map<String,String> toMap(HttpServletRequest request){
	    	Map<String,String> parameter = new HashMap<String,String>();
	    	String valueStr = toString(request);
	    	try {
	    		if(null!=valueStr&&!"".equals(valueStr)){
			    	String[] valueArr = valueStr.split("&");
			    	for (String kvStr : valueArr) {
			    		String[] kvStrArr = kvStr.split("=");
			    		parameter.put(kvStrArr[0], kvStrArr[1]);
					}
			    }else{
			    	parameter = getParameterMap(request);
			    }
			} catch (Exception e) {
				e.printStackTrace();
			}
			return parameter;
	    }
	    
	    /**
	  	 * 将request流中的数据转换成bean
	  	 * @param request
	  	 * @return
	  	 */
	    public static Object toBean(HttpServletRequest request,Class<?> beanClazz){
	    	Map<String, String> mapObject = toMap(request);
	    	System.out.println("toBean:"+mapObject);
	    	Object beanO = null;
	    	try {
	    		beanO = beanClazz.newInstance();
	    		if(null!=mapObject&&!mapObject.isEmpty()){
	    			BeanUtils.copyProperties(beanO,mapObject);
	    		}
			} catch (Exception e) {
				e.printStackTrace();
			}
			return beanO;
	    }
	    
	    /** 
		 * 从request中获得参数Map,并返回可读的Map 
		 * @param request 
		 * @return 
		 */
		public static Map<String,String> getParameterMap(HttpServletRequest request) {  
		    // 参数Map  
		    Map properties = request.getParameterMap();  
		    // 返回值Map  
		    Map<String,String> returnMap = new HashMap<String,String>();  
		    Iterator entries = properties.entrySet().iterator();  
		    Map.Entry<String,String> entry;  
		    String name = "";  
		    String value = "";  
		    while (entries.hasNext()) {  
		        entry = (Map.Entry) entries.next();  
		        name = (String) entry.getKey();  
		        Object valueObj = entry.getValue();  
		        if(null == valueObj){  
		            value = "";  
		        }else if(valueObj instanceof String[]){  
		            String[] values = (String[])valueObj;  
		            for(int i=0;i<values.length;i++){  
		                value = values[i] + ",";  
		            }  
		            value = value.substring(0, value.length()-1);  
		        }else{  
		            value = valueObj.toString();  
		        }  
		        returnMap.put(name, value);  
		    }
		    return returnMap;  
		}
}

其它同学有更好的设计可以随意评论,谢谢!

 

0
1
分享到:
评论

相关推荐

    java 获取request中的请求参数代码详解

    Java 提供了多种方式来获取 Request 中的请求参数,本文将详细介绍这些方法。 获取所有请求参数 在 Java 中,我们可以使用 `request.getParameterNames()` 方法来获取所有的请求参数名,然后遍历这些参数名,使用 ...

    EOS运算逻辑中获取session和request

    在普元Primeton EOS运算逻辑中获取HttpSession和Httprequest以及application 在普元Primeton EOS运算逻辑中获取HttpSession和Httprequest以及application

    ASP.NET Core自定义中间件如何读取Request.Body与Response.Body的内容详解

    这样的处理方式确保了我们可以在中间件中读取到`Request.Body`和`Response.Body`的内容,同时不会影响其他中间件的正常工作。在编写自定义中间件时,需要注意流的读写状态以及资源管理,避免出现意外的异常或数据...

    easymock-request.getParamsNames

    本文将详细讲解如何使用 Easymock 对 Servlet 进行单元测试,特别是针对 `HttpServletRequest` 中获取参数的方法 `getParamsNames()`。 在Servlet编程中,`HttpServletRequest` 是一个核心接口,它提供了处理HTTP...

    WinForm关于CefSharp获取后的资源、截取request参数、拦截response数据、注入jquery文件和js代码

    接下来,我们讨论如何截取request参数。在`OnBeforeResourceLoad`方法中,你可以通过`request`参数访问到`IRequest`对象,这个对象包含了请求的所有信息,如URL、方法(GET或POST)、请求头等。你可以读取并修改这些...

    浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题

    本文讨论了使用request.getInputStream()获取文件流时遇到的问题,并提供了两种获取文件流的方式,分别是使用DataInputStream和ByteArrayOutputStream。同时,文章也提到了在获取文件流时需要注意的两点:第一点是...

    解决当FORM的ENCTYPE="multipart/form-data" 时request.getParameter()获取不到值的方法 ?

    data'时request.getParameter()获取不到值的方法”这一主题时,我们首先需要理解为什么在特定情况下,传统的`request.getParameter()`方法无法正常工作,以及如何通过引入Apache Commons FileUpload库来解决这个问题...

    JAVAEE中Servlet实例Response与Request对象方法调用范例

    Request对象是用于获取客户端发送的请求信息的,包括请求参数、请求头、请求URL等。HttpServletRequest提供了多种方法来获取这些信息,例如: 1. `getParameter(String name)`:获取指定名称的请求参数值,如果不...

    Struts2通过使用ActionContext类获取request和response对象

    通过这种方式,我们可以在Action中直接使用HTTP请求和响应对象,进行诸如读取请求参数、设置响应头、重定向等操作。 获取到request对象后,我们可以访问请求参数,例如: ```java String paramValue = request....

    通过文件流读取本地图片显示在JSP页面方法

    - `request.getParameter("alaramPic")`:从请求中获取名为`alaramPic`的参数,该参数通常由前端页面传递过来,表示要显示的图片的路径或标识。 ##### 3.2 文件流操作 ```java String imagePath = Const.ALARM_FILE...

    Jsp的request的用法

    1. **request.getParameter()**:这个方法用于获取客户端(通常是HTML表单)通过HTTP请求(GET或POST)传递到服务器端的参数。这些参数通常以键值对的形式出现在URL(GET)或请求体(POST)中。例如,当用户在表单中...

    java通过HttpServletRequest获取post请求中的body内容的方法

    这时候,我们需要使用IO流的方式来获取body中的内容。 使用HttpServletRequest获取post请求body内容的方法有多种,下面我们来详细介绍其中的一种方法。 首先,我们需要了解HttpServletRequest对象的getInputStream...

    koa源码-request模块

    Request对象通常包含了请求方法(如GET、POST等)、URL、请求头、请求体等信息,这些信息都是通过Node.js的http模块获取的。 1. **请求方法(Method)** Request对象的method属性代表了HTTP请求的方法,例如'GET'...

    .net core在服务器端获取api传递的参数过程

    这篇文章主要介绍了.net core在服务器端获取api传递的参数过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在 ActionFilterAttribute 的...

    uni.request.zip

    在原生的uni-app中,`uni.request`是用于发送HTTP或HTTPS请求的方法,它可以发起GET和POST等不同类型的网络请求,获取服务器数据。基础的`uni.request`用法包括设置URL、请求方法、请求头、数据体等参数。但实际项目...

    request拦截转码资料

    - 在`doFilter`方法中,获取请求的输入流,然后使用适当的字符编码进行解码。 2. **设置请求编码**: - 通过`HttpServletRequest`对象的`setCharacterEncoding`方法,可以设置请求的字符编码。但要注意,这个方法...

    完美解决request请求流只能读取一次的问题

    在后边的代码中应用到请求参数值时,我们可能会遇到request中的json数据为空的问题。这是因为InputStream只能读取一次,如果我们想要重复读取流中的数据,就需要自定义一个HttpServletRequestWrapper。 通过继承...

    j2ee13:jsp02,request对象,中文乱码处理,url传参

    在JSP中,可以使用`request.getParameter()`来获取这些参数: ```jsp String name = request.getParameter("name"); String age = request.getParameter("age"); ``` 在处理中文参数时,同样需要注意字符编码,...

    java request.getParameter中文乱码解决方法

    `useBodyEncodingForURI` 参数表示是否用 `request.setCharacterEncoding` 参数对 URL 提交的数据和表单中 GET 方式提交的数据进行重新编码,在默认情况下,该参数为 `false`。`URIEncoding` 参数指定对所有 GET ...

    输入流输出流方式的文件上传下载

    通常,文件上传可以通过`HttpServletRequest`类中的`getPart()`方法获取`Part`对象,再通过该对象读取文件数据。以下是一个简单的文件上传示例: ```java protected void doPost(HttpServletRequest request, ...

Global site tag (gtag.js) - Google Analytics