package com.ivchat.common.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.apache.log4j.Logger;

/**
* @author 居里智能 2014-08-14
* @version 1.0.0 Servlet工具类
*/

public class ServletUtil {
private static Logger logger = Logger.getLogger(ServletUtil.class);
/**
* 直接发送消息对象
*
* @param rsp
* @param msgOut
* 待发送的消息对象
*/
public static void send(HttpServletResponse rsp, String msgOut) {
logger.info("-----回应客户端---"+msgOut);
//System.out.println(msgOut);
rsp.setCharacterEncoding("UTF-8");
rsp.setContentType("text/html;charset=UTF-8");
OutputStreamWriter ow = null;
ServletOutputStream servletOut = null;
try {
servletOut = rsp.getOutputStream();
ow = new OutputStreamWriter(servletOut, "UTF-8");
ow.write(msgOut);
} catch (IOException e) {
logger.error("向手机客户端发送信息异常:{}"+ e.toString(),e);
} finally {
try {
if (ow != null) {
ow.close();
}
if (servletOut != null) {
servletOut.close();
}

} catch (IOException e) {
logger.error("向手机客户端发送信息后,释放资源异常:{}"+e.toString(),e);
}
}
}
public static String getRequestContent(HttpServletRequest request,boolean statu) {
/*return (String) request.getAttribute("param");*/
logger.info("-----接收到客户端信息-----" + request.getRemoteHost());
logger.info("-----接收到客户端url-----" + request.getRequestURI());

InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
String retString = null;
try {
request.setCharacterEncoding("UTF-8");
StringBuffer sb=new StringBuffer();
is=request.getInputStream();
isr=new InputStreamReader(is,"UTF-8");
br=new BufferedReader(isr);
String s="";
while ((s = br.readLine()) != null) {
sb.append(s);
}
//System.out.println(sb.toString());
retString = sb.toString();
logger.info("-----接收到客户端参数-----" + retString);
} catch (Exception e) {
logger.error("读取手机客户端数据异常:{}"+ e.toString(),e);
}
finally{
try {
if (br!=null) {
br.close();
}
if (isr!=null) {
isr.close();
}
if (is!=null) {
is.close();
}
} catch (Exception e2) {
logger.error("接收手机客户端信息后,释放资源异常:{}"+ e2.toString(),e2);
}

}
return retString;
}

public static String getRequestContent(HttpServletRequest request) {
/*return (String) request.getAttribute("param");*/
logger.info("-----接收到客户端信息-----" + request.getRemoteHost());
logger.info("-----接收到客户端url-----" + request.getRequestURI());
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
String retString = null;
try {
request.setCharacterEncoding("UTF-8");
StringBuffer sb=new StringBuffer();
is=request.getInputStream();
isr=new InputStreamReader(is,"UTF-8");
br=new BufferedReader(isr);
String s="";
while ((s = br.readLine()) != null) {
sb.append(s);
}
//System.out.println(sb.toString());
retString = sb.toString();
logger.info("-----接收到客户端参数-----" + retString);
} catch (Exception e) {
logger.error("读取客户端数据异常:{}"+e.toString(),e);
}
finally{
try {
if (br!=null) {
br.close();
}
if (isr!=null) {
isr.close();
}
if (is!=null) {
is.close();
}
} catch (Exception e2) {
logger.error("接收客户端信息后,释放资源异常:{}"+ e2.toString(),e2);
}

}
return retString;
}

public static String processInput(InputStream input){
byte[] response = null;
ByteArrayOutputStream byteArrayOutput = null;
String res = null;
try{
if (input != null) {
byteArrayOutput = new ByteArrayOutputStream();
byte[] temp = new byte[1024];
int len = 0;
while ((len = input.read(temp)) > 0) {
byteArrayOutput.write(temp, 0, len);
}
input = null;
response = byteArrayOutput.toByteArray();
}
res = new String(response, "UTF-8").trim();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (byteArrayOutput != null) {
byteArrayOutput.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return res;
}

/**
* 发送JSON消息
*
* @param rsp
* @param msgOut
* @author 居里智能
*/
public static String send(HttpServletResponse rsp, Map<String, Object> jsonMap) {
JSONArray jsonArray = JSONArray.fromObject(jsonMap);
String respString = jsonArray.toString();
rsp.setCharacterEncoding("UTF-8");
rsp.setContentType("text/html;charset=UTF-8");
OutputStreamWriter ow = null;
ServletOutputStream servletOut = null;
try {

servletOut = rsp.getOutputStream();
ow = new OutputStreamWriter(servletOut, "UTF-8");

ow.write(respString);

} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (ow != null) {
ow.close();
}
if (servletOut != null) {
servletOut.close();
}

} catch (IOException e) {
e.printStackTrace();

}
}
return respString;
}

/**
* @affect 在一组cookies里面,通过name取value
* @param cookies
* @param cookieName
* @return String
* @exception 无
*/
public static String getCookieValue(Cookie[] cookies, String cookieName) {
if (cookies == null)
return null;
if (cookieName == null)
return null;
String cookieValue = "";
for (int i = 0; i < cookies.length; i++) {
if (cookieName.equals(cookies[i].getName())) {
cookieValue = cookies[i].getValue();
}
}
return cookieValue;

}
public static String getJsonRequestContent(HttpServletRequest request) {
logger.info("-----接收到客户端信息-----" + request.getRemoteHost());
logger.info("-----接收到客户端url-----" + request.getRequestURI());
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
String retString = null;
try {
request.setCharacterEncoding("UTF-8");
StringBuffer sb=new StringBuffer();
is=request.getInputStream();
isr=new InputStreamReader(is,"UTF-8");
br=new BufferedReader(isr);
String s="";
while ((s = br.readLine()) != null) {
sb.append(s);
}
//System.out.println(sb.toString());
request.setAttribute("param", sb.toString());
retString = sb.toString();
logger.info("-----接收到客户端参数-----" + retString);
} catch (Exception e) {
logger.error("读取手机客户端数据异常:{}"+e.toString(),e);
}
finally{
try {
if (br!=null) {
br.close();
}
if (isr!=null) {
isr.close();
}
if (is!=null) {
is.close();
}
} catch (Exception e2) {
logger.error("接收手机客户端信息后,释放资源异常:{}"+ e2.toString(),e2);

}

}
return retString;
}

/**通过request获取参数转成json
* yehz 2015-3-30
* @param request
* @return
*
*/
public static JSONObject getParamByRequest(HttpServletRequest request){
Map parammap= request.getParameterMap();
JSONObject js = new JSONObject();
if (parammap!=null&&parammap.size()>0){
for (Object key :parammap.keySet()){
if (key instanceof String){
js.put(key,((Object[])parammap.get(key))[0]);
}
}
}
return js;
}

}

TCP 服务端接收数据解析工具类的更多相关文章

  1. Netty服务端接收的新连接是如何绑定到worker线程池的?

    更多技术分享可关注我 前言 原文:Netty服务端接收的新连接是如何绑定到worker线程池的? 前面分析Netty服务端检测新连接的过程提到了NioServerSocketChannel读完新连接后 ...

  2. 读取EXCEL文档解析工具类

    package test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException ...

  3. Java常用工具类---XML工具类、数据验证工具类

    package com.jarvis.base.util; import java.io.File;import java.io.FileWriter;import java.io.IOExcepti ...

  4. PHP 命令行参数解析工具类

    <?php/** * 命令行参数解析工具类 * @author guolinchao * @email luoyecb@163.com */class CommandLine{ // store ...

  5. Request模块—数据解析工具

    一.爬虫基本步骤 指定URL信息 发起请求 获取响应数据 对响应数据进行数据解析 持久化存储 二.数据解析 1. 正则表达式 (1) 基本语法 1. 单字符: . : 除换行以外所有字符 [] :[a ...

  6. Gprinter热敏打印机光栅位图点阵数据解析工具

    最近参与的项目有一个需求,解析佳博热敏打印机的光栅位图点阵数据并保存为图片文件.数据是通过Bus Hound抓取的,如下图所示. 其中1b 40为初始化打印机的指令,对应的ASCII码为ESC @,1 ...

  7. springmvc返回json数据的工具类

    在ssm框架下,MVC向前端返回数据的json工具类代码如下: public class JsonResult<T> { public static final int SUCCESS=0 ...

  8. 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入

    一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...

  9. 安卓使用Socket发送中文,C语言服务端接收乱码问题解决方式

    今天用安卓通过Socket发送数据到电脑上使用C语言写的服务端,发送英文没有问题,可当把数据改变成中文时,服务端接收到的数据确是乱码. 突然想到.VS的预处理使用的是ANSI编码.而安卓网络数据都是U ...

随机推荐

  1. Kafka(二)CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试

    一.下载 下载地址: http://kafka.apache.org/downloads.html    我这里下载的是Scala 2.11对应的 kafka_2.11-1.1.0.tgz 二.kaf ...

  2. Codeforces 700E. Cool Slogans 字符串,SAM,线段树合并,动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF700E.html 题解 首先建个SAM. 一个结论:对于parent树上任意一个点x,以及它所代表的子树内任 ...

  3. [Python]sort与sorted高级技巧

    与其他语言不同,python 3.0之后,弃用了其他语言中常见的cmp方法,在sort方法中改用key实现. 之前一直疑惑自定义对象的排序如何写comparator,最后发现还是通过内部的__cmp_ ...

  4. BZOJ.2780.[SPOJ8093]Sevenk Love Oimaster(广义后缀自动机)

    题目链接 \(Description\) 给定n个模式串,多次询问一个串在多少个模式串中出现过.(字符集为26个小写字母) \(Solution\) 对每个询问串进行匹配最终会达到一个节点,我们需要得 ...

  5. RAID 0 ~ RAID 7

    一.RAID解析1.RAID 0(1)将几块磁盘并行组合,横向写数据(2)并发IO,写数据最快缺点:不提供数据冗余,如果其中一块磁盘废掉,则数据全毁详细:条带深度大时,一次IO只能从一块磁盘上读取,无 ...

  6. HDFS的WEB页面访问常见问题

    HDFS的WEB UI管理页面 50070 端口 无法访问解决办法! 本文基于HADOOP-3..1.0,Cecntos7.0环境下进行测试,所以遇到很多新鲜的问题: 特别注意:HaDoop3.0之前 ...

  7. 剑指offer——python【第23题】二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 首先要清楚,这道题不是让你去判断一个给定 ...

  8. chrome浏览器另存为/上传附件崩溃

    x 前言 系统中有一个需要上传导入的功能,此功能在谷歌浏览器上传总是直接崩溃, 但是在火狐浏览器中就是好的. 自己想到的解决方案 谷歌浏览器版本号得问题?自己系统得问题? 谷歌浏览器卸载重新安装,还是 ...

  9. java_基础_static{}语句块

    static{}语句块会在类被加载的时候当且仅当执行一次,一般用于初始化变量和调用静态方法 Class.forName(“类名”);方法执行时会加载类 外界调用类中静态变量是不会加载类的,也就是说,如 ...

  10. pta编程总结

    币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成“贰万叁仟壹百零捌”元.为了简化输出,用小写英文字母a-j ...