`

XUtil

 
阅读更多
package util;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.servlet.ServletContext;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSON;
import com.caucho.hessian.client.HessianProxyFactory;

public class XUtil
{
    static Logger log = Logger.getLogger(XUtil.class);
    static Properties prop = new Properties();
    static
    {
        try
        {
            InputStream is = XUtil.class.getClassLoader().getResourceAsStream("services.properties");
            prop.load(is);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    public static Object call(String sid, Object... params)
    {
        HessianProxyFactory factory = new MyHessianProxyFactory();
        Object result = null;
        try
        {
            factory.setHessian2Reply(true);
            factory.setChunkedPost(false);
            Call caller = (Call) factory.create(Call.class, prop.getProperty("url"));
            result = caller.call(sid, params);
        }
        catch (Exception e)
        {
            log.debug(e.getCause().getMessage());
        }
        return result;
    }

    public static Object call2(String sid, Object... args)
    {
        String url = "http://localhost:8080/ss/handler";
        String result = null;
        ThreadSafeClientConnManager threadSafeClientConnManager = new ThreadSafeClientConnManager();
        HttpClient client = new DefaultHttpClient(threadSafeClientConnManager);
        client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);
        client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
        try
        {
            HttpPost post = new HttpPost(url);
            post.addHeader("api", sid);
            post.addHeader("username", ((Map<String, Object>) getUser()).get("username").toString());
            System.out.println(JSON.toJSONString(args));
            StringEntity s = new StringEntity(JSON.toJSONString(args), "UTF-8");
            s.setContentType("application/json");
            post.setEntity(s);

            HttpResponse res = client.execute(post);
            HttpEntity entity = res.getEntity();
            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
            {
                result = EntityUtils.toString(entity);
            }
            if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND)
            {
                throw new RuntimeException("请求未发现");
            }
            if (res.getStatusLine().getStatusCode() == 9999)
            {
                String kk = EntityUtils.toString(entity);
                throw new RuntimeException(kk);
            }
        }
        catch (Exception e)
        {
            throw new RuntimeException(e.getMessage());
        }
        finally
        {
            client.getConnectionManager().shutdown();
        }
        return result;
    }

    public static void calljson(String sid, Object... args)
    {
        toJSON(call(sid, args));
    }

    public static void call2json(String sid, Object... args)
    {
        toJSON(call2(sid, args));
    }

    public static void toJSON(Object obj)
    {
        RequestContext.getResponse().setContentType("text/javascript;charset=UTF-8");
        try
        {
            RequestContext.getResponse().getWriter().print(JSON.toJSONString(obj));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public static Map<String, Object> getParameterMap()
    {
        Map<String, Object> map = new HashMap<String, Object>();
        Enumeration<?> em = RequestContext.getRequest().getParameterNames();
        while (em.hasMoreElements())
        {
            String k = (String) em.nextElement();
            String v = RequestContext.getRequest().getParameter(k);
            map.put(k, v);
        }
        return map;
    }

    public static String getParameter(String name)
    {
        return RequestContext.getRequest().getParameter(name);
    }

    public static Object getUser()
    {
        return RequestContext.getSession().getAttribute("user");
    }

    public static String getIP()
    {
        return RequestContext.getRequest().getRemoteAddr();
    }

    @SuppressWarnings("unchecked")
    public static List<Map<String, Object>> toList(String str)
    {
        List<Map<String, Object>> data = null;
        try
        {
            data = (List<Map<String, Object>>) JSON.parseObject(str, List.class);
        }
        catch (Exception e)
        {
            throw new RuntimeException(e.getMessage(), e.getCause());
        }
        return data;
    }

    public static void ok()
    {
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("success", true);
        result.put("msg", null);
        toJSON(result);
    }

    public static void ok(String msg, Object... args)
    {
        // ResourceBundle rb = ResourceBundle.getBundle("resource", Locale.getDefault(), RequestContext.class
        // .getClassLoader());
        // String msg = rb.getString(code);
        // msg = (msg != null) ? MessageFormat.format(msg, args) : code;
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("success", true);
        result.put("msg", msg);
        try
        {
            RequestContext.getResponse().getWriter().write(JSON.toJSONString(result));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public static void error(String msg, Object... args)
    {
        // ResourceBundle rb = ResourceBundle.getBundle("resource", Locale.getDefault(), RequestContext.class
        // .getClassLoader());
        // String msg = rb.getString(code);
        // msg = (msg != null) ? MessageFormat.format(msg, args) : code;
        Map<String, Object> result = new HashMap<String, Object>();
        result.put("success", false);
        result.put("msg", msg);
        try
        {
            RequestContext.getResponse().getWriter().write(JSON.toJSONString(result));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public static void attr(String key, Object value, String scope)
    {
        if ("application".equals(scope))
        {
            RequestContext.getServletContext().setAttribute(key, value);
        }
        else if ("session".equals(scope))
        {
            RequestContext.getSession().setAttribute(key, value);
        }
        else
        {
            RequestContext.getRequest().setAttribute(key, value);
        }
    }

    public static Object attr(String key, String scope)
    {
        if ("application".equals(scope))
        {
            return RequestContext.getServletContext().getAttribute(key);
        }
        else if ("session".equals(scope))
        {
            return RequestContext.getSession().getAttribute(key);
        }
        else
        {
            return RequestContext.getRequest().getAttribute(key);
        }
    }

    public static void redirect(String url)
    {
        RequestContext.redirect(url);
    }

    public static void forward(String url)
    {
        RequestContext.forward(url);
    }

    public static void invalidate()
    {
        RequestContext.invalidate();
    }

    public static OutputStream getOutputStream()
    {
        try
        {
            return RequestContext.getResponse().getOutputStream();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return null;
    }
    
    public static ServletContext getServletContext(){
        return RequestContext.getServletContext();
    }
}

interface Call
{
    public Object call(String sid, Object... args);
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    XUtil下载downloaddemo.zip

    《XUtil下载库实战指南——环形进度条下载体验》 在现代的移动应用开发中,文件下载功能是不可或缺的一部分,而XUtil下载库提供了一种高效、便捷的方式来实现这一功能。本文将深入探讨如何使用XUtil进行文件下载,...

    fragment切换卡+xutil的加载网络图片

    在Android开发中,Fragment是应用界面中不可或缺的一部分,它允许我们构建模块化的用户界面,而XUtil则是一个功能丰富的开源库,特别适用于处理图片的加载、缓存等任务。本篇将深入探讨Fragment切换时可能出现的卡顿...

    Android xUtil

    **Android xUtil 框架详解** Android xUtil是一个针对Android平台开发的工具库,它为开发者提供了便捷的网络请求和文件下载功能。这个框架旨在简化Android应用中的常见任务,提高开发效率,让开发者能够更专注于...

    上传XUtil文档

    XUtil是一款广泛应用于Android开发中的轻量级框架,它的出现是为了全面替代原有的afinal框架。XUtil由知名Android开发者xueying创建,旨在提供一套高效、便捷的Android开发工具集,帮助开发者快速、稳定地进行应用...

    安卓日志分析崩溃拦截相关-提取xutil的logutil轻量高效.rar

    本资源"安卓日志分析崩溃拦截相关-提取xutil的logutil轻量高效.rar"似乎提供了一种轻量级且高效的日志工具——xutil的logutil,它可能包含了用于日志记录、分析以及异常处理的代码。 首先,我们来详细了解一下日志...

    xutil 安卓框架 教程

    【xutil安卓框架教程】 xutil是一个专门为Android开发者设计的框架,它旨在简化常见的开发任务,提高开发效率。本教程将深入探讨xutil的核心特性,包括自动findviewByid、自动事件处理、文件的自动下载与上传以及...

    提取xutil的logutil轻量高效

    "提取xutil的logutil轻量高效"这一标题表明,我们关注的是一个名为"xutil"的工具库中关于日志处理的部分,即"logutil"。这个工具类提供了轻量级且高效的日志打印功能,使得开发者可以在不增加过多性能负担的情况下,...

    mina,XUtil,sliding多个框架demo

    标题中的"mina, XUtil, sliding多个框架demo"提到了三个关键的开发框架:Mina、XUtil和滑动菜单(通常指的是SlidingMenu库)。这些框架在Android应用开发中有着重要的作用,下面将分别详细介绍这三个框架以及它们的...

    xutil教程 安卓 android框架使用教程

    自动findviwByid 自动事件 自动下载图片,自动缓存,自动上传文件 非常的好 这个是教程

    XUtil开源库

    【XUtil开源库】是一个在Git平台上活跃的开源项目,其主要目的是为了简化Android开发者在实际开发中的工作,特别是针对图像处理和网络请求这两部分。这个库提供了高效、易用的API,使得开发者能够更专注于业务逻辑,...

    开源类 Xutil

    **Xutil 开源库详解** Xutil 是一个广泛使用的开源工具库,主要针对 Android 平台,由国内开发者精心打造。这个库集成了多种实用功能,旨在简化 Android 应用程序的开发工作,提高开发效率。Xutil 的设计目标是模块...

    基于XUI、XUtil、XAOP等框架的TemplateAppProject设计源码

    该TemplateAppProject是一个基于XUI、XUtil、XAOP等框架构建的Android模版空壳工程,包含172个文件,涵盖68个Java源文件、64个XML配置文件、17个PNG图片文件、6个Gradle脚本文件、2个YAML配置文件、2个Git忽略文件、...

    XUtil开源框架

    Xutil框架源码最新版本 xUtils 包含了很多实用的android工具。 xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(7种谓词),拥有更加灵活的ORM,更多的事件注解...

    xUtil3.0 + SQLCipher3.4.0

    基于Android Studio 1.5,在xUtils3.0官方Demo的基础上集成SQLCipher3.4.0,对数据库加密操作。 xUtils3.0 gitHub地址: https://github.com/DongDongZ/XUtils3.0 SQLCipher3.4.0 github地址:...

    imagecycleview:自定义图片自动轮播控件,自定轮播指示器样式,支持点击,无限轮播,网络下载图片。 可是使用XUtil的BitmapUtils也可是使用smart-image-view加载图片,支持轮播文字切换.此插件是基于viewpager实现的,需要导入android-support-v4.jar

    自定义图片自动轮播控件,自定轮播指示器样式,支持点击,无限轮播,网络下载图片可是使用XUtil的BitmapUtils也可是使用smart-image-view加载图片,支持轮播文字切换此插件是基于viewpager实现的,需要导入android-...

    Httpdemo.zip

    在IT行业中,网络通信是应用程序之间交互的重要方式,而...此外,了解Xutil库的其他功能,如数据解析、网络状态检测等,也能增强你在实际项目中的应用能力。最后,别忘了实际运行并调试代码,通过实践来巩固理论知识。

    XUtil:Android的通用util lib

    XUtil Android的通用util lib 通用类实用程序 ClickUtil:多次点击事件 活动管理器 FileUtil HideSoftInputUtil 首选项实用程序 传感器控制器 StringUtil 系统实用程序 TextViewUtil StatusBarUtil ...

    各种框架学习

    本资源主要关注的是Android平台上的框架学习,包括OkHttp、Volley和XUtil。这些框架分别在网络请求、数据加载和UI处理方面有着独特的优势,对于Android开发者来说,理解和掌握它们能够提升开发效率并改善应用性能。 ...

    基于Java的Android简化版空壳模板设计源码

    该项目提供一款基于Java的Android简化版空壳模板源码,包含57个文件,涵盖14个XML布局文件、14...该模板集成了XUI、XUtil、XAOP、XPage等常用库,并支持友盟统计和Walle多渠道打包功能,旨在快速搭建Android应用项目。

    listview的图像加载

    针对这些问题,我们可以采用缓存机制和第三方库如xutil来优化图片加载,提升用户体验。 首先,我们要理解ListView的复用机制。当ListView滚动时,为了提高性能,已经滑出屏幕的item会被重新利用来显示新的内容。...

Global site tag (gtag.js) - Google Analytics