Jsp java如何从请求中获取json?
我正在向服务器发送一个json请求。我可以看到http post是在firebug中正确完成的。(我确信json格式是有效的) 例如{datas:[{a:1,“b:2},{a:5,“b:6}]} 我的问题是,如何在服务器端恢复这些数据?我读到有人说要使用Jsp java如何从请求中获取json?,jsp,servlets,struts2,Jsp,Servlets,Struts2,我正在向服务器发送一个json请求。我可以看到http post是在firebug中正确完成的。(我确信json格式是有效的) 例如{datas:[{a:1,“b:2},{a:5,“b:6}]} 我的问题是,如何在服务器端恢复这些数据?我读到有人说要使用request.getInputStream,但我不知道如何将其转换为字符串或用GSON解析 另一个问题:我可以发布的json字符串有大小限制吗 (2) 提前感谢使用及其拦截器;Struts 2操作将使用请求数据填充 请注意plugindocs页
request.getInputStream
,但我不知道如何将其转换为字符串或用GSON解析
另一个问题:我可以发布的json字符串有大小限制吗
(2)
提前感谢使用及其拦截器;Struts 2操作将使用请求数据填充
请注意plugindocs页面上对JSON的要求。我不确定DOJO是如何工作或发布数据的,但我相信它必须与其他javascript框架的工作原理相同。 下面是我们可以做的事情,以实现您的目标
<package name="demojson" extends="struts-default,json-default">
<action name="jsonTest" class="com.demo.action.JsonTestAction">
<interceptor-ref name="json">
<param name="contentType">application/json</param>
</interceptor-ref>
<result type="json"/>
</action>
</package>
public class JsonTestAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
private Map data = new HashMap();
// log decelaration
public Map getData()
{
return data;
}
public void setData(Map data)
{
this.data = data;
}
@Override
public String execute()
{
logger.log(Level.FINE, "action parameters: " + data);
return SUCCESS;
}
}
var submit = function()
{
var data = {data: {j1 : 'one', j2: 'two', j3: [1, 2, 3, 4, 5], j4: {a: 'A', b: 2, c: '3'}, j5: 2, j6: '2'}};
jQuery.ajax(
{
type: 'POST',
url: '/blah/jsonTest.action',
data: jQuery.toJSON(data),
dataType: 'json',
async: false ,
contentType: 'application/json; charset=utf-8',
success: do what you want here}
});
};
希望这将帮助您如何将数据发布到服务器端??您好,我刚刚更新了问题,现在是如何发布数据:您可以显示如何在配置文件中配置操作吗?实际上,这只是一个空操作,我的意思是我刚刚映射到一个只有“println”的方法对于测试,请使用Dave所说的插件,我提供了一个示例非常感谢,我的问题得到了解决:D我丢失了拦截器抱歉,但是现在当我调用jsonTest.action时,该操作中的HttpServletRequest对象为null:S,我实现了ServletRequestAware接口,同一操作中的其他方法是finenvm,我使用了(HttpServletRequest)ActionContext.getContext().get(ServletActionContext.HTTP_请求);相反,他成功了thanks@Kossel:为什么要使用HttpServletRequest,因为请求参数将由框架本身使用params拦截器传递。请尝试避免Servlet API与您的操作耦合。因为我使用它获取ApplicationContext,以便Spring查找并注入服务类:/
<package name="demojson" extends="struts-default,json-default">
<action name="jsonTest" class="com.demo.action.JsonTestAction">
<interceptor-ref name="json">
<param name="contentType">application/json</param>
</interceptor-ref>
<result type="json"/>
</action>
</package>
public class JsonTestAction extends ActionSupport
{
private static final long serialVersionUID = 1L;
private Map data = new HashMap();
// log decelaration
public Map getData()
{
return data;
}
public void setData(Map data)
{
this.data = data;
}
@Override
public String execute()
{
logger.log(Level.FINE, "action parameters: " + data);
return SUCCESS;
}
}
var submit = function()
{
var data = {data: {j1 : 'one', j2: 'two', j3: [1, 2, 3, 4, 5], j4: {a: 'A', b: 2, c: '3'}, j5: 2, j6: '2'}};
jQuery.ajax(
{
type: 'POST',
url: '/blah/jsonTest.action',
data: jQuery.toJSON(data),
dataType: 'json',
async: false ,
contentType: 'application/json; charset=utf-8',
success: do what you want here}
});