前台post请求json数据发送json参数,后台怎么接受

package com.
import java.io.BufferedR import java.io.DataOutputS import java.io.IOE import java.io.InputStreamR import java.io.UnsupportedEncodingE import java.net.HttpURLC import java.net.MalformedURLE import java.net.URL; import net.sf.json.JSONO
public class AppAddTest {
&&& public static final String ADD_URL = "";
&&& public static void appadd() {
&&&&&&& try { &&&&&&&&&&& //创建连接 &&&&&&&&&&& URL url = new URL(ADD_URL); &&&&&&&&&&& HttpURLConnection connection = (HttpURLConnection) url &&&&&&&&&&&&&&&&&&& .openConnection(); &&&&&&&&&&& connection.setDoOutput(true); &&&&&&&&&&& connection.setDoInput(true); &&&&&&&&&&& connection.setRequestMethod("POST"); &&&&&&&&&&& connection.setUseCaches(false); &&&&&&&&&&& connection.setInstanceFollowRedirects(true); &&&&&&&&&&& connection.setRequestProperty("Content-Type", &&&&&&&&&&&&&&&&&&& "application/x-www-form-urlencoded");
&&&&&&&&&&& connection.connect();
&&&&&&&&&&& //POST请求 &&&&&&&&&&& DataOutputStream out = new DataOutputStream( &&&&&&&&&&&&&&&&&&& connection.getOutputStream()); &&&&&&&&&&& JSONObject obj = new JSONObject(); &&&&&&&&&&& obj.element("app_name", "asdf"); &&&&&&&&&&& obj.element("app_ip", "10.21.243.234"); &&&&&&&&&&& obj.element("app_port", 8080); &&&&&&&&&&& obj.element("app_type", "001"); &&&&&&&&&&& obj.element("app_area", "asd");
&&&&&&&&&&& out.writeBytes(obj.toString()); &&&&&&&&&&& out.flush(); &&&&&&&&&&& out.close();
&&&&&&&&&&& //读取响应 &&&&&&&&&&& BufferedReader reader = new BufferedReader(new InputStreamReader( &&&&&&&&&&&&&&&&&&& connection.getInputStream())); &&&&&&&&&&& S &&&&&&&&&&& StringBuffer sb = new StringBuffer(""); &&&&&&&&&&& while ((lines = reader.readLine()) != null) { &&&&&&&&&&&&&&& lines = new String(lines.getBytes(), "utf-8"); &&&&&&&&&&&&&&& sb.append(lines); &&&&&&&&&&& } &&&&&&&&&&& System.out.println(sb); &&&&&&&&&&& reader.close(); &&&&&&&&&&& // 断开连接 &&&&&&&&&&& connection.disconnect(); &&&&&&& } catch (MalformedURLException e) { &&&&&&&&&&& // TODO Auto-generated catch block &&&&&&&&&&& e.printStackTrace(); &&&&&&& } catch (UnsupportedEncodingException e) { &&&&&&&&&&& // TODO Auto-generated catch block &&&&&&&&&&& e.printStackTrace(); &&&&&&& } catch (IOException e) { &&&&&&&&&&& // TODO Auto-generated catch block &&&&&&&&&&& e.printStackTrace(); &&&&&&& }
&&& public static void main(String[] args) { &&&&&&& appadd(); &&& }
阅读(...) 评论()前台json传送到后台,自动装配成对象,spring支持这么做么? - ITeye问答
& 现在有一个产品添加页面,前台用过jquery获取数据,拼装成一个json,和产品的bean是相对应的,我后台如何获取json数据,并自动装配成产品对象?spring支持这么做么?如何做?
spring mvc提供了默认的解决方案
在mvc config中配置
&bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&
&property name="messageConverters"&
&bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /&
&/property&
在controller中
@RequestMapping(value="/{id}", method = RequestMethod.PUT)
@ResponseBody
public Map update(@PathVariable final Object id, @RequestBody final Map&String, Object& map, HttpServletRequest request) {
Map&String,Object& ret = new HashMap&String,Object&();
at1943前台json传送到后台,自动装配成对象,spring支持这么做么?
ajax提交的时候会将json对象转为key=value的形式,springmvc中的方法只要将对应的bean作为入参即可自动接收。
like this
$.post("/u",{name:"xiaoming",age:99},function(){alert("complate");});
@requstmapping(value="/u",method=requestmethod.post)
public string submit(User user){
...
}
class user{
可以使用 json-lib 或者 Gson 都可以将json封装成类或者将javabean专程json
Gson的例子
&&&& Gson gson = new Gson();
&&&& InterfaceResult result = gson.fromJson(jsonstring, new TypeToken&InterfaceResult&() {}.getType());
&&&& System.out.println(result.getMessage());
public class InterfaceResult implements Serializable {
private S&&& //结果代码
private S //结果消息
private List&Map&String, Object&&& //返回数据
* @return the code
public String getCode() {
* @param code the code to set
public void setCode(String code) {
this.code =
* @return the message
public String getMessage() {
* @param message the message to set
public void setMessage(String message) {
this.message =
* @return the data
public List&Map&String, Object&& getData() {
* @param data the data to set
public void setData(List&Map&String, Object&& data) {
this.data =
'type'&&&&&&& : 'post',
'contentType' : 'application/charset=UTF-8',
'data'&&&&&&& : JSON.stringify(JsonObject),
其中JsonObject就是你组装的JSON对象
@RequestMapping(value = "/query", method = RequestMethod.POST)
@ResponseBody
public Map query(@RequestBody QueryVO queryVO) {
&& ...
}
其中:
1、必须是POST方式
2、前台需要设置'contentType'
3、前台JSON对象要转成字符串,如JSON.stringify(JsonObject),
4、后台参数得用@RequestBody 注解
5、如果你是异步处理返回的JSON值(比如Map等)则@ResponseBody是需要的
6、这个时候,你的JsonObject 就会自动转为queryVO这个Bean
基本原理都是这样,在后台读取前台传过来的字符串,然后再解析为对应的bean.如果使用框架的话,只是它帮忙做了这个转换的过程而已。至于字符串转bean,3楼的就是答案。
直接发送Task属性名即可
key:value
@RequestMapping(value="editJob.htm",method=RequestMethod.POST)
@ResponseBody
public void editJob(HttpServletResponse response,Task task){}
Spring MVC的Controller自带此功能,前台传入的json对象与后台定义的bean结构一致,比如:
@RequestMapping(value="/xxx/xxx",method=RequestMethod.POST)
@ResponseBody
public Object xxx(@RequestBody TurnoverRecord record,
HttpServletRequest request, HttpServletResponse response){
可以通过json-org.jar 来做这个。
JSONObject jsonO
JSONArray jsonArr =
jsonObj = new JSONObject(json);
String boxes = jsonObj.getString("xxx");
jsonArr = new JSONArray(boxes);
StringBuffer jsonDeconded = new StringBuffer("{'xxxx':[");
for (int i = 0; i & jsonArr.length(); i++) {
这是我们解析的部分代码。
将json字符串整体作为一个参数传递给后台,后台接收到后再通过第三方jar包进行解析。
好像可以通过json-lib包实现
已解决问题
未解决问题在项目开发中,后台接口开发好了,在本地用postman测试都是没有问题了,前台开发联调后,发现用get方式没问题,但是前台post方式以json方式穿过的的参数,到后台,后台的参数为null,解决方法如下篇文章:
本文已收录于以下专栏:
相关文章推荐
现在在做的项目用到了SpringMVC框架,需要从前端angular接收请求的JSON数据,为了测试方便,所以直接先用AJAX进行测试,不过刚开始用平时用的ajax方法,提交请求会出现415或者400...
闲话少说,刚开始用SpringMVC, 页面要使用jquery的ajax请求Controller。 但总是失败,主要表现为以下两个异常为:
java.lang.ClassNotFound...
1、表单提交2、JSON串客户端请求
String url = &http://localhost:8080/order/create&;
String data = ...
我翻看源码发现Spring已经提供了HttpMessageConverter转换器,而且默认情况下是加载了 MappingJackson2HttpMessageConverter(json ~obje...
使用jQuery从前端向后台发送JSON数据,设置了Content-Type为application/json,同时在Spring MVC的Controller里面使用了@RequestParam注解...
通过@PathVariabl注解获取路径中传递参数 
JAVA 
1     @RequestMapping(value = &/{id}/{str}&) 
2     ...
开发web项目有时候我们需要对controller层传过来的参数进行一些基本的校验,比如非空,非null,整数值的范围,字符串的个数,日期,邮箱等等。最常见的就是我们直接写代码校验,这样以后比较繁琐,...
springmvc的controller很多都用来提供restful服务,成为多功能action
同一个接口既能够提供给web端,也可以提供给ios以及安卓
@RequestBody ...
Controller 中注解使用接受参数的几种传输方式以及几种注解:
在上一篇中,我们使用了JDBC链接数据库,完成了简单的后端开发。但正如我在上文中抛出的问题,我们能不能更好的优化我们在Contr...
Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica...
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)模拟post请求,但是后台得不到参数,用空的帮我看一下 - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
var options = {
hostname: ‘localhost’,
port: 8080,
path: ‘/index/login’,
method: ‘POST’
var qs=require(‘querystring’);
var post_data={
userId:“langzi”,
password:‘456465’
};//这是需要提交的数据
var content=qs.stringify(post_data);
var req = http.request(options, function(res) {
res.setEncoding(‘utf8’);
res.on(‘data’, function (chunk) {
console.log('BODY: ’ + chunk);
req.on(‘error’, function(e) {
console.log('problem with request: ’ + e.message);
// write data to request body
req.write(content);
req.end();
试了好几种语言,python ,php
在获取post的参数是都没有,得不到userId和password
搞不懂为啥nodejs的api没有设置header的选项呢,问题解决了,谢谢诸位帮忙,问题是这样解决滴:
供需要的人参考
var post_data={
username:userName,
password:userPassword,
confirmpassword:userPassword
json这么写是木有问题滴,经过测试可以,
关键在于headers中设置:
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': content.length,
好像少哪一个也不可以,content对应的是 var content=qs.stringify(post_data);
开始的时候搞错了,一直在用post_data.length纠结浪费了我好久,
再次谢谢诸位!!
&code&var post_data={
userId:“langzi”,
password:‘456465’
你这不是json数据 是一个对象了
&code&var post_data={
“userId”:“langzi”,
”password“:‘456465’
在options中加上请求头:
options.headers = {
'content-type': 'application/x-www-form-urlencoded'
谢谢你的建议,问题已解决
参考你的建议问题已解决,不过还要加一句’Content-Length’: content.length,谢谢
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的SPRING3MVC接收JSON参数的问题 JSON解析为空 - ITeye问答
我想把前台页面里一个JSON结构的数据传到controller,尝试了数十次,由map到list到string都无法识别。
JSON的数据结构如下{"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}}
调用方式是通过jquery的ajax调用spring后台,$("#btSaveTemplate").click(function()
alert($("#templateName").val());
var data = {"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}};
var data2 = {"templateName":$("#templateName").val()};
type: "get",//使用get/post方法访问后台
dataType: "json",//返回json格式的数据
url: "lotty/add",//要访问的后台地址
data: data,
success: function(msg){//msg为返回的数据,在这里做数据绑定
if(msg == '1'){
alert('操作成功');
location.reload();
error: function(jqXHR, textStatus, errorThrown) {
alert("error:" + textStatus + " exception:" + errorThrown);
后台spring确实收到了请求,并且执行了相应的方法,如下:
&&& @ResponseBody
@RequestMapping(value="/add", method=RequestMethod.GET)
public String doAdd([color=red][b]String info[/b][/color],Model model) throws E
红色粗体的地方,用String接收是null,改用List和HashMap都不行,后来在SPRING的JAR包中,翻到一个MappingJacksonJsonView,尝试了下,还是空值。之后,我在方法里加了HttpServletRequest参数,郁闷的是:request里面的parameter部分为空
我想可能是SPRING注入处理JSON类的地方出错了,但是这个也不太可能。因为我传最基本的纯key-value结构的JSON数据,后台能成功捕获到(我的做法比较笨,前台有多少个key,controller方法里有多少个对应参数的那种)
这是我SPRING的相关配置:&bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/&
然后注入:&bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&
&property name="messageConverters"&
&ref local="mappingJacksonHttpMessageConverter"/&
&/property&
&/bean&
到此,实在不知道其他的解决方法了。
我的想法是,在实际应用中如果做批量插入的话,可以一次提交一个大的JSON数据,在后台里解析成JSONObject对象,再逐步取值。试了大半天,没有结果,上来问问大家,SPRING3里面JSON做参数的一些经验。
问题补充:amcucn 写道简单点的方法以就是直接将你要传的json数据当成一个字符串提交到后台,后台使用JSONObject相关的方法 可以直接转成对应的MAP对象。然后你就可以处理了。大致的想法就是绕过springmvc本身的json处理类,把你想的"JSON"当成字符串传到后台。
也只能这样,看来SPRING3.0.5并没有能够很好的集成JSONObject的解决方案,只是死板地提供了参数对应和VO去封装JSON信息。
采纳的答案
简单点的方法以就是直接将你要传的json数据当成一个字符串提交到后台,后台使用JSONObject相关的方法 可以直接转成对应的MAP对象。然后你就可以处理了。大致的想法就是绕过springmvc本身的json处理类,把你想的"JSON"当成字符串传到后台。
" target="_blank">" />" target="_blank">" wmode="" quality="high" menu="false" pluginspage="/go/getflashplayer" type="application/x-shockwave-flash" width="200" height="200">
sjax提交加上这个:contentType : 'application/json',&
你传过来的info不是String对象,你要用一个相应的对象接收.这个对象里必须有
String templateN和String templateNo 两个属性
已解决问题
未解决问题

我要回帖

更多关于 post请求发送json数据 的文章

 

随机推荐