umeditor在weblogic下上传失败的bug修复

2014-11-30 by Jinyang | No Comments | Filed in 技术相关

使用umeditor上传图片时,在tomcat下正常可行的代码在部署到weblogic后报:strict servlet API: cannot call getWriter() after getOutputStream() 的错误 。

修改:imageUp.jsp  如下:

<%@ page language=”java” contentType=”text/html; charset=utf-8″
pageEncoding=”utf-8″%>
<%@ page import=”com.baidu.ueditor.um.Uploader”%>
<%
//System.out.println(“imageUp page begin”);
request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);

String path = request.getContextPath();
String basePath = request.getScheme() + “://”
+ request.getServerName() + “:” + request.getServerPort()
+ path + “/”;
String url = “http://”
+ request.getServerName()
+ “:”
+ request.getServerPort()
+ request.getContextPath()
+ request.getServletPath().substring(0,
request.getServletPath().lastIndexOf(“/”) + 1);

Uploader up = new Uploader(request);
up.setSavePath(“upload”);
String[] fileType = { “.gif”, “.png”, “.jpg”, “.jpeg”, “.bmp” };
up.setAllowFiles(fileType);
up.setMaxSize(100000); //单位KB
up.upload();

String iSize = “100”;
if (null == up.getSize() || up.getSize().equalsIgnoreCase(“”)) {
} else {
iSize = up.getSize();
}

String callback = request.getParameter(“callback”);

String result = “{\”name\”:\”” + up.getFileName()
+ “\”, \”originalName\”: \”” + up.getOriginalName()
+ “\”, \”size\”: ” + iSize + “, \”state\”: \””
+ up.getState() + “\”, \”type\”: \”” + up.getType()
+ “\”, \”url\”: \”” + up.getUrl() + “\”}”;

result = result.replaceAll(“\\\\”, “\\\\”);
//System.out.println(“result:” + result);
if (callback == null) {

} else {
result = “<script>” + callback + “(” + result + “)</script>”;
}

%>
<%=result%>

 

以上的重点在于最后几句的修正:

去掉之前使用response.getWriter() 的使用,即可。

 

Tags:

微信昵称中的特殊字符的过滤

2014-10-16 by Jinyang | No Comments | Filed in 技术相关

/***
* 微信的昵称中特殊字符的过滤
* ***/
public static String wxNickName(String str) {
// TODO Auto-generated method stub
String ret = “”;
try {
byte[] utf8Bytes = str.getBytes(“UTF-8”);

ret = new String(utf8Bytes, “UTF-8”);

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Pattern unicodeOutliers = Pattern.compile(“[^\\x00-\\x7F]”,
Pattern.UNICODE_CASE | Pattern.CANON_EQ
| Pattern.CASE_INSENSITIVE);
Matcher unicodeOutlierMatcher = unicodeOutliers.matcher(ret);

//System.out.println(“Before: ” + ret);
ret = unicodeOutlierMatcher.replaceAll(” “);
//System.out.println(“After: ” + ret);
return ret;
}

Tags:

利用微信客服接口化同步服务为异步服务

2014-10-11 by Jinyang | No Comments | Filed in 技术相关

微信公众平台要求接口API接收消息后在5s内必须发回响应,负责当次的响应就无法发回到客户微信。

对于一些响应慢、需要人工处理回复的场景,可以先直接接收消息而不响应,由单独的响应处理服务逐条处理消息然后使用客服接口给用户下发消息。

客服消息接口要求公众号必须为认证公众号。

微信接口HTTP请求的再次分发

2014-10-11 by Jinyang | No Comments | Filed in 技术相关

不同的业务分布在不同的服务中,但是接入微信公众平台的接口地址只能有一个,所以就需要接入程序接收到请求后,将请求再次转发给需要处理的服务去处理。

1. 获取并保存完整的http请求数据包

直接从 request.getInputStream() 获取数据有一个问题就是因为字节流只允许获取一次,所以第二次想要再获取时会报错,这个是java字节流设计如此,所以就需要用中间变量来进行中转。

try {
InputStream inputStream = request.getInputStream();

ByteArrayOutputStream baos = new ByteArrayOutputStream();  //中间变量
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > -1 ) {
baos.write(buffer, 0, len);
}
baos.flush();

InputStream stream1 = new ByteArrayInputStream(baos.toByteArray());  //供第一次分析提取数据使用
InputStream stream2 = new ByteArrayInputStream(baos.toByteArray());  //供第二次分析提取数据使用

//System.out.println(inputStream.toString());
SAXReader reader = new SAXReader();
Document document = reader.read(stream1);
Element root = document.getRootElement();
List<Element> elementList = root.elements();
for (Element e : elementList)
//遍历xml将数据写入map
{
map.put(e.getName(), e.getText());
System.out.println(e.getName()+”:”+e.getText());
}

StringBuffer out = new StringBuffer();
byte[] b = new byte[4096];
for (int n; (n = stream2.read(b)) != -1;) {
out.append(new String(b, 0, n));
}
String xmlstr= out.toString(); //输入转为字符串
System.out.println(“xmlstr:”+xmlstr);
map.put(“xmlstr”,xmlstr);
inputStream.close();
inputStream = null;
} catch (Exception e) {
e.printStackTrace();
}

2. 转发请求

 

* try { if (1==1) {
* System.out.println(“Begin Repost to ***  with:”+xmlstr); String rsp =
* “”; // 响应 http://***/service.jsp //String fwurl
* = “http://***”; //测试环境
* String fwurl =
* “http://***/service.jsp?signature=”
* +request
* .getParameter(“signature”)+”&timestamp=”+request.getParameter(
* “timestamp”)+”&nonce=”+request.getParameter(“nonce”); try { rsp =
* JsonHttpUtil.appadd(fwurl, xmlstr); // 发送请求
* System.out.println(“rsp:”+rsp); if(null!=rsp&&rsp.length()>10) {
* wxService.respToWx(response, rsp); } } catch (Exception e) {
* e.printStackTrace(); } System.out.println(“End Repost”); }
*
* } catch (Exception e) { e.printStackTrace(); }

 

 

免费1年的亚马逊Windows虚拟主机

2014-10-11 by Jinyang | No Comments | Filed in 站长视点

大名鼎鼎的亚马逊AWS一直是引领着云计算的发展, 但是因为身在天朝,所以只用过linode、阿里云、digitalocean的linux主机,本质的原因是因为windows主机都比较贵,windows对硬件内存的需求也比较高,而vps的内存目前还是个比较贵的资源。

AWS提供免费一年的主机服务,还有windows选项,因为想要开发一个小的WinForm程序需要一个不间断运行的windows机器,于是就申请了一个。

配置如下:

t2.micro (Variable ECUs, 1 vCPUs, 2.5 GHz, Intel Xeon Family, 1 GiB memory, EBS only)

EBS(Elastic Block Store)为亚马逊EC2实例提供持久化存储。

 

1. 安装配置mysql    部署tomcat启动在80端口

因为此前都是用的linux,数据库自然也都是mysql,为了保持代码的一直性,所以虽然自带了sqlserver,但是需要手工把ms sql server的进程服务全部停止,下载安装运行mysql 。

部署tomcat,启动在80端口

2. 配置security group

http80

3. 配置windows防火墙 ,默认的就是aws的防火墙和windows的防火墙,所以2个都要配置,多一些保障

fhq

4. 运行后的状态
aws

 

部署了一个微信服务,解析了一个域名到主机,使用很方便。监控了几天,相当的稳定。

欢迎扫描测试。

万科金色领域微信

万科金色领域微信

CheAnTong.com 车安通

2014-03-02 by Jinyang | No Comments | Filed in Uncategorized

车安通:车载定位设备,基于GPS获取位置信息,利用GPRS上传位置信息到云服务中心。

为您的爱车增加一份安全保障。

三拼米:YunWuTong.com 云物通

2014-02-23 by Jinyang | No Comments | Filed in 站长视点

已经逐渐远离域名抢注了,有一年多没有入手过双拼域名。最近入手的也都是三拼。本质原因还是我想控制成本,基本大于500的就不考虑。而现在顺口的正常双拼几乎已经看不到低于500人民币的了。说到底不是专业米农,不以倒卖为目的,没有精力做站,自然也没时间入米。

YunWuTong.com 云物通,是想给家里的路由器做一个远程访问的子域名服务,路由器本身支持类花生壳的动态域名解析。查了下历史,是做物流运输配货的一个网站。物流B2B信息适合政府或大公司建设平台。

现在能接受的就是100多软妹币抢注域名了。

移动互联网、车、家居、育儿、云服务,现在因为天天接触的是这样,不自觉的就关注在这些领域。希望2014能从这些领域有所收获。

 

 

 

高大上 gaodashang.com

2013-11-08 by Jinyang | 1 Comment | Filed in Uncategorized

天天在微博上看到大家说 高大上  高大上

于是手一抖就注册了下  gaodashang.com

美联邦 meilianbang.com

2013-11-08 by Jinyang | No Comments | Filed in 域名

时尚购物社区:发现潮流精品  分享网购乐趣

美联邦   meilianbang.com

[转]开只允许用来代理上网的SSH账号的方法

2013-11-08 by Jinyang | No Comments | Filed in Uncategorized

这个方法的副作用就是只有root才能使用sftp!

创建用户组,创建用户,设置密码:

groupadd SSHTunnel
useradd -g SSHTunnel -s /bin/bash -d /home/tunnel TunnelUser1
passwd TunnelUser1

设置sftp权限:

chmod 700 /usr/lib/openssh/sftp-server

在/etc/ssh/sshd_config内添加:

Match Group SSHTunnel
AllowTcpForwarding yes
ForceCommand sh /home/tunnel/tunnelshell.sh

下载设置登陆脚本:

wget https://chencp.info/tunnelshell.sh --no-check-certificate - O /home/tunnel/tunnelshell.sh
ln -s  /home/tunnel/tunnelshell.sh  /home/tunnel/.profile

最后重启sshd:

/etc/init.d/ssh restart

这样就可以了,同时用户登陆后还支持passwd命令修改密码。

再添加用户则:

useradd -g SSHTunnel -s /bin/bash -d /home/tunnel &lt;用户名&gt;
passwd &lt;用户名&gt;
返回顶部