java,URLDecoder.decode怎么处理数组?request.getParameterValues,这个传进去怎么弄?
比如URLDecoder.decode(request.getParameter("name"),‘utf-8’),这样可以接收1个值,如何通过这个接收数组数据呢?或者有没有其它办法
java,URLDecoder.decode怎么处理数组?request.getParameterValues,这个传进去怎么弄?
比如URLDecoder.decode(request.getParameter("name"),‘utf-8’),这样可以接收1个值,如何通过这个接收数组数据呢?或者有没有其它办法
楼主我自己写了个demo试了下,不清楚你的数组是由什么发送过来的,我用URL类发送post请求给一个web项目,方便起见只写了个简单的servlet。
下面这是客户端代码:
int[] a=new int[]{1,2,3,4,5,6,7}; //要发送的数组
URL url=new URL("http://localhost/Servlet/Servlet");//创建连接
URLConnection conn=url.openConnection(); //打开连接
conn.setRequestProperty("accept", "*/*"); //下面是根据HTTP协议发送post请求所需要的一些请求头
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/"
+ "61.0.3163.79 Safari/537.36");
conn.setDoOutput(true); //设置URL链接可以进行输出
conn.setDoInput(true); //设置可以获得输入
OutputStream out=conn.getOutputStream();
ByteBuffer buffer=ByteBuffer.allocate(a.length*4); //新建一个大小为数组的4倍大小的字节缓冲区,之所以4倍,因为int型占4byte
for(int i:a){ //将数组内容写入缓冲区
buffer.putInt(i);
}
out.write(buffer.array()); //向输出流写入缓冲区转换出的byte[]
out.flush(); //清空缓冲区,将数据发送
下面是服务器端获取数组:
List<Byte> list=new ArrayList<Byte>();
InputStream in=request.getInputStream();
int i=0;
while((i=in.read())!=-1){
System.out.println(i);
}
/*byte[] b=new byte[30];
ByteBuffer buffer=ByteBuffer.wrap(b);
IntBuffer intBuffer=buffer.asIntBuffer();
while(intBuffer.hasRemaining()){
System.out.println(intBuffer.get());
}*/
从输入流获取数据,读出来的是字节,然后将字节转换成需要的值。第二种用ByteBuffer转换需要提前知道数据的大小