0 0

关于通过POST方法获得参数的问题3

页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
  <TITLE> New Document </TITLE>
  <META HTTP-equiv="Content-Type" Content="text/html;charset=utf-8"/>
</HEAD>

<BODY>
  <form  action="http://localhost:8008/water/json.do?method=jsonImpl" method="post" >
<input type="text"  size="500" value='{"modelname":"electricity_charge","userval":"3202008281"}'/>
<input value="提交" type="submit"/>
</form>
 
</BODY>
</HTML>


服务端获取代码是: public ActionForward jsonImpl(ActionMapping mapping,ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException
{
                      ServletInputStream sis =  request.getInputStream();
DataInputStream dataInStream = new DataInputStream(sis);
    byte[] buf = new byte[1024];
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    int n = dataInStream.read(buf);
       while (n != -1) {
    os.write(buf, 0, n);
    n = dataInStream.read(buf);
    }
    byte[] res = os.toByteArray();
    System.out.println(new String(res));
          }
发现无法从页面获得text中得value值:{"modelname":"electricity_charge","userval":"3202008281"}



         }

问题补充:
fire_wang 写道
你将
modelname
electricity_charge
userval
作为参数传递吧

不是我不想哇,人家不同意哇。非要这样发

问题补充:
AngelAndAngel 写道
你为什么要这么获取啊
首先你input取个名字 比如name="myvalue"
你直接request.getParameter("myvalue")就可以得到了啊。

不是我不想哇,人家不同意哇。非要这样发

问题补充:怎么也没个兄弟来讲解下撒

问题补充:
AngelAndAngel 写道
引用
怎么也没个兄弟来讲解下撒

关键是感觉太bt了。

我也晓得哇,但是思路应该就是这样的,在<form标签上加上enctype="multipart/form-data"用来接收码流,然后通过getInputStream来获得页面的二进制码进行输出,但是奇怪的是得到的数据是:[B@1684706,难道是编码未设置,所以我就了   response.setCharacterEncoding("utf-8");  
  request.setCharacterEncoding("utf-8");
但是还是这数据,我就是在不晓得哪里出错了,按照道理,码流应该被接收到了。

问题补充:大家来帮个忙啊

问题补充:很感谢大家的帮助。是我理解错了客户方的POST方式,其实客户方的POST 是通过这样传递的:url = new URL(dest_url);
urlconn = (HttpURLConnection) url.openConnection();
urlconn.setRequestProperty("content-type", "text/plain");
urlconn.setRequestMethod(getMethod());
urlconn.setDoInput(true);
if (getMethod().equalsIgnoreCase("POST")) {
urlconn.setDoOutput(true);
OutputStream out = urlconn.getOutputStream();
out.write(commString.getBytes("GBK"));
out.flush();
out.close();
}
单单通过页面级的POST不用name基本无法实现。
2011年10月19日 17:31

6个答案 按时间排序 按投票排序

0 0

采纳的答案

你将
modelname
electricity_charge
userval
作为参数传递吧

2011年10月19日 17:37
0 0

[B@1684706就是byte[]
直接用bytearrayinputstream读就行了,但不一定能读出你想要东西呢..

2011年10月20日 13:03
0 0

个人看法啊,需要考虑一个问题,在POST传参数时,系统需要明确指定input的name。如果不指定name,服务器端应该是获取不到的

这个json参数也真能想哦...

2011年10月20日 10:09
0 0

如果必须是这样的话,那
但是你在submit之前把

引用
{"modelname":"electricity_charge","userval":"3202008281"}
给处理了,完了再submit,也不允许吗

2011年10月20日 10:07
0 0

引用
怎么也没个兄弟来讲解下撒

关键是感觉太bt了。

2011年10月19日 20:56
0 0

你为什么要这么获取啊
首先你input取个名字 比如name="myvalue"
你直接request.getParameter("myvalue")就可以得到了啊。

2011年10月19日 17:36

相关推荐

Global site tag (gtag.js) - Google Analytics