zoukankan      html  css  js  c++  java
  • Struts2中的JSON问题——后台返回JSON字符串到前台

      最近做一个项目遇到一个比较棘手的问题,项目后台采用struts2+Hibernate3+Spring3,前台采用ExtJs4。笔者目前仍是一名大二学生吗,后台框架完全是毫无任何基础,从零学,现学现用。

      由此贴出在前后台用JSON字符串进行前后台交互中所出现的问题。前台ExtJs不用多说直接在proxy代理里面写上Action的url即可。最为关键的则是在struts.xml配置文件中。由于再开完全不明白完全不懂,所以在struts.xml的配置中没有单独将json-default和struts-default写入两个package中,而是直接写在了同一个package中,和同伴百度无数仍然没有人给出详细的办法,最终才发现了应该这样写:原因就是命令空间不能相同,因为是不同的estends,否则写入同一个package中则会出现连登陆界面都会出现Not Found 404。(在此class给出的是一个别名,由此采用spring,具体则在applicationContext.xml配置)

        <package name="hr"     namespace="/"  extends="struts-default">
            <action name="login" class="loginAction">
                <result name="success">index.jsp</result>
            </action>
        </package>
        
        <package name="json"     namespace="/json"  extends="json-default">
            <action name="titleAction" class="titleAction" method="allTitleJson">
                <result type="json">
                    <param name="root">title</param>
                </result>
            </action>
        </package>

      进行到此算是解决了一半的问题,不会连整个界面都进不去。而新的问题又出现了。

      到底是将整个对象都进行传递呢?还是先将对象在后台转换成字符串后再进行传递呢?百度一下:我所看到的是所有都是将序列化好了的JSON字符串进行传递,都是JSONObject,可试了无数次都无法正确进行返回,返回常常是500状态码。

      直接切入解决办法,同伴看到一个传递方法用map,想到既然可以用map即可以直接传递一个对象。故试着直接传递对象(即struts.xml配置文件中的title),OK成功。简单粗暴。是否能将List直接传呢?类比ExtJs,应该是可以的。OK果然成果。简单粗暴。

      所以最为简单粗暴的办法就是:在将从数据库中得到数据放到对象过后,直接将对象传递,因为在json-default中会进行转换,后来发现先转成JSON字符再传递也是可以的(会贴出源代码浅析,主要参考:http://yshjava.iteye.com/blog/1333602),原文作者采用struts2-json-plugin-2.1.8.1.jar。根据原文作者所做的分析,我在struts2-json-plugin-2.2.1稍加了一些修改(阅读顺序:JSONResult.java->JSONUtil.java->JSONWriter.java)。下载:http://pan.baidu.com/s/1hqzIPd6

  • 相关阅读:
    NIO与普通IO文件读写性能对比
    JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
    软件工程之软件设计
    ubuntu下管理android手机
    AFNetworking2.0 NSHipster翻译
    【Jsoup爬取网页内容】
    IOS 表视图UITableView 束NSBundle
    如何将位图格式图片文件(.bmp)生成geotiff格式图片?
    opencv3 使用glob遍历并修改文件名
    Ubuntu clion下载及激活
  • 原文地址:https://www.cnblogs.com/yulinfeng/p/3722272.html
Copyright © 2011-2022 走看看