导航:首页 > 文件教程 > struts2上传文件json

struts2上传文件json

发布时间:2024-03-29 17:07:21

① struts2中的json返回方式

直接response返回的那一堆json字符串有什么用? 那一般都是书上做例子的。

你可以先在struts.xml里配置result类型是json,
实际应用里面,用json一般都是用ajax请求的,所以你在jsp里用ajax的请求a.action,然后根据返回结果动态更新页面。

比如用jQuery,就是
$.ajax({
url: "a.action",
}).done(function() {

// 更新页面。
});

② struts2 action中从数据库读出来的记录,怎么封装成json格式传给客户端啊

Ajax
json格式:
{key:value,key1:value1....}
如果返回的数据包含多个对象:
[{key1:value1...},{key2:value2....}]

③ struts2 怎么配置 json

第一步: 添加struts2-json-plugin-2.3.1.2.jar


第二部: 在struts配置文件


第五部 : js中可以测试接受结果

④ struts2怎么返回json数据

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN"
"
<struts>
<packagename=""extends="json-default"namespace="">


<actionname=""class=""method="">
<resulttype="json">
以下是变量名为loginUser对象的某些指定属性
<paramname="includeProperties">
loginUser.id,
loginUser.loginName,
loginUser.name,
loginUser.roleNames
</param>

以下是变量名为loginUser对象的全部属性,多个对象用逗号
<paramname="includeProperties">
loginUser.*,
loginUser1.*
</param>

以下是集合里的某些指定属性
<paramname="includeProperties">
weekScheles[d+].id,
weekScheles[d+].startDate,
weekScheles[d+].endDate,
weekScheles[d+].title,
weekScheles[d+].scheleCount
</param>
</result>
</action>
</package>
</struts>

注意package标签,extends要写成json-default

Struts2处理JSON只需要在xml文件里就可以完成,但是要注意,能够直接作为JSON返回的必须是Action类里的属性,方法中的属性不能使用此方式直接返回

⑤ struts2 怎样读取json数据

一.认识JSON

JSON是一种轻量级、基于文本、与语言无关的数据交换格式,可以用文本格式的形式来存储或表示结构化的数据。

二.POST请求与Content-Type: application/json

常用的HTTP请求方法有GET, POST, PUT, DELETE等。在提交POST请求时,请求数据放在消息体(Body)中,请求数据的格式及编码方式用Content-Type来指定。如我们常用的表单<form>提交,其Content-Type默认为application/x-www-form-urlencoded,提交的数据按照key1=val1&key2=val2进行编码,服务器端也能很容易地解析K-V值。

JSON的出现,让交换的数据不再仅限于简单的K-V结构,而可以有更加复杂的层级,特别适合于RESTful接口。在发送请求时,指定Content-Type为application/json,即可使用JSON字符串作为请求的数据。而在服务器端接收到该请求后,将按照JSON字符串对请求数据进行处理。

三.Struts2接收JSON请求

在Struts2的Action中提取Content-Type为application/x-www-form-urlencoded的POST参数,我们非常熟悉:在Action中定义属性及其getter, setter方法,接收到请求时,默认会将与属性同名的参数值赋予该属性。

但是对Content-Type为application/json的请求数据,Struts2默认无法解析。因为请求的JSON数据需从输入流中读取出来,无法直接从ServletRequest的请求参数中解析。很容易想到,要读取JSON请求数据,最直接的方式就是从输入流读取。而同时,Struts2的strus2-json-plugin也提供了有关的拦截器,对JSON请求数据进行解析。下面将对两种方案进行分析:

1.从输入流中读取JSON请求数据,以下是在Action中实现的一个读取输入流数据的方法

  • 解析得到JSON对象后,遍历JSON对象,取出K-V,通过反射的V设置给予K相同的属性

  • 开发者可根据自己的需求进行选择:从输入流直接读取JSON请求数据,或使用struts2-json-plugin对JSON请求数据进行处理。

    ⑥ JSP在Struts 2中使用JSON Ajax支持


    JSON插件提供了一种名为json的ResultType,一旦为某个Action指定了一个类型为json的Result,则该Result无需映射到任何视图资源。因为JSON插件会负责将Action里的状态信息序列化成JSON格式的数据,并将该数据返回给客户端页面的JavaScript。
    简单地说,JSON插件允许我们在JavaScript中异步调用Action,而且Action不再需要使用视图资源来显示该Action里的状态信息,而是由JSON插件负责将Action里的状态信息返回给调用页面——通过这种方式,就可以完成Ajax交互。
    Struts2提供了一种可插拔方式来管理插件,安装Struts2的JSON插件与安装普通插件并没有太大的区别,一样只需要将Struts2插件的JAR文件复制到Web应用的WEB-INF/lib路径下即可。
    安装JSON插件按如下步骤进行:
    (1)登陆
    (2)将下载到的jsonplugin-0.7.jar文件复制到Web应用的WEB-INF路径下,即可完成JSON插件的安装。
    实现Actio逻辑
    假设wo,en输入页面中包含了三个表单域,这三个表单域对于三个请求参数,因此应该使用Action来封装这三个请求参数。三个表单域的name分别为field1、field2和field3。
    处理该请求的Action类代码如下:
    public class JSONExample
    {
    //封装请求参数的三个属性
    private String field1;
    private transient String field2;
    private String field3;
    //封装处理结果的属性
    private int[] ints = {10, 20};
    private Map map = new HashMap();
    private String customName = "custom";
    //三个请求参数对应的setter和getter方法
    public String getField1()
    {
    return field1;
    }
    public void setField1(String field1)
    {
    this.field1 = field1;
    }
    //此处省略了field1和field2两个字段的setter和getter方法
    ...
    //封装处理结果的属性的setter和getter方法
    public int[] getInts()
    {
    return ints;
    }
    public void setInts(int[] ints)
    {
    this.ints = ints;
    }
    public Map getMap()
    {
    return map;
    }
    public void setMap(Map map)
    {
    this.map = map;
    }
    //使用注释语法来改变该属性序列化后的属性名
    @JSON(name="newName")
    public String getCustomName()
    {
    return this.customName;
    }
    public String execute()
    {
    map.put("name", "yeeku");
    return Action.SUCCESS;
    }
    }
    在上面代码中,宏蔽派使用了JSON注释,注释时指定了name域,name域指定Action属性被序列化成JSON对象的属性名。除此之外,JSON注释还支持如下几个域:
    serialize:设置是否序列化该属性
    deserialize:设置是否反序列化该属性。
    format:蔽贺设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。
    配置该Action与并丛配置普通Action存在小小的区别,应该为该Action配置类型为json的Result。而这个Result无需配置任何视图资源。
    配置该Action的struts.xml文件代码如下:

    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "">
    <struts>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <package name="example" extends="json-default">
    <action name="JSONExample" class="lee.JSONExample">
    <result type="json"/>
    </action>
    </package>
    </struts>
    在上面配置文件中有两个值得注意的地方:
    第一个地方是配置struts.i18n.encoding常量时,不再是使用GBK编码,而是UTF-8编码,这是因为Ajax的POST请求都是以UTF-8的方式进行编码的。
    第二个地方是配置包时,自己的包继承了json-default包,而不再继承默认的default包,这是因为只有在该包下才有json类型的Result。

    ⑦ Struts2 如何获得action中传到jsp页面的json格式集合对象。。。。求解

    楼上的这种办法,因为response写入的是字符串,需要你在前台js使用eval函数将字符串转换成回json对象,才可以使用答data.results的调用
    使用struts2的话,可以考虑使用struts2集成的返回json功能,不用写入到response:
    1、在配置文件中,定义package的extends,<package name="ajaxAction" extends="json-default">;
    2、下面的infoDxt就是我在infoDxtAction中的一个bean,struts2会自动的将该对象转换成json,而且bean里面还可以使用@JSON(format="yyyy-MM-dd") 这种标注方式,指定json中的格式
    <action name="AjaxDxtShow" class="infoDxtAction" method="show">
    <result type="json">
    <param name="root">infoDxt</param>
    </result>
    </action>
    3、针对上面的配置,在action中写下show方法就好了,不能是void方法,需要返回值

    ⑧ 在struts2中,接受ajax传的json对象集合,接受不到

    不知道你解决了没有。我刚好遇到这个问题,基本上和你差不多。
    你这个实际上是复杂数据传递。
    因为你的json中又包含了JsonArray,array中又存储了json对象......
    因为你是采用jquery的Ajax进行传递的,但是jquery的ajax和struts并不是很兼容,传递过去的值,根本无法被被正确的解析。那么如何解决这个问题呢?
    这样改
    var myparam = var myparam = JSON.stringify(
    {
    'userName' : '薛军军',
    'sex' : '男',
    'others' : '其他值',
    'jsonTest':[{'t_id':'sd','t_name':'trs'},{'t_id':'sd','t_name':'trs'}]
    },
    );
    $.ajax({
    type:"POST",
    async:false,
    url :"<%=basePath%>pages/User/getUserObj.action",
    data : myparam,
    dataType : "text",
    success : function(data) {
    alert(data);
    }

    });
    这样就向后台传递了正确的json对象。
    但是现在后台还无法正确接收对象,还需要配置struts.xml,在你的包中,action前面加上拦截器
    <interceptors>
    <interceptor-stack name="myStack">
    <interceptor-ref name="json"></interceptor-ref>
    <interceptor-ref name="defaultStack" />
    </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="myStack" />
    好了,这样就应该可以了

    阅读全文

    与struts2上传文件json相关的资料

    热点内容
    c语言12位的数据应该怎么存储 浏览:953
    将ape导入iphone 浏览:107
    js组合快捷键 浏览:174
    linux系统盘默认挂在的文件夹 浏览:667
    淘宝数据包如何操作上架 浏览:567
    vb编程中输入cls是什么意思 浏览:81
    linuxtime服务 浏览:184
    疯狂安卓讲义第二版代码 浏览:420
    老炮儿三小时版本下载 浏览:313
    matlab怎么调试程序 浏览:2
    winxp升级win7的危害 浏览:496
    网络没连上却不可用是怎么回事 浏览:752
    社区版本 浏览:738
    怎么查微信公众号什么时候开通的 浏览:717
    安装三菱编程闪退怎么回事 浏览:488
    手机怎么创建word文件格式 浏览:694
    c语言连接数据库 浏览:887
    数据线粉色和白色哪个是正 浏览:775
    vb编程应注意什么 浏览:855
    js循环添加控件 浏览:615

    友情链接