Jsp java如何从请求中获取json?

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页

我正在向服务器发送一个json请求。我可以看到http post是在firebug中正确完成的。(我确信json格式是有效的)

例如{datas:[{a:1,“b:2},{a:5,“b:6}]}

我的问题是,如何在服务器端恢复这些数据?我读到有人说要使用
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}
    });