z016松滋一周天气预报高考文理科最高分请百度一下姓名学校

/ z016StuInfo
项目语言:None
权限:read-only(如需更高权限请先加入项目)
z016StuInfo/
Index: stu/common/Constant.java
===================================================================
--- stu/common/Constant.java (revision 0)
+++ stu/common/Constant.java (revision 3)
@@ -0,0 +1,77 @@
+import com.stu.util.PropsH
+import com.stu.util.S
* @ClassName: Constant
* @author zhaotisheng
* @date 日 下午3:06:57
* Copyright (c) 2016,
All Rights Reserved.
+public class Constant {
+ public static Integer pageSize=10;
+ //页面左侧激活div标志 配合枚举类DivActive
+ public static final String DIV_ACTIVE = &active&;
+ public static final String LOGIN_USER_TYPE=&userType&;
+ public static final String IMAGE_RESET_PATH = &/static/img/&;
+ public static final String LOGIN_USER_MOBILE=&LOGIN_USER_MOBILE&;
+ public static final String LOGIN_USER_ID=&LOGIN_USER_ID&;
+ public static final String LOGIN_USER_ENTITY=&LOGIN_USER_ENTITY&;
+ public static final String LOGIN_COMPANYINFO_ID=&LOGIN_COMPANYINFO_ID&;
+ public static final String LOGIN_COMPANYINFO_ENTITY=&LOGIN_COMPANYINFO_ENTITY&;
+ public static final String USER_NAME=&USER_NAME&;
+ public static final String LOGIN_USER_ID4SYS=&LOGIN_USER_ID4SYS&;
+ //UserInfo 兼职用户表主键
+ public static final String LOGIN_PERSON_ID=&LOGIN_PERSON_ID&;
+ //verifyCode 图像码
+ public static final String VERIFY_CODE=&VERIFY_CODE&;
+ //短信码
+ public static final String SMSCODE_KEY=&SMSCODE_KEY&;
+ // 当前城市
+ public static final String NOW_CITY=&NOW_CITY&;
+ // 缓存存储
+ // 市级、区县级
+ public static final String CITY_MAP = &CITY_MAP&;// 市级
+ public static final String AREA_MAP = &AREA_MAP&;// 区县级
+ // 银行列表
+ public static final String BANK_LIST = &BANK_LIST&;// 银行列表
+ // 卡bin
+ public static final String CARD_BIN = &CARD_BIN&;
+ public static
String REPOSITORY_IMG = &&;
REPOSITORY_IMG = Constant.class.getClassLoader().getResource(&/&).getFile().replace(&/WEB-INF/classes/&, IMAGE_RESET_PATH);
+// 0 表示都是模拟的,
1表示都是真实的
+ public static
String DEV_SWITCH = Stringer.nullToEmpty(PropsHandler.getProperty(&dev.switch&));
+ //项目路径
+ public static final String PROJECT_CONTEXT=Stringer.nullToEmpty(PropsHandler.getProperty(&project.context&));//异步通知地址
+ //webyurl cashier异步通知地址
+ public static final String CASHIER_WEBYURL=PROJECT_CONTEXT+Stringer.nullToEmpty(PropsHandler.getProperty(&cashier.webyurl.url&));//异步通知地址
+ //##########################################
+ public static final String CASHIER_URL_ROOT = Stringer.nullToEmpty(PropsHandler.getProperty(&cashier.url.root&));
+ public static final String RECHARGE_URL = CASHIER_URL_ROOT+Stringer.nullToEmpty(PropsHandler.getProperty(&recharge.url&));
+ public static final String
SEND_SMS_URL
=Stringer.nullToEmpty(PropsHandler.getProperty(&send.sms.url&));//异步通知地址
+ public static final String CASH_MERID =
Stringer.nullToEmpty(PropsHandler.getProperty(&cash.merId&));
+ public static final String CASH_URL = Stringer.nullToEmpty(PropsHandler.getProperty(&cash.url&));
+ public static final String CASH_QUERY_URL = Stringer.nullToEmpty(PropsHandler.getProperty(&cash.query.url&));
+// public static final String IMAGE_SERVER_URL=Stringer.nullToEmpty(PropsHandler.getProperty4Util(&image_server_url&));
+// public static final String IMAGE_SERVER_URL_LOAD=Stringer.nullToEmpty(PropsHandler.getProperty4Util(&image_server_url_load&));
Index: stu/common/ResponseEntity.java
===================================================================
--- stu/common/ResponseEntity.java (revision 0)
+++ stu/common/ResponseEntity.java (revision 3)
@@ -0,0 +1,106 @@
+import com.stu.util.JsonU
* @ClassName: ResponseEntity
* @Description: TODO
* @author zhaotisheng
* @date 日 上午11:12:09
* Copyright (c) 2016,
All Rights Reserved.
+public class ResponseEntity {
+ pri // 是否成功
+ private S // 错误内容
+ private S // 错误代码
+ private O // 数据对象
+ public ResponseEntity(){
* @desc 构造函数.
* @param success
* @param data
* @param errcode
* @param errmsg
+ public ResponseEntity(boolean success, Object data, String errcode, String errmsg) {
this.success =
this.data =
this.errcode =
this.errmsg =
* @desc 构造函数.
* @param errcode
* @param errmsg
+ public ResponseEntity(String errcode, String errmsg) {
this.success =
this.data =
this.errcode =
this.errmsg =
* @desc 构造函数.
* @param data
+ public ResponseEntity(Object data) {
this.success =
this.data =
* @desc 将ResponseEntity转换成json格式对象.
+ public Object toJson(){
return JsonUtil.toJson(this);
+ public boolean isSuccess() {
+ public void setSuccess(boolean success) {
this.success =
+ public String getErrmsg() {
+ public void setErrmsg(String errmsg) {
this.errmsg =
+ public String getErrcode() {
+ public void setErrcode(String errcode) {
this.errcode =
+ public Object getData() {
+ public void setData(Object data) {
this.data =
Index: stu/common/anno/MyBatisRepository.java
===================================================================
--- stu/common/anno/MyBatisRepository.java (revision 0)
+++ stu/common/anno/MyBatisRepository.java (revision 3)
@@ -0,0 +1,11 @@
+package mon.
+import java.lang.annotation.ElementT
+import java.lang.annotation.R
+import java.lang.annotation.RetentionP
+import java.lang.annotation.T
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface MyBatisRepository {
Index: stu/common/BaseController.java
===================================================================
--- stu/common/BaseController.java (revision 0)
+++ stu/common/BaseController.java (revision 3)
@@ -0,0 +1,265 @@
+import java.math.BigD
+import java.util.E
+import javax.servlet.http.HttpServletR
+import org.slf4j.L
+import org.slf4j.LoggerF
+import org.springframework.ui.ModelM
+import org.springframework.web.servlet.mvc.support.RedirectA
+import com.stu.framework.exception.NoLogin4SysE
+import com.stu.framework.exception.NoLoginE
+import com.stu.sys.auth.entities.U
+import com.stu.util.BigDecimalU
+import com.stu.util.JsonU
+import com.stu.util.S
* @ClassName: BaseController
* @author zhaotisheng
* @date 日 上午9:45:27
* Copyright (c) 2016,
All Rights Reserved.
+public class BaseController {
+ private Logger logs = LoggerFactory.getLogger(BaseController.class);
+ protected Object error(String errorCode, String errorMessage){
return new ResponseEntity(errorCode, errorMessage).toJson();
+ protected Object error(String errorMessage){
return new ResponseEntity(null, errorMessage).toJson();
+ protected Object success(Object data){
return new ResponseEntity(data).toJson();
+ protected boolean isNullOrEmpty(Object obj) {
return Stringer.isNullOrEmpty(obj);
* @author by
Apr 13, 2015
* @desc 获取webapp完整URL. e.g /app/a/b/c?a=b&c=d...
* @param request
+ protected final String getRequestURL(HttpServletRequest request) {
if (request == null) {
return &&;
String url = &&;
url = &http://& + request.getServerName() // 服务器地址
// + request.getServerPort() //端口号
+ request.getContextPath() // 项目名称
+ request.getServletPath(); // 请求页面或其他地址
Enumeration&?& names = request.getParameterNames();
int i = 0;
String queryString = request.getQueryString();
if (null != queryString && !&&.equals(queryString) && (!queryString.equals(&null&))) {
url = url + &?& + request.getQueryString();
if (names != null) {
while (names.hasMoreElements()) {
if (i == 0) {
url = url + &?&;
String name = (String) names.nextElement();
if (url.indexOf(name) & 0) {
url = url + &&&;
String value = request.getParameter(name);
if (value == null) {
value = &&;
url = url + name + &=& +
// java.net.URLEncoder.encode(url, &ISO-8859&);
// String enUrl = java.net.URLEncoder.encode(url, &utf-8&);
} catch (Exception ex) {
ex.printStackTrace();
* 非空验证
* @param obj
+// public boolean verifyParam(Object obj){
if(obj instanceof String){
String str = (String)
if(null != str && !&&.equals(str.trim())){
} else if(obj instanceof BigDecimal){
if(null != obj && !&&.equals(obj)){
BigDecimal b = (BigDecimal)
if(BigDecimalUtil.BigDecimalGreaterThanAndEqual(b, new BigDecimal(0))){
if(null != obj && !&&.equals(obj)){
* BigDecimal空值填充保留两位小数(四舍五入)
* @param obj
+ public BigDecimal BigDecimalNotNull_UP(BigDecimal b){
return b == null ? new BigDecimal(0) : b.setScale(2, BigDecimal.ROUND_HALF_UP);
* BigDecimal空值填充
* @param obj
+ public BigDecimal BigDecimalNotNull(BigDecimal b){
return b == null ? new BigDecimal(0) :
* String空值填充
* @param obj
+ public String StringNotNull(String str){
return str == null ? && :
* 长度判定
* @param str
* @param length 规定长度
+ public String lengthCheck(String str, int length){
if(str.length() & length){
return &金额长度超限&;
* 固定长度判定
* @param str
+ public String lengthCheck(String str){
return lengthCheck(str, 13);
+ public void checkLoginStatus(HttpServletRequest request) throws NoLoginException {
Object attribute = request.getSession().getAttribute(Constant.LOGIN_USER_MOBILE);
if(Stringer.isNullOrEmpty(attribute)){
logs.debug(&###&&&&没有登陆&);
throw new NoLoginException();
+ public void checkLoginStatus4Sys(HttpServletRequest request) throws NoLogin4SysException {
Object attribute = request.getSession().getAttribute(Constant.LOGIN_USER_ID4SYS);
if(Stringer.isNullOrEmpty(attribute)){
logs.debug(&###&&&&没有登陆(后台)&);
throw new NoLogin4SysException();
+ public void setLoginStatus(HttpServletRequest request, Users users_db) {
request.getSession().setAttribute(Constant.LOGIN_USER_ID4SYS, JsonUtil.toJson(users_db));
+ //前台 公司和个人的userid
+ public String getLoginUserId(HttpServletRequest request) {
return getAttr(request,Constant.LOGIN_USER_ID);
+ //后台系统的userId
+ public String getLoginUserId4Sys(HttpServletRequest request) {
return getAttr(request,Constant.LOGIN_USER_ID4SYS);
+// public String getLoginUserType(HttpServletRequest request) {
return getAttr(request,Constant.LOGIN_USER_TYPE);
+// public String getLoginUserMobile(HttpServletRequest request) {
return getAttr(request,Constant.LOGIN_USER_MOBILE);
+// //登陆的企业的主键 (注意也可能为空,因为注册的时候么有企业表的信息)
+// public Object getloginCompanyinfoId(HttpServletRequest request) {
return request.getSession().getAttribute(Constant.LOGIN_COMPANYINFO_ID);
+ public Object getLoginPersonId(HttpServletRequest request){
return request.getSession().getAttribute(Constant.LOGIN_PERSON_ID);
+ private String getAttr(HttpServletRequest request,String key) {
Object attribute = request.getSession().getAttribute(key);
if(Stringer.isNullOrEmpty(attribute)){
logs.debug(&###&&&&没有登陆&);
throw new RuntimeException(&没有登陆&);
return attribute.toString();
+ public void alertError(ModelMap model, String errMsg){
alertError(model, &errMsg&, errMsg);
+ public void alertError(ModelMap model, String errCode, String errMsg){
model.addAttribute(errCode, &&script type=\&text/javascript\&&alert('&+errMsg+&')&/script&&);
+ public void alertError(RedirectAttributes attr, String errMsg){
alertError(attr, &errMsg&, errMsg);
+ public void alertError(RedirectAttributes attr, String errCode, String errMsg){
attr.addFlashAttribute(errCode, &&script type=\&text/javascript\&&alert('&+errMsg+&')&/script&&);
Index: stu/foreground/test/TestController.java
===================================================================
--- stu/foreground/test/TestController.java (revision 0)
+++ stu/foreground/test/TestController.java (revision 3)
@@ -0,0 +1,5 @@
+package com.stu.foreground.
+public class TestController {
Index: stu/framework/anno/NoAuthAll.java
===================================================================
--- stu/framework/anno/NoAuthAll.java (revision 0)
+++ stu/framework/anno/NoAuthAll.java (revision 3)
@@ -0,0 +1,21 @@
+package com.stu.framework.
+import java.lang.annotation.D
+import java.lang.annotation.ElementT
+import java.lang.annotation.R
+import java.lang.annotation.RetentionP
+import java.lang.annotation.T
不需要认证的方法注解
* @ClassName: NoAuth
* @author zhaotisheng
* @date 日 下午3:08:00
* Copyright (c) 2016,
All Rights Reserved.
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface NoAuthAll {
+ String value() default &ALL&;
Index: stu/framework/anno/NoAuth.java
===================================================================
--- stu/framework/anno/NoAuth.java (revision 0)
+++ stu/framework/anno/NoAuth.java (revision 3)
@@ -0,0 +1,21 @@
+package com.stu.framework.
+import java.lang.annotation.D
+import java.lang.annotation.ElementT
+import java.lang.annotation.R
+import java.lang.annotation.RetentionP
+import java.lang.annotation.T
不需要认证的方法注解
* @ClassName: NoAuth
* @author zhaotisheng
* @date 日 下午3:08:00
* Copyright (c) 2016,
All Rights Reserved.
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface NoAuth {
+ String value() default &GETORPOST&;
Index: stu/framework/exception/ExceptionType.java
===================================================================
--- stu/framework/exception/ExceptionType.java (revision 0)
+++ stu/framework/exception/ExceptionType.java (revision 3)
@@ -0,0 +1,74 @@
+package com.stu.framework.
+import java.util.HashM
+import java.util.M
+ * 异常类型
* @ClassName: ExceptionType
* @Description: TODO
* @author zhaotisheng
* @date 日 下午4:35:50
* Copyright (c) 2016,
All Rights Reserved.
+public enum ExceptionType {
+ NO_LOGIN(&NO_LOGIN&,&用户没有登陆或者登陆已经失效&,&exception/nologin&)
+ ,NO_LOGIN4_SYS(&NO_LOGIN4_SYS&,&用户没有登陆或者登陆已经失效(后台)&,&exception/nologin4sys&)
+ private S
+ private S
+ private S
+ public static void main(String[] args) {
System.out.println(ExceptionType.parseOf(&00&).getName());
+ private ExceptionType(String code,String name,String url){
this.code=
this.name=
+ public String getUrl() {
+ public void setUrl(String url) {
this.url =
+ public String getCode() {
+ public void setCode(String code) {
this.code =
+ public String getName() {
+ public void setName(String name) {
this.name =
+ private static Map&String, ExceptionType& valueMap = new HashMap&String, ExceptionType&();
+ static {
for (ExceptionType _enum : ExceptionType.values()) {
valueMap.put(_enum.code, _enum);
+ public static ExceptionType parseOf(String code) {
for (ExceptionType item : values())
if (item.getCode().equals(code))
throw new IllegalArgumentException(&ExceptionType异常错误代码[& + code + &]不匹配!&);
Index: stu/framework/exception/NoLoginException.java
===================================================================
--- stu/framework/exception/NoLoginException.java (revision 0)
+++ stu/framework/exception/NoLoginException.java (revision 3)
@@ -0,0 +1,25 @@
+package com.stu.framework.
未登录异常
* @ClassName: NoLoginException
* @Description: TODO
* @author zhaotisheng
* @date 日 下午4:41:21
* Copyright (c) 2016,
All Rights Reserved.
+public class NoLoginException extends BaseException {
* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
+ private static final long serialVersionUID = -2207890L;
+ public NoLoginException(){
super(ExceptionType.NO_LOGIN.getName());
+ public NoLoginException(String msg){
super(msg);
Index: stu/framework/exception/NoLogin4SysException.java
===================================================================
--- stu/framework/exception/NoLogin4SysException.java (revision 0)
+++ stu/framework/exception/NoLogin4SysException.java (revision 3)
@@ -0,0 +1,25 @@
+package com.stu.framework.
未登录异常
* @ClassName: NoLoginException
* @Description: TODO
* @author zhaotisheng
* @date 日 下午4:41:21
* Copyright (c) 2016,
All Rights Reserved.
+public class NoLogin4SysException extends BaseException {
* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
+ private static final long serialVersionUID = -2207890L;
+ public NoLogin4SysException(){
super(ExceptionType.NO_LOGIN4_SYS.getName());
+ public NoLogin4SysException(String msg){
super(msg);
Index: stu/framework/exception/BaseException.java
===================================================================
--- stu/framework/exception/BaseException.java (revision 0)
+++ stu/framework/exception/BaseException.java (revision 3)
@@ -0,0 +1,50 @@
+package com.stu.framework.
* @ClassName: BaseException
* @author zhaotisheng
* @date 日 下午4:40:57
* Copyright (c) 2016,
All Rights Reserved.
+public class BaseException
extends Exception{
boolean effect=
+ private S
+ private S
+ private static final long serialVersionUID = 1L;
+ public BaseException(){
+ public BaseException(String msg){
super(msg);
+ public BaseException(String errcode,String msg){
this.errcode=
+ public boolean isEffect() {
+ public void setEffect(boolean effect) {
this.effect =
+ public String getErrcode() {
+ public void setErrcode(String errcode) {
this.errcode =
+ public String getMsg() {
+ public void setMsg(String msg) {
this.msg =
Index: stu/framework/interceptor/LoginStatusInterceptor.java
===================================================================
--- stu/framework/interceptor/LoginStatusInterceptor.java (revision 0)
+++ stu/framework/interceptor/LoginStatusInterceptor.java (revision 3)
@@ -0,0 +1,155 @@
+package com.stu.framework.
+import java.io.F
+import java.net.URL;
+import java.util.ArrayL
+import java.util.HashM
+import java.util.L
+import java.util.M
+import javax.servlet.http.HttpServletR
+import javax.servlet.http.HttpServletR
+import org.slf4j.L
+import org.slf4j.LoggerF
+import org.springframework.web.servlet.HandlerI
+import org.springframework.web.servlet.ModelAndV
+import com.stu.util.C
+import com.stu.util.S
+//import com.zhl.job.controller.AccountC
+//import com.zhl.job.resovlver.exception.NoLogin4SysE
+//import com.zhl.job.resovlver.exception.NoLoginE
+//import com.zhl.job.util.C
+//import com.zhl.job.util.S
检查登陆状态 interceptor
* @ClassName: LoginStatusInterceptor
* @author zhaotisheng
* @date 日 下午6:01:34
* Copyright (c) 2016,
All Rights Reserved.
+public class LoginStatusInterceptor implements HandlerInterceptor {
+ private Logger logs = LoggerFactory.getLogger(LoginStatusInterceptor.class);
+ private String scanP
+ private String scanPath4S
+ List&String& packageNames=new ArrayList&String&();//全部的
+ List&String& packageNames4Sys=new ArrayList&String&();//后台的
+ Map&String,String& handMapping=new HashMap&String,String&();
+ Map&String,String& handMapping4Sys=new HashMap&String,String&();
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
logs.debug(&###&&& start.............&);
String curl = request.getParameter(&curl&);
if(!Stringer.isNullOrEmpty(curl)){
request.setAttribute(&curl&, curl);
//----------------------------------------------------------------------
String clickText = request.getParameter(&clickText&);
if(!Stringer.isNullOrEmpty(clickText)){
request.setAttribute(&clickText&, clickText);
String clickText2 = request.getParameter(&clickText2&);
if(!Stringer.isNullOrEmpty(clickText2)){
request.setAttribute(&clickText2&, clickText2);
if(Stringer.isNullOrEmpty(handMapping) || handMapping.size()&=0){
String url
= request.getRequestURI().replaceAll(request.getContextPath(), &&);
String userUrl = handMapping.get(url);String sysUrl = handMapping4Sys.get(url);
if(!Stringer.isNullOrEmpty(sysUrl)){//后台url
removeSpecialId(request,Constant.LOGIN_USER_ID);
if(Stringer.isNullOrEmpty(request.getSession().getAttribute(Constant.LOGIN_USER_ID4SYS))){
throw new NoLogin4SysException();
if(!Stringer.isNullOrEmpty(userUrl) ){//前台url
removeSpecialId(request,Constant.LOGIN_USER_ID4SYS);
if(Stringer.isNullOrEmpty(request.getSession().getAttribute(Constant.LOGIN_USER_ID))){
throw new NoLoginException();
+ private void removeSpecialId(HttpServletRequest request, String loginUserId) {
Object attribute = request.getSession().getAttribute(loginUserId);
if(!Stringer.isNullOrEmpty(attribute)){
request.getSession().removeAttribute(attribute.toString());
+ //初始化
+ private void init() throws Exception {
scanPackage(scanPath,packageNames);
scanPackage(scanPath4Sys,packageNames4Sys);
(&###&&& 找到全部constroller size:&+packageNames.size() +&后台controller size:&+packageNames4Sys.size());
Stringer.filterAndInstance(packageNames,handMapping);
Stringer.filterAndInstance(packageNames4Sys,handMapping4Sys);
+ private void scanPackage(String basePackage, List&String& packageNames2) {
if(Stringer.isNullOrEmpty(scanPath)){
URL url = this.getClass().getClassLoader().getResource(File.separator+Stringer.replaceChar(basePackage));
String pathfile = url.getFile();
File file = new File(pathfile);
String[] list = file.list();
for(String path:list){
File eachFile=new File( pathfile + path);
if(eachFile.isDirectory()){//eachFile
String forPath=basePackage+ &.& +eachFile.getName();
if(forPath.equals(scanPath4Sys)){
logs.debug(forPath +&
&&&&:&&&& &+scanPath4Sys);
scanPackage(forPath,packageNames2);
packageNames2.add(basePackage + &.& + eachFile.getName());
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
+ public String getScanPath() {
return scanP
+ public void setScanPath(String scanPath) {
this.scanPath = scanP
+ public String getScanPath4Sys() {
return scanPath4S
+ public void setScanPath4Sys(String scanPath4Sys) {
this.scanPath4Sys = scanPath4S
Index: stu/util/HttpClientor.java
===================================================================
--- stu/util/HttpClientor.java (revision 0)
+++ stu/util/HttpClientor.java (revision 3)
@@ -0,0 +1,700 @@
+package com.stu.
+import java.io.BufferedInputS
+import java.io.F
+import java.io.FileInputS
+import java.io.FileOutputS
+import java.io.IOE
+import java.io.InputS
+import java.net.InetA
+import java.net.SocketTimeoutE
+import java.net.URI;
+import java.net.URL;
+import java.net.UnknownHostE
+import java.nio.charset.CodingErrorA
+import java.security.KeyManagementE
+import java.security.KeyS
+import java.security.KeyStoreE
+import java.security.NoSuchAlgorithmE
+import java.security.UnrecoverableKeyE
+import java.security.cert.CertificateE
+import java.util.ArrayL
+import java.util.A
+import java.util.L
+import java.util.M
+import java.util.S
+import java.util.UUID;
+import javax.net.ssl.SSLC
+import org.apache.http.C
+import org.apache.http.H
+import org.apache.http.HttpR
+import org.apache.http.HttpR
+import org.apache.http.NameValueP
+import org.apache.http.ParseE
+import org.apache.http.client.CookieS
+import org.apache.http.client.CredentialsP
+import org.apache.http.client.config.AuthS
+import org.apache.http.client.config.CookieS
+import org.apache.http.client.config.RequestC
+import org.apache.http.client.entity.UrlEncodedFormE
+import org.apache.http.client.methods.CloseableHttpR
+import org.apache.http.client.methods.HttpG
+import org.apache.http.client.methods.HttpP
+import org.apache.http.config.ConnectionC
+import org.apache.http.config.MessageC
+import org.apache.http.config.R
+import org.apache.http.config.RegistryB
+import org.apache.http.config.SocketC
+import org.apache.http.conn.ConnectTimeoutE
+import org.apache.http.conn.ConnectionPoolTimeoutE
+import org.apache.http.conn.DnsR
+import org.apache.http.conn.HttpConnectionF
+import org.apache.http.conn.ManagedHttpClientC
+import org.apache.http.conn.routing.HttpR
+import org.apache.http.conn.socket.ConnectionSocketF
+import org.apache.http.conn.socket.PlainConnectionSocketF
+import org.apache.http.conn.ssl.SSLConnectionSocketF
+import org.apache.http.conn.ssl.SSLC
+import org.apache.http.entity.ByteArrayE
+import org.apache.http.impl.DefaultHttpResponseF
+import org.apache.http.impl.client.BasicCookieS
+import org.apache.http.impl.client.BasicCredentialsP
+import org.apache.http.impl.client.CloseableHttpC
+import org.apache.http.impl.client.HttpC
+import org.apache.http.impl.conn.DefaultHttpResponseP
+import org.apache.http.impl.conn.DefaultHttpResponseParserF
+import org.apache.http.impl.conn.ManagedHttpClientConnectionF
+import org.apache.http.impl.conn.PoolingHttpClientConnectionM
+import org.apache.http.impl.conn.SystemDefaultDnsR
+import org.apache.http.impl.io.DefaultHttpRequestWriterF
+import org.apache.http.io.HttpMessageP
+import org.apache.http.io.HttpMessageParserF
+import org.apache.http.io.HttpMessageWriterF
+import org.apache.http.io.SessionInputB
+import org.apache.http.message.BasicH
+import org.apache.http.message.BasicLineP
+import org.apache.http.message.BasicNameValueP
+import org.apache.http.message.LineP
+import org.apache.http.util.CharArrayB
+import org.apache.http.util.EntityU
+//import com.zhl.admin.resources.ResourcesC
+ * &strong&Title : HttpClientor &/strong&. &br&
+ * &strong&Description : http请求处理工具类&/strong& &br&
+ * &strong&Create on : Mar 13, :22 PM &/strong&. &br&
+ * &strong&Copyright (C) AlexHo Co.,Ltd.&/strong& &br&
+ * @author zhl
+ * @version &strong&zhpgo-0.0.1&/strong& &br&
+ * &strong&修改历史: .&/strong& &br&
+ * 修改人 修改日期 修改描述&br&
+ * -------------------------------------------&br&
+@SuppressWarnings(&deprecation&)
+public class HttpClientor {
+ private static final Logs logs = new Logs(HttpClientor.class);
+ private static PoolingHttpClientConnectionManager poolConnManager =
+ private static HttpMessageParserFactory&HttpResponse& responseParserF
+ private static HttpMessageWriterFactory&HttpRequest& requestWriterF
+ private static SSLC
+ private static Registry&ConnectionSocketFactory& socketFactoryR
+ private static SocketConfig socketC
+ @SuppressWarnings(&unused&)
+ private static DnsResolver dnsR
+ private static MessageConstraints messageC
+ private static ConnectionConfig connectionC
+ private static CookieStore cookieS
+ private static CredentialsProvider credentialsP
+ private static RequestConfig defaultRequestC
+ private static SSLConnectionSocketF
+ private static KeyStore keyS
* 连接超时,默认5秒钟.
+ private static int SOCKET_TIMEOUT = 5 * 1000;
* 传输超时,默认10秒
+ private static int CONNECT_TIMEOUT = 10 * 1000;
* 该值就是连接不够用的时候等待超时时间,一定要设置,而且不能太大.
+ private static int CONNECTION_REQUEST_TIMEOUT = 20 * 1000;
* 最大连接数 .
+ private final static int MAX_TOTAL_CONNECTIONS = 800;
* 默认编码
+ private static String CONTENT_ENCODING = &UTF-8&;
+ private static int MAX_HEADER_COUNT = 200;
+ private static int MAX_LINE_LENGTH = 2000;
+ private static int VALIDATE_INACTIVITY = 1000;
+ //private static long CONN_IDLE_TIMEOUT = 500L;
+ public static CloseableHttpClient httpC
+ static {
httpClient = getHttpClient();
* @author by zhl May 12, 2015
* @desc http post类型请求.默认编码UTF-8
* @param url
* @param data 默认Stirng类型,e.g key=val&key2=val2
+ public synchronized static StringBuilder post(String url, Object data) {
return post(url, data, CONTENT_ENCODING);
* @author by zhl May 12, 2015
* @desc http post类型请求.
* @param url http url
* @param data Object type = String|Map
+ public synchronized static StringBuilder post(String url, Object data, String encoding) {
logs.d(&##&&& .post url -&&&& &+url);
logs.d(&##&&& .post data -&&&& &+data);
CloseableHttpResponse response =
HttpPost httpPost =
StringBuilder responseEntity =
String strings = &&;
httpPost = new HttpPost(url);
httpPost.setHeader(&Content-Type&, &application/x-www-form-urlencoded&);
if(!Stringer.isNullOrEmpty(data)){
if (data instanceof Map) {
// Map方式传参处理
Map&String,String& params = (Map&String,String&)
List&NameValuePair& nvps = new ArrayList&NameValuePair&();
if (!Stringer.isNullOrEmpty(data)) {
Set&String& keySet = params.keySet();
for (String key : keySet) {
nvps.add(new BasicNameValuePair(key, params.get(key)));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, encoding));
} else if(data instanceof String){
// String方式传参处理
strings = (String)
strings = Stringer.nullToEmpty(strings);
ByteArrayEntity reqEntity = new ByteArrayEntity(strings.getBytes(encoding));
reqEntity.setContentEncoding(encoding);
httpPost.setEntity(reqEntity);
httpPost.setConfig(defaultRequestConfig);
response = httpClient.execute(httpPost);
if(!Stringer.isNullOrEmpty(response)){
if (response.getStatusLine().getStatusCode() != 200) {
responseEntity = new StringBuilder();
responseEntity.append(EntityUtils.toString(response.getEntity(), encoding));
return responseE
} catch (ConnectionPoolTimeoutException e) {
logs.e(&##&&&http post throw ConnectionPoolTimeoutException(wait time out)&);
e.printStackTrace();
} catch (ConnectTimeoutException e) {
logs.e(&##&&&http post throw ConnectTimeoutException&);
e.printStackTrace();
} catch (SocketTimeoutException e) {
logs.e(&##&&&http post throw SocketTimeoutException&);
e.printStackTrace();
} catch (ParseException e) {
logs.e(&##&&&http post throw ParseException&);
e.printStackTrace();
} catch (IOException e) {
logs.e(&##&&&http post throw IOException&);
e.printStackTrace();
} catch (Exception e) {
logs.e(&##&&&http post throw Exception&);
e.printStackTrace();
} finally {
if (httpPost != null) {
httpPost.abort();
if (poolConnManager != null) {
poolConnManager.closeExpiredConnections();
//poolConnManager.closeIdleConnections(CONN_MANAGER_TIMEOUT, TimeUnit.MILLISECONDS);
if(!Stringer.isNullOrEmpty(response)){
response.close();
} catch (IOException e) {
e.printStackTrace();
* @author by zhl May 12, 2015
* @desc https get类型请求.默认编码UTF-8
* @param url
+ public synchronized static StringBuilder get(String url) {
return get(url,CONTENT_ENCODING);
* @author by zhl May 12, 2015
* @desc https get类型请求.
* @param url
+ public synchronized static StringBuilder get(String url, String encoding) {
logs.d(&##&&& .get url -&&&& &+url);
CloseableHttpResponse response =
HttpGet httpGet =
StringBuilder sb =
URL _url = new URL(url);
URI uri = new URI(_url.getProtocol(), _url.getHost(), _url.getPath(), _url.getQuery(), null);
httpGet = new HttpGet(uri);
httpGet.setHeader(&Content-type&, &text/ charset=&+encoding);
httpGet.setConfig(defaultRequestConfig);
response = httpClient.execute(httpGet);
if(!Stringer.isNullOrEmpty(response)){
if (response.getStatusLine().getStatusCode() != 200) {
sb = new StringBuilder();
sb.append(EntityUtils.toString(response.getEntity(), encoding));
} catch (ConnectionPoolTimeoutException e) {
logs.e(&##&&&http get throw ConnectionPoolTimeoutException(wait time out)&);
e.printStackTrace();
} catch (ConnectTimeoutException e) {
logs.e(&##&&&http get throw ConnectTimeoutException&);
e.printStackTrace();
} catch (SocketTimeoutException e) {
logs.e(&##&&&http get throw SocketTimeoutException&);
e.printStackTrace();
} catch (ParseException e) {
logs.e(&##&&&http get throw ParseException&);
e.printStackTrace();
} catch (IOException e) {
logs.e(&##&&&http get throw IOException&);
e.printStackTrace();
} catch (Exception e) {
logs.e(&##&&&http get throw Exception&);
e.printStackTrace();
} finally {
if (httpGet != null) {
httpGet.abort();
if (poolConnManager != null) {
//该方法关闭超过连接保持时间的空闲连接
poolConnManager.closeExpiredConnections();
//该方法关闭空闲时间超过timeout的连接,空闲时间从交还给连接管理器时开始
//不管是否已过期超过空闲时间则关闭。所以Idle时间应该设置的尽量长一点
//poolConnManager.closeIdleConnections(CONN_IDLE_TIMEOUT, TimeUnit.MILLISECONDS);
if(!Stringer.isNullOrEmpty(response)){
response.close();
} catch (IOException e) {
e.printStackTrace();
* @author by gy May 12, 2015
* @desc https get类型请求.下载微信图片
* @param url
* @return 返回图片名称
+// public synchronized static String mediaDownload(String url, String path) {
logs.d(&##&&& .get url -&&&& &+url);
CloseableHttpResponse response =
HttpGet httpGet =
StringBuilder sb =
URL _url = new URL(url);
URI uri = new URI(_url.getProtocol(), _url.getHost(), _url.getPath(), _url.getQuery(), null);
httpGet = new HttpGet(uri);
httpGet.setConfig(defaultRequestConfig);
response = httpClient.execute(httpGet);
if(!Stringer.isNullOrEmpty(response)){
if (response.getStatusLine().getStatusCode() != 200) {
logs.e(&media download error! response StatusLine is &+response.getStatusLine().getStatusCode());
// 获取输入流 从微信上下载图片 微信的图片后缀永远都是.jpg
InputStream in = response.getEntity().getContent();
String name = UUID.randomUUID().toString();
String suffix = &.jpg&;
String fileName = name+
// 没有传存储路径将保存至系统临时目录
if(Stringer.isNullOrEmpty(path)){
path = Constanter.REPOSITORY_IMG+ResourcesController.generateFileSavePath();
if(!new File(path).exists())
new File(path).mkdirs();
// content-type 如果为text/plain 代表返回的结果不是一个文件流 而是错误信息
Header header = response.getFirstHeader(&Content-Type&);
if(header.getValue().equals(&text/plain&)){
StringBuilder errorJson = new StringBuilder();
errorJson.append(EntityUtils.toString(response.getEntity(), &UTF-8&));
logs.e(&media download error! \n &+errorJson);
// 下载文件
String filePath = path+fileN
BufferedInputStream bis = new BufferedInputStream(in);
FileOutputStream fos = new FileOutputStream(new File(filePath));
byte [] buff = new byte[8096];
int size = 0;
while((size=bis.read(buff))!=-1){
fos.write(buff,0,size);
fos.close();
bis.close();
logs.d(&media download success! fileName is &+fileName+&\n file path is :&+filePath);
return fileN
} catch (ConnectionPoolTimeoutException e) {
logs.e(&##&&&http get throw ConnectionPoolTimeoutException(wait time out)&);
e.printStackTrace();
} catch (ConnectTimeoutException e) {
logs.e(&##&&&http get throw ConnectTimeoutException&);
e.printStackTrace();
} catch (SocketTimeoutException e) {
logs.e(&##&&&http get throw SocketTimeoutException&);
e.printStackTrace();
} catch (ParseException e) {
logs.e(&##&&&http get throw ParseException&);
e.printStackTrace();
} catch (IOException e) {
logs.e(&##&&&http get throw IOException&);
e.printStackTrace();
} catch (Exception e) {
logs.e(&##&&&http get throw Exception&);
e.printStackTrace();
} finally {
if (httpGet != null) {
httpGet.abort();
if (poolConnManager != null) {
//该方法关闭超过连接保持时间的空闲连接
poolConnManager.closeExpiredConnections();
//该方法关闭空闲时间超过timeout的连接,空闲时间从交还给连接管理器时开始
//不管是否已过期超过空闲时间则关闭。所以Idle时间应该设置的尽量长一点
//poolConnManager.closeIdleConnections(CONN_IDLE_TIMEOUT, TimeUnit.MILLISECONDS);
if(!Stringer.isNullOrEmpty(response)){
response.close();
} catch (IOException e) {
e.printStackTrace();
* @author by zhl May 12, 2015
* @desc 适合多线程的HttpClient,用httpClient4.5实现.
+ public synchronized static CloseableHttpClient getHttpClient() {
CloseableHttpClient httpclient = HttpClients.custom()
.setConnectionManager(poolConnManager)
.setDefaultCookieStore(cookieStore)
.setDefaultCredentialsProvider(credentialsProvider)
//.setProxy(new HttpHost(&myproxy&, 8080))
.setDefaultRequestConfig(defaultRequestConfig)
* @author by zhl May 12, 2015
* @desc 获取ssl证书 HttpClient,用httpClient4.5实现.
+ public synchronized static CloseableHttpClient getHttpClientOfSSL(String certPath, String certPasswd) {
CloseableHttpClient client =
FileInputStream instream =
// 加载本地的证书进行https加密传输
instream = new FileInputStream(new File(certPath));
// 设置证书密码
keyStore.load(instream, certPasswd.toCharArray());
// Trust own CA and all self-signed certs
sslcontext = SSLContexts.custom()
.loadKeyMaterial(keyStore, certPasswd.toCharArray())
// Allow TLSv1 protocol only
sslsf = new SSLConnectionSocketFactory(
sslcontext,
new String[] { &TLSv1& },
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
client = HttpClients.custom()
.setSSLSocketFactory(sslsf)
.setConnectionManager(poolConnManager)
.setDefaultCookieStore(cookieStore)
.setDefaultCredentialsProvider(credentialsProvider)
.setDefaultRequestConfig(defaultRequestConfig)
} catch (CertificateException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (UnrecoverableKeyException e) {
e.printStackTrace();
} finally {
instream.close();
} catch (IOException e) {
e.printStackTrace();
+ // 初始化参数
+ private static void init() {
logs.d(&##&&& ----------- HttpClient init Start! -----------&);
// Use custom message parser / writer to customize the way HTTP
// messages are parsed from and written out to the data stream.
responseParserFactory = new DefaultHttpResponseParserFactory() {
public HttpMessageParser&HttpResponse& create(SessionInputBuffer buffer, MessageConstraints constraints) {
LineParser lineParser = new BasicLineParser() {
public Header parseHeader(final CharArrayBuffer buffer) {
return super.parseHeader(buffer);
} catch (ParseException ex) {
return new BasicHeader(buffer.toString(), null);
return new DefaultHttpResponseParser(buffer, lineParser, DefaultHttpResponseFactory.INSTANCE,
constraints) {
protected boolean reject(final CharArrayBuffer line, int count) {
// try to ignore all garbage preceding a status line
// infinitely
requestWriterFactory = new DefaultHttpRequestWriterFactory();
// Use a custom connection factory to customize the process of
// initialization of outgoing HTTP connections. Beside standard
// connection
// configuration parameters HTTP connection factory can define message
// parser / writer routines to be employed by individual connections.
HttpConnectionFactory&HttpRoute, ManagedHttpClientConnection& connFactory = new ManagedHttpClientConnectionFactory(
requestWriterFactory, responseParserFactory);
// Client HTTP connection objects when fully initialized can be bound to
// an arbitrary network socket. The process of network socket
// initialization,
// its connection to a remote address and binding to a local one is
// controlled
// by a connection socket factory.
// SSL context for secure connections can be created either based on
// system or application specific properties.
sslcontext = SSLContexts.createSystemDefault();
// Create a registry of custom connection socket factories for supported
// protocol schemes.
socketFactoryRegistry = RegistryBuilder.&ConnectionSocketFactory& create()
.register(&http&, PlainConnectionSocketFactory.INSTANCE)
.register(&https&, new SSLConnectionSocketFactory(sslcontext)).build();
// Use custom DNS resolver to override the system DNS resolution.
dnsResolver = new SystemDefaultDnsResolver() {
public InetAddress[] resolve(final String host) throws UnknownHostException {
if (host.equalsIgnoreCase(&myhost&)) {
return new InetAddress[] { InetAddress.getByAddress(new byte[] {127, 0, 0, 1}) };
return super.resolve(host);
// Create socket configuration
socketConfig = SocketConfig.custom().setTcpNoDelay(true).build();
// Create a connection manager with custom configuration.
//##&&&poolConnManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry, connFactory, dnsResolver);
poolConnManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry, connFactory);
// Create message constraints
messageConstraints = MessageConstraints.custom()
.setMaxHeaderCount(MAX_HEADER_COUNT)
.setMaxLineLength(MAX_LINE_LENGTH)
// Create connection configuration
connectionConfig = ConnectionConfig.custom()
.setMalformedInputAction(CodingErrorAction.IGNORE)
.setUnmappableInputAction(CodingErrorAction.IGNORE)
.setCharset(Consts.UTF_8)
.setMessageConstraints(messageConstraints)
// Use custom cookie store if necessary.
cookieStore = new BasicCookieStore();
// Use custom credentials provider if necessary.
credentialsProvider = new BasicCredentialsProvider();
// Create global request configuration
defaultRequestConfig = RequestConfig.custom()
.setCookieSpec(CookieSpecs.DEFAULT)
.setExpectContinueEnabled(true)
.setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
.setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC))
.setSocketTimeout(SOCKET_TIMEOUT)
.setConnectTimeout(CONNECT_TIMEOUT)
.setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT)
//##&&&.setProxy(new HttpHost(&myotherproxy&, 8080))
keyStore = KeyStore.getInstance(&PKCS12&);
// Configure the connection manager to use socket configuration either
// by default or for a specific host.
poolConnManager.setDefaultSocketConfig(socketConfig);
//##&&&poolConnManager.setSocketConfig(new HttpHost(&somehost&, 80), socketConfig);
// Validate connections after 1 sec of inactivity
poolConnManager.setValidateAfterInactivity(VALIDATE_INACTIVITY);
// Configure the connection manager to use connection configuration either
// by default or for a specific host.
poolConnManager.setDefaultConnectionConfig(connectionConfig);
//##&&&poolConnManager.setConnectionConfig(new HttpHost(&somehost&, 80), ConnectionConfig.DEFAULT);
// Configure total max or per route limits for persistent connections
// that can be kept in the pool or leased by the connection manager.
poolConnManager.setMaxTotal(MAX_TOTAL_CONNECTIONS);
poolConnManager.setDefaultMaxPerRoute(poolConnManager.getMaxTotal());
//poolConnManager.setMaxPerRoute(new HttpRoute(new HttpHost(&somehost&, 80)), 20);
logs.d(&##&&& ----------- HttpClient init complete! -----------&);
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
Index: stu/util/Constanter.java
===================================================================
--- stu/util/Constanter.java (revision 0)
+++ stu/util/Constanter.java (revision 3)
@@ -0,0 +1,78 @@
+package com.stu.
+import java.io.F
+ * &strong&Constanter&/strong&. &br&
+ * &strong&Description : 项目常量。。。。&/strong& &br&
+ * &strong&Create on : 日 上午9:18:07&/strong&. &br&
+ * @author zts
+ * @version &strong&zhl-0.1.0&/strong& &br&
+ * &strong&修改历史: .&/strong& &br&
+ * 修改人 修改日期 修改描述&br&
+ * -------------------------------------------&br&
+public class Constanter {
+ public static final Integer pageSize=2;
+ // app about
+ public static final String APP_CONTEXT = Stringer.nullToEmpty(PropsHandler.getProperty(&app.context&));
+ public static final String APP_HOST = PropsHandler.getProperty(&app.host&);
+ public static final String APP_ROOT_PATH = APP_HOST + APP_CONTEXT;
+ public static final String APP_APPLICATION_CONFIGURABLE_XML = &conf/application-configurable.xml&;
+ public static final int SESSION_MAX_INTERVAL = -1;//10*60; // default 20 minutes
+ public static final String SMS_SERVERURL = PropsHandler.getProperty(&sms.serverurl&);
+ //sms.test.code
+ public static final String SMS_TEST_CODE = PropsHandler.getProperty(&sms.test.code&);
+ // memcache key
+ public static final Integer MEM_DEFAULT_EXPIRE_TIME = 8 * (60 * 60); // default 8 hour
+ public static final String MEM_KEY_DEFAULT = &mem_key_default&;
+ public static final String MEM_KEY_ACCESS_TOKEN = &mem_key_access_token&;
+ public static final String MEM_KEY_JS_SDK_TICKET = &mem_key_js_sdk_ticket&;
+ public static final String MEM_KEY_OAUTH_ACCESS_TOKEN = &mem_key_oauth_access_token&;
+ public static final String KEY_CACHE_ORDER_DATE = &key_cache_order_date&;//时间
+ // e-mail
+ public static final boolean MAIL_IF_AUTH =
+ public static final String MAIL_DISPLAY_NAME = PropsHandler.getProperty(&mail.display.name&);
+ public static final String MAIL_FROM = PropsHandler.getProperty(&mail.from&);
+ public static final String MAIL_USER_NAME = PropsHandler.getProperty(&mail.user.name&);
+ public static final String MAIL_PASSWORD = PropsHandler.getProperty(&mail.password&);
+ public static final String MAIL_SMTP_SERVER = PropsHandler.getProperty(&mail.smtp.server&);
+ // repository path
+ public static final String REPOSITORY_ROOT = System.getProperty(&catalina.base&) + File.separator+&myresource&+ File.//PropsHandler.getProperty(&repository.root&);
+ public static final String REPOSITORY_IMG = REPOSITORY_ROOT + &img& + File.
+ public static final String REPOSITORY_DOC = REPOSITORY_ROOT + &doc& + File.
+ public static final String REPOSITORY_EXCEL = REPOSITORY_ROOT + &excel& + File.
+ public static final String REPOSITORY_HTML = REPOSITORY_ROOT + &html& + File.
+ public static final String REPOSITORY_ATT = REPOSITORY_ROOT + &att& + File.
+ public static final String REPOSITORY_OTHER = REPOSITORY_ROOT + &other& + File.
+ // wechat about
+ public static final Integer WECHAT_TOKEN_TIME = 7000; // wechat default 7200 second, 2 hour
+ public static final Integer WECHAT_TICKET_TIME = 7100; // wechat default 7200 second, 2 hour
+ public static final boolean WECHAT_MSG_PUSH =
+ public static final String WECHAT_APPID = PropsHandler.getProperty(&wechat.appid&);
+ public static final String WECHAT_SECRET = PropsHandler.getProperty(&wechat.secret&);
+ public static final String WECHAT_TOKEN = PropsHandler.getProperty(&wechat.token&);
+ public static final String WECHAT_BAIDU_MAP_AK = PropsHandler.getProperty(&wechat.baidu.map.ak&);
+ public static final String WECHAT_SESSION_OPENID = &whechat_current_openid&;
+ // other
+ public static final String RECORD_REDIS_KEY = &reseller_sell_record_data&;
+ //String queryTimeTmp=&QUERY_TIME_TMP&;
+ public static final String JD_QUERY_ORDER_JD_MAP = &QUERY_ORDER_JD_MAP&;
+ public static final String JD_EXCEPTION_REQUEST_LIST = &JD_EXCEPTION_REQUEST_LIST&;
+ public static final String JD_REQUES_TEND_TIME = &REQUES_TEND_TIME&;
+ public static final String JD_REQUES_TEND_TIME_MILLIS = &JD_REQUES_TEND_TIME_MILLIS&;//秒级
Index: stu/util/PropsHandler.java
===================================================================
--- stu/util/PropsHandler.java (revision 0)
+++ stu/util/PropsHandler.java (revision 3)
@@ -0,0 +1,174 @@
+package com.stu.
+import java.io.IOE
+import java.io.InputS
+import java.text.MessageF
+import java.util.HashM
+import java.util.L
+import java.util.P
+import java.util.ResourceB
+ * &strong&PropsHandler&/strong&. &br&
+ * &strong&Description : Properties文件处理类&/strong& &br&
+ * &strong&Create on : 日 上午9:19:27&/strong&. &br&
+ * &strong&Copyright (C) zhl Co.,Ltd.&/strong& &br&
+ * @author zts
+ * @version &strong&zhl-0.1.0&/strong& &br&
+ * &strong&修改历史: .&/strong& &br&
+ * 修改人 修改日期 修改描述&br&
+ * -------------------------------------------&br&
+public final class PropsHandler {
+ private static Locale defaultLocale = Locale.getDefault();
+ private static HashMap&String, String& formats = new HashMap&String, String&();
+ // 加载class根目录下的application.properties
+ private static Properties props =
+ static {
if(null == props){
props = new Properties();
InputStream in = PropsHandler.class.getResourceAsStream(&/conf/application.properties&);
props.load(in);
} catch (IOException e) {
e.printStackTrace();
+ public static void main(String[] args) {
//app.context
String[] arr=new String[]{&mytest&};
String property = PropsHandler.getProperty(&wechat.url.menu.create&,arr);
System.out.println(property);
* @desc 方法描述.获得key的对应值
* @param key
+ public final static String getProperty(String key) {
return props.getProperty(key);
* @author by zts Jan 22, 2015
* @desc 方法描述.获得默认值
* @param key
* @param defaultValue
+ public final static String getProperty(String key, String defaultValue) {
return props.getProperty(key, defaultValue);
* @author by zts Jan 22, 2015
* @desc 方法描述.获得key的对应值,并对参数格式化,e.g {0}{1}...
* @param key
* @param array
+ public final static String getProperty(String key, Object[] array) {
String msg = props.getProperty(key);
msg = MessageFormat.format(msg, array);
* @author by zts Jan 22, 2015
* @desc 方法描述.根据指定资源,获得key的对应值,并对参数格式化,e.g {0}{1}...
* @param key
* @param array
* @param srcPath
+ public final static String getProperty(String srcPath, String key, Object[] array) {
Properties props1 =
if(null == props1){
props1 = new Properties();
InputStream in = PropsHandler.class.getResourceAsStream(srcPath);
props1.load(in);
} catch (IOException e) {
e.printStackTrace();
String msg = props1.getProperty(key);
msg = MessageFormat.format(msg, array);
* @author by zts Apr 21, 2015
* @desc 消息资源处理.
* @param locale
* @param key
+ public static String getMessage(Locale locale, String key) {
if (locale == null) {
locale = defaultL
String msg =
String formatKey = messageKey(locale, key);
synchronized (formats) {
msg = (String) formats.get(formatKey);
if (msg == null) {
ResourceBundle myResources = ResourceBundle.getBundle(&conf/messages/messages&, locale);
msg = myResources.getString(key);
formats.put(formatKey, msg);
+ public static String getMessage(String key, String arg0) {
return getMessage(defaultLocale, key, arg0);
+ public static String getMessage(Locale locale, String key, Object args[]) {
MessageFormat format = new MessageFormat(getMessage(locale, key));
return format.format(args);
+ public static String getMessage(Locale locale, String key, Object arg0) {
Object args[] = new Object[1];
args[0] = arg0;
return (getMessage(locale, key, args));
+ protected static String localeKey(Locale locale) {
if (locale == null) {
return (&&);
return (locale.toString());
+ protected static String messageKey(Locale locale, String key) {
return (localeKey(locale) + &.& + key);
+ public static String getMessage(String key) {
return getMessage(defaultLocale, key);
Index: stu/util/DateUtiler.java
===================================================================
--- stu/util/DateUtiler.java (revision 0)
+++ stu/util/DateUtiler.java (revision 3)
@@ -0,0 +1,325 @@
+package com.stu.
+import java.sql.T
+import java.text.DateF
+import java.text.ParseE
+import java.text.SimpleDateF
+import java.util.C
+import java.util.D
+ * &strong&DateUtiler&/strong&. &br&
+ * &strong&Description : 日期工具类 默认使用 &yyyy-MM-dd HH:mm:ss& 格式化日期&/strong& &br&
+ * &strong&Create on : 日 上午11:26:53&/strong&. &br&
+ * &strong&Copyright (C) zhl Co.,Ltd.&/strong& &br&
+ * @author zts
+ * @version &strong&zhl-0.1.0&/strong& &br&
+ * &strong&修改历史: .&/strong& &br&
+ * 修改人 修改日期 修改描述&br&
+ * -------------------------------------------&br&
+public final class DateUtiler {
+ public static final String ENG_DATE_FROMAT = &EEE, d MMM yyyy HH:mm:ss z&;
+ public static final String YYYY_MM_DD_HH_MM_SS_S = &yyyy-MM-dd HH:mm:ss.S&;
public static final String YYYY_MM_DD_HH_MM_SS = &yyyy-MM-dd HH:mm:ss&;
public static final String YYYY_MM_DD_HH_MM = &yyyy-MM-dd HH:mm&;
public static final String YYYY_MM_DD = &yyyy-MM-dd&;
public static final String YYYYMMDDHHMMSS = &yyyyMMddHHmmss&;
public static final String YYYY = &yyyy&;
public static final String MM = &MM&;
public static final String DD = &dd&;
public static final String YYYY_MM_DD_CN = &yyyy年MM月dd&;
public static final String YYYY_MM_DD_HH_MM_SS_CN = &yyyy年MM月dd日
HH时mm分ss秒&;
+ public static final String YYYY_MM_DD_HH_MM_SS_S_CN = &yyyy年MM月dd日
HH时mm分ss秒SSS毫秒&;
* @author by zts Jun 11, 2015
* @desc 获得默认的 date pattern.
* @return yyyy-MM-dd HH:mm:ss
+ public static String getDefaultPattern() {
return YYYY_MM_DD_HH_MM_SS;
* @author by zts Jun 11, 2015
* @desc 根据预设格式返回当前日期.
* @return 默认的 yyyy-MM-dd HH:mm:ss
+ public static String getNow() {
return format(new Date());
* @author by zts Jun 11, 2015
* @desc 根据用户格式返回当前日期.
* @param format
+ public static String getNow(String format) {
return format(new Date(), format);
* @author by zts Jun 11, 2015
* @desc 使用预设格式将字符串日期转换成日期类型的对象.
* @param strDate
+ public static Date format(String strDate) {
return format(strDate, getDefaultPattern());
* @author by zts Jun 11, 2015
* @desc 使用用户格式将字符串日期转换成日期类型的对象.
* @param strDate
18:06:19 993
* @param pattern
+ public static Date format(String strDate, String pattern) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
* @author by zts Jun 11, 2015
* @desc 使用预设的默认格式,将日期类型的对象转换成字符串类型格式.
* @param date
+ public static String format(Date date) {
return format(date, getDefaultPattern());
* @author by zts Jun 11, 2015
* @desc 使用用户指定格式,将日期类型的对象转换成字符串类型日期.
* @param date
* @param pattern
+ public static String format(Date date, String pattern) {
String returnValue = &&;
if (date != null) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
returnValue = df.format(date);
return (returnValue);
* @author by zts Jun 18, 2015
* @desc 在日期上增加减少时间,如数个整月、天、小时、分钟.
* @param date
* @param timeUnit e.g Calendar.YEAR,Calendar.MONTH, Calendar.HOUR ...
* @param n 如: 增加3个月 n=3;减3个月 n=-3
+ public static Date addTimeByUnit(Date date, int timeUnit, int n) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(timeUnit, n);
return cal.getTime();
* @author by zts Jun 11, 2015
* @desc 获取时间戳.
* @return e.g
14:30:13.893
+ public static String getTimeString() {
SimpleDateFormat df = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS_S);
Calendar calendar = Calendar.getInstance();
return df.format(calendar.getTime());
* @author by zts Jun 11, 2015
* @desc 获取日期年份.
* @param date
* @return e.g 2015
+ public static String getYear(Date date) {
return format(date).substring(0, 4);
* @author by zts Jun 11, 2015
* @desc 按默认格式的字符串距离今天的天数.
* @param date
18:06:19 993
+ public static int countDays(String date) {
long t = Calendar.getInstance().getTime().getTime();
Calendar c = Calendar.getInstance();
c.setTime(format(date));
long t1 = c.getTime().getTime();
return (int) (t / 1000 - t1 / 1000) / 3600 / 24;
* @author by zts Jun 11, 2015
* @desc 按用户格式字符串距离今天的天数.
* @param date
18:06:19 993
* @param format
+ public static int countDays(String date, String format) {
long t = Calendar.getInstance().getTime().getTime();
Calendar c = Calendar.getInstance();
c.setTime(format(date, format));
long t1 = c.getTime().getTime();
return (int) (t / 1000 - t1 / 1000) / 3600 / 24;
* @author by zts Jun 11, 2015
* @desc 字符串转换成时间对象 .
* @param dateString
18:06:19 993
* @param formatStr
+ public static Date string2date(String dateString, String formatStr) {
Date formateDate =
DateFormat format = new SimpleDateFormat(formatStr);
formateDate = format.parse(dateString);
} catch (ParseException e) {
return formateD
* @author by zts Jun 11, 2015
* @desc 当前时间毫秒转化成10位数字串.
+ public static String date2timeMillis() {
return Long.toString(System.currentTimeMillis() / 1000);
* @author by zts Jun 11, 2015
* @desc Date类型转换为Timestamp类型 .
* @param date
+ public static Timestamp date2timestamp(Date date) {
if (date == null)
return new Timestamp(date.getTime());
* @author by zts Jun 25, 2015
* @desc 时间毫秒数转换成指定日期格式.
* @param time
* @param formatStr
public static String timeMillis2dateString(Long time, String formatStr){
Date d = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
return sdf.format(d);
* @author by zts Jun 11, 2015
* @desc sql时间对象转换成字符串 .
* @param timestamp
* @param formatStr
public static String timestamp2string(Timestamp timestamp, String formatStr) {
String strDate = &&;
SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
strDate = sdf.format(timestamp);
return strD
* @author by zts Jun 11, 2015
* @desc 指定时间距离当前时间的中文信息 .
* @param time
public static String getLnow(long time) {
Calendar cal = Calendar.getInstance();
long timel = cal.getTimeInMillis() -
if (timel / 1000 & 60) {
return &1分钟以内&;
} else if (timel / 1000 / 60 & 60) {
return timel / 1000 / 60 + &分钟前&;
} else if (timel / 1000 / 60 / 60 & 24) {
return timel / 1000 / 60 / 60 + &小时前&;
return timel / 1000 / 60 / 60 / 24 + &天前&;
* @author by zts Aug 21, 2015
* @desc 检查时间前后逻辑是否有序.
* @param time1
* @param time2
public static boolean chkIsCorrect(String time1, String time2) {
if(Stringer.isNullOrEmpty(time1) || Stringer.isNullOrEmpty(time2)){
} else if(time1.equals(time2)) {
Date begin = string2date(time1,getDefaultPattern());
Date end = string2date(time2,getDefaultPattern());
return begin.before(end);
\ No newline at end of file
Index: stu/util/coding/Base64Util.java
===================================================================
--- stu/util/coding/Base64Util.java (revision 0)
+++ stu/util/coding/Base64Util.java (revision 3)
@@ -0,0 +1,76 @@
+package com.stu.util.
+import java.io.UnsupportedEncodingE
+public class Base64Util {
* @param encodedStr ????BASE64??????????
* @return ???????????
+ public static String decode(String encodedStr){
return new String (getbyteFromBASE64(encodedStr));
* @param encodedStr ????BASE64??????????
* @param charset ????????????
* @return ???????????
* @throws UnsupportedEncodingException ???????????
+ public static String decode(String encodedStr,String charset) throws UnsupportedEncodingException {
return new String (getbyteFromBASE64(encodedStr),charset);
* @param str ???????????
* @return ???????????
+ public static String encode(String str){
return new String(getBASE64FromByte(str.getBytes()));
* @param str ????????????
* @param charset ?????
* @return ???????????
* @throws UnsupportedEncodingException ???????????
+ public static String encode(String str,String charset) throws UnsupportedEncodingException{
return new String(getBASE64FromByte(str.getBytes(charset)));
* BASE64 ????
* @param encodedStr ????BASE64?????????
* @return ?????????????
+ public static byte[] getbyteFromBASE64(String encodedStr) {
if (encodedStr == null)
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
return decoder.decodeBuffer(encodedStr);
} catch (Exception e) {
* BASE64????
* @param encodedBytes
??????б???????????
* @return ????BASE64??????????
+ public static String getBASE64FromByte(byte[] bytes) {
if (bytes == null)
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
return encoder.encode(bytes);
} catch (Exception e) {
Index: stu/util/coding/UTF8StringBeanPostProcessor.java
===================================================================
--- stu/util/coding/UTF8StringBeanPostProcessor.java (revision 0)
+++ stu/util/coding/UTF8StringBeanPostProcessor.java (revision 3)
@@ -0,0 +1,29 @@
+package com.stu.util.
+import java.nio.charset.C
+import java.util.ArrayL
+import java.util.L
+import org.springframework.beans.BeansE
+import org.springframework.beans.factory.config.BeanPostP
+import org.springframework.http.MediaT
+import org.springframework.http.converter.StringHttpMessageC
+public class UTF8StringBeanPostProcessor implements BeanPostProcessor {
+ public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if (bean instanceof StringHttpMessageConverter) {
MediaType mediaType = new MediaType(&text&, &plain&,
Charset.forName(&UTF-8&));
List&MediaType& types = new ArrayList&MediaType&();
types.add(mediaType);
((StringHttpMessageConverter) bean).setSupportedMediaTypes(types);
+ public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
\ No newline at end of file
Index: stu/util/Logs.java
===================================================================
--- stu/util/Logs.java (revision 0)
+++ stu/util/Logs.java (revision 3)
@@ -0,0 +1,73 @@
+package com.stu.
+import org.slf4j.L
+import org.slf4j.LoggerF
+ * &strong&Logs&/strong&. &br&
+ * &strong&Description : 统一日志打印.&/strong& &br&
+ * &strong&Create on : 日 上午9:41:55&/strong&. &br&
+ * &strong&Copyright (C) zhl Co.,Ltd.&/strong& &br&
+ * @author zts
+ * @version &strong&zhl-0.1.0&/strong& &br&
+ * &strong&修改历史: .&/strong& &br&
+ * 修改人 修改日期 修改描述&br&
+ * -------------------------------------------&br&
+public class Logs {
public static final String LOG_TYPE_TRACE = &logTypeTrace&;
public static final String LOG_TYPE_DEBUG = &logTypeDebug&;
public static final String LOG_TYPE_INFO = &logTypeInfo&;
public static final String LOG_TYPE_WARN = &logTypeWarn&;
public static final String LOG_TYPE_ERROR = &logTypeError&;
//打印日志
public Logs(Class&?& clazz){
logger = LoggerFactory.getLogger(clazz);
public void t(String s){
logger.trace(s);
public void d(String s){
logger.debug(s);
public void i(String s){
public void w(String s){
logger.warn(s);
public void e(String s){
logger.error(s);
public void log(String type,String s){
if(type.equals(Logs.LOG_TYPE_TRACE)){
}else if(type.equals(Logs.LOG_TYPE_DEBUG)){
}else if(type.equals(Logs.LOG_TYPE_INFO)){
}else if(type.equals(Logs.LOG_TYPE_WARN)){
}else if(type.equals(Logs.LOG_TYPE_ERROR)){
Index: stu/util/RedisUtil.java
===================================================================
--- stu/util/RedisUtil.java (revision 0)
+++ stu/util/RedisUtil.java (revision 3)
@@ -0,0 +1,275 @@
+package com.stu.
+import java.io.S
+import java.util.L
+import java.util.concurrent.TimeU
+import org.springframework.context.support.AbstractApplicationC
+import org.springframework.context.support.ClassPathXmlApplicationC
+import org.springframework.data.redis.core.RedisT
+import mon.base.S
+ * &strong&RedisUtil&/strong&. &br&
+ * &strong&Description : Redis工具类.&/strong& &br&
+ * &strong&Create on : 日 上午9:40:18&/strong&. &br&
+ * &strong&Copyright (C) zhl Co.,Ltd.&/strong& &br&
+ * @author zts
+ * @version &strong&zhl-0.1.0&/strong& &br&
+ * &strong&修改历史: .&/strong& &br&
+ * 修改人 修改日期 修改描述&br&
+ * -------------------------------------------&br&
+@SuppressWarnings(&unchecked&)
+public class RedisUtil {
+ private static Logs logs = new Logs(RedisUtil.class);
+ private static AbstractApplicationContext appC
+ private static RedisTemplate&String, Serializable& redisT
+ ///zhlwx/src/main/resources/conf/redis/applicationContext-redis.xml
+ static {
appContext = new ClassPathXmlApplicationContext(&/conf/redis/applicationContext-redis.xml&);
redisTemplate = (RedisTemplate&String, Serializable&) appContext.getBean(&redisTemplate&);
+ public RedisUtil() {
* @author by zts May 20, 2015
* @desc 设置.
* @param key
* @param value
+ public static void set(String key, Serializable value) {
if (validateKey(key)) {
redisTemplate.opsForValue().set(key, value);
* @author by zts May 20, 2015
* @desc 获取.
* @param key
+ public static Serializable get(String key) {
if (validateKey(key)) {
return redisTemplate.opsForValue().get(key);
* @author by zts May 20, 2015
* @desc 删除.
* @param key
+ public static void delete(String key) {
if (validateKey(key)) {
redisTemplate.delete(key);
logs.d(&##&&& --- redis key=[&+key+&] deleted! ---&);
* @author by zts May 25, 2015
* @desc 压栈 .
* @param key
* @param value
public static Long push(String key, Serializable value) {
if (validateKey(key)) {
return redisTemplate.opsForList().leftPush(key, value);
return 0L;
* @author by zts May 25, 2015
* @desc 出栈 .
* @param key
public static Serializable pop(String key) {
if (validateKey(key)) {
return redisTemplate.opsForList().leftPop(key);
* @author by zts May 25, 2015
* @desc 入队 .
* @param key
* @param value
public static Long in(String key, Serializable value) {
if (validateKey(key)) {
return redisTemplate.opsForList().rightPush(key, value);
return 0L;
* @author by zts May 25, 2015
* @desc 出队.
* @param key
public static Serializable out(String key) {
if (validateKey(key)) {
return redisTemplate.opsForList().leftPop(key);
* @author by zts May 25, 2015
* @desc 栈/队列长 .
* @param key
public static Long length(String key) {
if (validateKey(key)) {
return redisTemplate.opsForList().size(key);
return 0L;
* @author by zts May 25, 2015
* @desc 范围检索 .
* @param key
* @param start
* @param end
public static List&Serializable& range(String key, int start, int end) {
if (validateKey(key)) {
return redisTemplate.opsForList().range(key, start, end);
* @author by zts May 25, 2015
* @desc 移除 .
* @param key
* @param i
* @param value
public static void remove(String key, long i, Serializable value) {
if (validateKey(key)) {
redisTemplate.opsForList().remove(key, i, value);
logs.d(&##&&& --- redis key=[&+key+&] removed! ---&);
* @author by zts May 25, 2015
* @desc 检索某个索引下的值.
* @param key
* @param index
public static Serializable index(String key, long index) {
if (validateKey(key)) {
return redisTemplate.opsForList().index(key, index);
* @desc 设置某个索引上的值 .
* @param key
* @param index
* @param value
public static void set(String key, long index, Serializable value) {
if (validateKey(key)) {
redisTemplate.opsForList().set(key, index, value);
* @author by zts 日上午9:49:51
* @param timeoutInSecond
以秒为单位的超时时间
* @exception
public static void set(String key, long timeoutInSecond, Serializable value) {
redisTemplate.opsForValue().set(key, value, timeoutInSecond, TimeUnit.SECONDS);
* @author by zts May 25, 2015
* @desc 裁剪 .
* @param key
* @param start
* @param end
public static void trim(String key, long start, long end) {
if (validateKey(key)) {
redisTemplate.opsForList().trim(key, start, end);
private static boolean validateKey(String key) {
if (Strings.isNullOrEmpty(key)) {
logs.e(&--------redis key is null-------key=&+key);
} catch (Exception e) {
logs.e(&--------Exception message=&+e.getMessage());
Index: stu/util/MD5.java
===================================================================
--- stu/util/MD5.java (revision 0)
+++ stu/util/MD5.java (revision 3)
@@ -0,0 +1,88 @@
+package com.stu.
+import java.security.MessageD
+ * &strong&MD5&/strong&. &br&
+ * &strong&Description : MD5&/strong& &br&
+ * &strong&Create on : 日 下午2:35:43&/strong&. &br&
+ * &strong&Copyright (C) zhl Co.,Ltd.&/strong& &br&
+ * @author zts
+ * @version &strong&zhl-0.1.0&/strong& &br&
+ * &strong&修改历史: .&/strong& &br&
+ * 修改人 修改日期 修改描述&br&
+ * Copyright (C)
zhl by zts Inc. All Rights Reserved
+ * -------------------------------------------&br&
+public class MD5 {
private final static String[] hexDigits = {&0&, &1&, &2&, &3&, &4&}

我要回帖

更多关于 松滋 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信