`
xinyoulinglei
  • 浏览: 125939 次
社区版块
存档分类
最新评论

JSON与 STRuts2

    博客分类:
  • java
阅读更多

package com.huawei.cmclient.common.config;


import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.huawei.cmclient.common.sys.SystemLoader;
import com.huawei.cmclient.common.utils.ParamChecking;
import com.huawei.cmclient.common.utils.UnifyUtils;
import com.huawei.cmclient.common.vo.tree.Tree;
import com.huawei.cmclient.common.vo.tree.TreeNode;


public class TreeConfig
{

    private static final Map<String, Tree> treeMap = new HashMap<String, Tree>();

    private String nodeConfigFile;

    public static Map<String, Tree> getTreeMap()
    {
        return treeMap;
    }

    /**
     * 读取配置文件
     */
    public void init()
    {
        try
        {
            String cmClientPath = SystemLoader.getCmClientPath();
           // File configFile = new File(cmClientPath + File.separator + nodeConfigFile.trim());
            File configFile = new File("D://我的文档//workspace/CMClient//WebRoot//WEB-INF//conf//common//tree_config.xml");
           
            SAXReader reader = new SAXReader();
            Document document = reader.read(configFile);
            parse(document);

        }
        catch (DocumentException e)
        {
            e.printStackTrace();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 解析配置值
     * @param document
     * @throws Exception 抛出异常
     */
    private void parse(Document document)
        throws Exception
    {
        Tree tree = null;
        TreeNode treeNode = null;
        final Element root = document.getRootElement();
        final List< ? > trees = root.elements("tree");
        for (final Iterator< ? > iterator = trees.iterator(); iterator.hasNext();)
        {
            Element treeElement = (Element) iterator.next();

            tree = new Tree();
            parseTreeAttribute(tree, treeElement);

            List< ? > nodes = treeElement.elements("node");
            for (final Iterator< ? > iter = nodes.iterator(); iter.hasNext();)
            {

                final Element nodeElement = (Element) iter.next();
               
                treeNode = new TreeNode();

                parseNodeAttribute(treeNode, nodeElement);
               
                parseNodeValue(treeNode,nodeElement);

                tree.getNodeList().add(treeNode);
            }
            treeMap.put(tree.getId(), tree);
        }
    }

    private void parseTreeAttribute(Tree tree, Element element)
    {

        //
        final Attribute idAtt = element.attribute("id");
        tree.setId("root");
        if (null != idAtt && ParamChecking.isBlank(idAtt.getValue()))
        {
            tree.setId(UnifyUtils.processTrim(idAtt.getValue()));
        }

        final Attribute useArrowsAtt = element.attribute("useArrows");
        if (null != useArrowsAtt && "false".equals(UnifyUtils.processTrim(useArrowsAtt.getValue())))
        {
            tree.getTreeOptions().setUseArrows(false);
        }

    }

    private void parseNodeAttribute(TreeNode node, Element element)
    {
        final Attribute expanded = element.attribute("expanded");
        if (null != expanded && "false".equals(expanded.getValue()))
        {
            node.getTreeNodeOptions().setExpanded(false);
        }

    }

    private void parseNodeValue(TreeNode node, Element element)
    {
        org.dom4j.Node idNode = element.element("id");
        org.dom4j.Node textNode = element.element("text");
        org.dom4j.Node parentIdNode = element.element("parentId");
        org.dom4j.Node methodNode = element.element("method");

        node.setId(idNode.getText().trim());
        node.setParentId(parentIdNode.getText().trim());
        node.setText(textNode.getText().trim());
        node.setMethod(methodNode.getText().trim());
    }

    /**
     * @return Returns the nodeConfigFile.
     */
    public String getNodeConfigFile()
    {
        return nodeConfigFile;
    }

    /**
     * @param nodeConfigFile The nodeConfigFile to set.
     */
    public void setNodeConfigFile(String nodeConfigFile)
    {
        this.nodeConfigFile = nodeConfigFile;
    }

}
=====================================================================


package com.huawei.cmclient.common.action;


import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.rpc.holders.StringHolder;

import localhost.imsservice.services.CentrexService.Centrex;
import net.sf.json.JSONArray;

import org.apache.struts2.ServletActionContext;

import com.chinamobile.imsservice.centrex.datatype.holders.IntValueHolder;
import com.huawei.cmclient.common.config.TreeConfig;
import com.huawei.cmclient.common.utils.ParamChecking;
import com.huawei.cmclient.common.vo.tree.Tree;
import com.opensymphony.xwork2.ActionSupport;


public class BaseAction
    extends ActionSupport
{

    private static final long serialVersionUID = 1L;

    private Centrex centrex;

    private boolean success;

    private String msg;

    private String jsonString = "";

    public HttpServletRequest getRequest()
    {
        return ServletActionContext.getRequest();
    }

    public HttpSession getSession()
    {
        return ServletActionContext.getRequest().getSession();
    }

    public ServletContext getApplication()
    {
        return ServletActionContext.getServletContext();
    }

    public HttpServletResponse getResponse()
    {
        return ServletActionContext.getResponse();
    }

    /**
     * @return Returns the centrex.
     */
    public Centrex getCentrex()
    {
        return centrex;
    }

    /**
     * @param centrex The centrex to set.
     */
    public void setCentrex(Centrex centrex)
    {
        this.centrex = centrex;
    }

    public String getJsonString()
    {
        return jsonString;
    }

    public void setJsonString(String jsonString)
    {
        this.jsonString = jsonString;
    }

    public void outJson(String xmlMessage)
    {
        HttpServletResponse response = getResponse();
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = null;
        try
        {
            out = response.getWriter();
            out.write(xmlMessage);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            try
            {
                out.close();
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }

    public StringBuffer getJsonString(String root, Object obj, Map<String, String> param)
    {
        StringBuffer json = new StringBuffer();
        json.append("{\"success\":" + true + ",\"" + root + "\":");
        JSONArray array = JSONArray.fromObject(obj);
        json.append(array.toString());
        if (!ParamChecking.isEmpty(param))
        {
            for (Entry<String, String> entity : param.entrySet())
            {
                json.append(",\"");
                json.append(entity.getKey());
                json.append("\":\"");
                json.append(entity.getValue() + "\"");
            }

        }
        json.append("}");
        return json;
    }

    public StringBuffer getJsonString(String[] roots, Object[] objs, Map<String, String> param)
    {
        StringBuffer json = new StringBuffer();
        json.append("{\"success\":");
        json.append(true);
        for (int i = 0; i < roots.length; i++)
        {
            json.append(",\"");
            json.append(roots[i]);
            json.append("\":");
            json.append(JSONArray.fromObject(objs[i]).toString());
        }

        if (!ParamChecking.isEmpty(param))
        {
            for (Entry<String, String> entity : param.entrySet())
            {
                json.append(",\"");
                json.append(entity.getKey());
                json.append("\":\"");
                json.append(entity.getValue() + "\"");
            }

        }
        json.append("}");
        return json;
    }

    public String getJsonString(IntValueHolder resultcode, String returnDesc)
    {
        StringBuffer json = new StringBuffer();
        if (resultcode == null || resultcode.value == null || resultcode.value.getValue() == null
            || resultcode.value.getValue() != 0)
        {
            json.append("{\"failure\":" + true + ",\"msg\":\"" + returnDesc.replaceAll("\n", "<br/>"));

        }
        else
        {
            json.append("{\"success\":" + true + ",\"msg\":\"" + returnDesc.replaceAll("\n", "<br/>"));
        }
        json.append("\"}");
        return json.toString();
    }

    public String getJsonOtherErrorString()
    {
        StringBuffer json = new StringBuffer();
        json.append("{\"failure\":" + true + ",\"msg\":\"" + "其它错误");
        json.append("\"}");
        return json.toString();
    }

    /**处理服务端的返回消息
     * @param resultCode
     * @param resultDesc
     * @see
     */
    public void processResult(IntValueHolder resultCode, StringHolder resultDesc)
    {
        this.success = true;
        if (null == resultCode || null == resultCode.value || resultCode.value.getValue() != 0)
        {
            this.success = false;
        }
        this.msg = "&nbsp&nbsp&nbsp&nbsp&nbsp操作失败!&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";//修改返回成功消息时,IE6界面显示不全的问题,modi by zhouchen 2011-07-18
        if (null != resultDesc && !ParamChecking.isBlank(resultDesc.value))
        {
            //修改返回成功消息时,IE6界面显示不全的问题,modi by zhouchen 2011-07-08
            Map<String, String> paramMap = new HashMap<String, String>();
            StringBuffer sBuffer = new StringBuffer();
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append(resultDesc.value);
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            paramMap.put("resultDesc", sBuffer.toString());
            String resultdesc = sBuffer.toString();
            this.msg = resultdesc.replaceAll("\n", "<br/>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");//modi by zhouchen 将回车换行符修改成空格 2011-7-12
        }

    }
   
    /**处理服务端的返回消息
     * @param resultCode
     * @param resultDesc
     * @see
     */
    public void processResultOneNumber(IntValueHolder resultCode, StringHolder resultDesc)
    {
        this.success = true;
        if (null == resultCode || null == resultCode.value || resultCode.value.getValue() != 110000)
        {
            this.success = false;
        }
        this.msg = "&nbsp&nbsp&nbsp&nbsp&nbsp操作失败!&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp";//修改返回成功消息时,IE6界面显示不全的问题,modi by zhouchen 2011-07-18
        if (null != resultDesc && !ParamChecking.isBlank(resultDesc.value))
        {
            //修改返回成功消息时,IE6界面显示不全的问题,modi by zhouchen 2011-07-08
            Map<String, String> paramMap = new HashMap<String, String>();
            StringBuffer sBuffer = new StringBuffer();
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append(resultDesc.value);
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            sBuffer.append("&nbsp");
            paramMap.put("resultDesc", sBuffer.toString());
            String resultdesc = sBuffer.toString();
            this.msg = resultdesc.replaceAll("\n", "<br/>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");//modi by zhouchen 将回车换行符修改成空格 2011-7-12
        }

    }

    /**
     * 获取工程的绝对路径
     * @return String "http://ip:port/CMServer/"
     * @see
     */
    public String getUrl()
    {
        String http = getRequest().getScheme();
        String ip = getRequest().getLocalAddr();
        String contextPath = getRequest().getContextPath();
        int port = getRequest().getServerPort();

        StringBuffer urlStr = new StringBuffer();
        urlStr.append(http).append("://").append(ip).append(":").append(port).append(contextPath)
            .append("/");//File.separator

        return urlStr.toString();
    }

    /**
     * @return Returns the success.
     */
    public boolean isSuccess()
    {
        return success;
    }

    /**
     * @param success The success to set.
     */
    public void setSuccess(boolean success)
    {
        this.success = success;
    }

    /**
     * @return Returns the msg.
     */
    public String getMsg()
    {
        return msg;
    }

    /**
     * @param msg The msg to set.
     */
    public void setMsg(String msg)
    {
        this.msg = msg;
    }
   
    public static void main(String[] args)
    {
        BaseAction base=new BaseAction();
        TreeConfig config=new TreeConfig();
        config.init();
        Tree tree = TreeConfig.getTreeMap().get("root");
        StringBuffer jsonBuffer = base.getJsonString("root", tree, null);
       
        System.out.println(jsonBuffer);
    }

}
===========================================================
public String init()
    {
        //如果没有登录,返回登录页面
        Object userKey = super.getSession().getAttribute(LoginContext.USERKEY);
        if (null == userKey)
        {
            return ERROR;
        }
        Tree tree = TreeConfig.getTreeMap().get("root");
        StringBuffer jsonBuffer = super.getJsonString("root", tree, null);
        super.getRequest().setAttribute("treeRoot", jsonBuffer.toString());
        return SUCCESS;
    }
==================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="team" extends="json-default">

<action name="addTeam" method="addTeam"
class="TeamServiceAction">
<result type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">success,msg</param>
</result>
</action>

<action name="deleteTeam" method="deleteTeam"
class="TeamServiceAction">
<result type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">success,msg</param>
</result>
</action>

<action name="modifyTeam" method="modifyTeam"
class="TeamServiceAction">
<result type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">success,msg</param>
</result>
</action>

<action name="checkTeam" method="checkTeam"
class="TeamServiceAction">
<result type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">
success,msg,groupID,groupNumber,serviceTeamsResp.*
</param>
</result>
</action>

<action name="addTeamMember" method="addTeamMember"
class="TeamServiceAction">
<result type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">success,msg</param>
</result>
</action>

<action name="deleteTeamMember" method="deleteTeamMember"
class="TeamServiceAction">
<result type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">success,msg</param>
</result>
</action>

<action name="checkTeamMember" method="checkTeamMember"
class="TeamServiceAction">
<result type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">
success,msg,groupNumber,teamId,leftDisabled,rightDisabled,teamUsersResp.*
</param>
</result>
</action>
</package>
</struts>

分享到:
评论

相关推荐

    JSON与struts2配套的架包

    JSON(JavaScript ...综上所述,JSON与Struts2的集成使得服务器端可以轻松地将数据以JSON格式发送到客户端,简化了Web应用的开发流程,提高了数据交互的效率。通过正确配置和使用,可以构建出高效、灵活的Web服务。

    json+struts2的jar

    1. **JSON与Struts2的集成**:Struts2提供了与JSON的集成支持,允许开发者通过配置Action类返回JSON格式的数据。这在实现AJAX(Asynchronous JavaScript and XML)请求时非常有用,可以实现页面的无刷新更新。 2. *...

    json_struts2.rar_JSON java_SSH json Struts2_java json_json_strut

    在这个实例中,SSH2与jQuery结合,实现了基于Ajax的JSON数据通信。 jQuery是一个流行的JavaScript库,它简化了DOM操作、事件处理以及AJAX交互。在JSON与Struts2的结合中,jQuery可以发送异步请求到服务器,以JSON...

    jquery ajax json struts2最简单例子测试成功

    2. **JSON与Struts2的结合**:Struts2 Action执行后返回一个JSON字符串,这个字符串被jQuery AJAX请求接收。通过Struts2的插件,如struts2-json-plugin,可以在Action类中直接返回一个包含JSON数据的对象,Struts2会...

    struts2+json

    这个资源"struts2+json"显然涉及到在Struts2框架下实现JSON(JavaScript Object Notation)数据交换,这是一种轻量级的数据交换格式,广泛用于前后端交互,特别是AJAX(Asynchronous JavaScript and XML)请求。...

    JSON+Struts2事例

    ### JSON与Struts2集成应用详解 #### 一、引言 随着Web技术的发展,越来越多的应用需要前后端分离,这使得JSON(JavaScript Object Notation)成为了一种非常流行的数据交换格式。Struts2作为Java Web开发中的一款...

    Json JQuery Struts2

    2. JSON与Struts2:Struts2提供了JSON结果类型,允许控制器直接返回JSON格式的数据。开发者可以在Action类中设置响应结果为JSON,然后通过OGNL将模型数据转换成JSON字符串,发送给前端的JQuery处理。 3. JQuery与...

    json+struts2+spring体育课选课系统

    《基于JSON、Struts2与Spring的体育课选课系统详解》 在现代教育信息化进程中,体育课选课系统的建设显得尤为重要。本文将深入探讨一个采用"json+struts2+spring"技术栈构建的体育课选课系统,以及如何结合easy_ui...

    json+struts2整合jar包

    标题中的"json+struts2整合jar包"指的是将JSON功能集成到Struts2框架中,以便在服务器端与客户端之间进行数据交互。Struts2提供了一个插件——Struts2-JSON-Plugin,用于支持JSON序列化和反序列化,使得Action类可以...

    struts2与json整合

    在探讨“Struts2与JSON整合”的主题时,我们深入分析了如何在Struts2框架中集成JSON技术,实现前后端数据的高效交互。Struts2作为一款流行的Java Web开发框架,提供了丰富的功能来简化Web应用程序的开发过程。而JSON...

    struts2返回JSON数据的两种方式

    在本文中,我们将探讨两种在Struts2框架中返回JSON数据的方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端交互,尤其是在AJAX请求中。Struts2提供了一套方便的机制来支持JSON...

    Struts2+Json+Android简单实现

    Struts2、JSON和Android是三个在Web应用开发中至关重要的技术。本示例将详细介绍如何结合这三者实现一个简单的交互。 首先,Struts2是一个基于MVC(Model-View-Controller)架构的Java Web框架,它简化了创建动态、...

    struts2 json

    Struts2 JSON是一个在Java开发中广泛使用的框架,它允许开发者在Struts2应用程序中方便地处理JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    AJAX和struts2传递JSON数组

    这告诉Struts2框架当收到名为`struts2Action`的请求时,使用`Struts2Action`类,并返回JSON格式的结果。如果需要在Action执行后返回一个页面,可以将`result`元素的类型改为`dispatcher`。 总结来说,通过这种方式...

    Json Struts2整合所有jar包

    为了让大家更快的将Json与Struts2进行整合,收集了整合所需的所有jar包,直接可以下载使用。

    整合jquery+json+struts2异步提交实例

    在这个实例中,“整合jquery+json+struts2异步提交”是一个典型的前端与后端交互的示例,利用了jQuery的Ajax功能和Struts2框架处理JSON数据。下面我们将详细探讨这些技术及其相互配合的工作原理。 **jQuery** 是一...

    struts2-json-plugin

    struts2-json-plugin,Struts JSON插件

    json2+jsonplugin struts2整合ajax时,使用json时需要的jar包

    在Struts2与Ajax的交互中,后端返回的JSON数据需要在前端被`json2.js`解析成可操作的对象,这样才能在页面上动态更新内容。 接下来,我们讨论Struts2的`jsonplugin`。Struts2 JSON插件是官方提供的一个扩展,它使...

    Struts2与JSON

    将Struts2与JSON整合,可以实现高效、动态的Web交互。 首先,我们要理解Struts2整合JSON的基本流程。在Struts2中,我们可以通过Action类返回一个JSON结果类型,这样Struts2会自动将Action的属性转化为JSON格式并...

    json struts2转换

    而`struts2-json-plugin-2.1.8.jar`则是Struts2的JSON插件,它提供了对JSON的支持,允许我们在Struts2应用中轻松地生成和消费JSON数据。 1. **配置JSON支持**:要在Struts2中启用JSON响应,首先需要在`struts.xml`...

Global site tag (gtag.js) - Google Analytics