博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于SSM的单点登陆02
阅读量:6242 次
发布时间:2019-06-22

本文共 19290 字,大约阅读时间需要 64 分钟。

pom文件

1 
2
5
6
io.guangsoft
7
market
8
1.0
9
10
4.0.0
11 12
market-utils
13
jar
14 15
16
17
18
19
commons-net
20
commons-net
21
22
23
24
com.fasterxml.jackson.core
25
jackson-databind
26
27
28
com.alibaba
29
fastjson
30
31
32
33
org.apache.httpcomponents
34
httpclient
35
36
37
38
javax.servlet
39
javax.servlet-api
40
provided
41
42
43 44

GResult.java

1 package io.guangsoft.market.util.bean; 2  3 public class GResult { 4  5     //状态码 6     private Integer gCode; 7  8     //状态信息 9     private String gMsg;10 11     //响应数据12     private Object gData;13 14     public GResult() {15     }16 17     public GResult(Integer gCode, String gMsg) {18         this.gCode = gCode;19         this.gMsg = gMsg;20     }21 22     public GResult(Integer gCode, String gMsg, Object gData) {23         this.gCode = gCode;24         this.gMsg = gMsg;25         this.gData = gData;26     }27 28     public Integer getgCode() {29         return gCode;30     }31 32     public void setgCode(Integer gCode) {33         this.gCode = gCode;34     }35 36     public String getgMsg() {37         return gMsg;38     }39 40     public void setgMsg(String gMsg) {41         this.gMsg = gMsg;42     }43 44     public Object getgData() {45         return gData;46     }47 48     public void setgData(Object gData) {49         this.gData = gData;50     }51 52 }

GResultUtil.java

1 package io.guangsoft.market.util.utils; 2  3 import com.alibaba.fastjson.JSONObject; 4 import io.guangsoft.market.util.bean.GResult; 5  6 import java.beans.BeanInfo; 7 import java.beans.Introspector; 8 import java.beans.PropertyDescriptor; 9 import java.lang.reflect.Method;10 import java.util.HashMap;11 import java.util.Map;12 13 public class GResultUtil {14 15     public static GResult success() {16         return new GResult(0, "操作成功!");17     }18 19     public static GResult fail() {20         return new GResult(1, "操作失败!");21     }22 23     public static GResult fail(Integer gCode) {24         return new GResult(gCode, "操作失败!");25     }26 27     public static GResult fail(Integer gCode, String gMsg) {28         return new GResult(gCode, gMsg);29     }30 31     public static GResult build(Integer gCode, String gMsg, Object gData) {32         return new GResult(gCode, gMsg, gData);33     }34 35     /**36      * 得到JSON格式的结果集37      */38     public static JSONObject toJSONResult(GResult gResult) {39         Map gResultMap = transBean2Map(gResult);40         return new JSONObject(gResultMap);41     }42 43     /**44      * 使用内省方式将bean转成map45      */46     public static Map
transBean2Map(Object obj) {47 if(obj == null){48 return null;49 }50 Map
map = new HashMap
();51 try {52 BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());53 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();54 for (PropertyDescriptor property : propertyDescriptors) {55 String key = property.getName();56 // 过滤class属性57 if (!key.equals("class")) {58 // 得到property对应的getter方法59 Method getter = property.getReadMethod();60 Object value = getter.invoke(obj);61 map.put(key, value);62 }63 }64 } catch (Exception e) {65 e.printStackTrace();66 }67 return map;68 }69 }

CookieUtil.java

1 package io.guangsoft.market.util.utils;  2   3   4 import java.net.URLDecoder;  5 import java.net.URLEncoder;  6   7 import javax.servlet.http.Cookie;  8 import javax.servlet.http.HttpServletRequest;  9 import javax.servlet.http.HttpServletResponse; 10  11 public class CookieUtil { 12  13     /** 14      * 得到Cookie的值, 不编码 15      */ 16     public static String getCookieValue(HttpServletRequest request, String cookieName) { 17         return getCookieValue(request, cookieName, false); 18     } 19  20     /** 21      * 得到Cookie的值, 22      */ 23     public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) { 24         Cookie[] cookieList = request.getCookies(); 25         if (cookieList == null || cookieName == null) { 26             return null; 27         } 28         String retValue = null; 29         try { 30             for (int i = 0; i < cookieList.length; i++) { 31                 if (cookieList[i].getName().equals(cookieName)) { 32                     if (isDecoder) { 33                         retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8"); 34                     } else { 35                         retValue = cookieList[i].getValue(); 36                     } 37                     break; 38                 } 39             } 40         } catch (Exception e) { 41             e.printStackTrace(); 42         } 43         return retValue; 44     } 45  46     /** 47      * 得到Cookie的值, 48      */ 49     public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) { 50         Cookie[] cookieList = request.getCookies(); 51         if (cookieList == null || cookieName == null) { 52             return null; 53         } 54         String retValue = null; 55         try { 56             for (int i = 0; i < cookieList.length; i++) { 57                 if (cookieList[i].getName().equals(cookieName)) { 58                     retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString); 59                     break; 60                 } 61             } 62         } catch (Exception e) { 63             e.printStackTrace(); 64         } 65         return retValue; 66     } 67  68     /** 69      * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码 70      */ 71     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 72                                  String cookieValue) { 73         setCookie(request, response, cookieName, cookieValue, -1); 74     } 75  76     /** 77      * 设置Cookie的值 在指定时间内生效,但不编码 78      */ 79     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 80                                  String cookieValue, int cookieMaxage) { 81         setCookie(request, response, cookieName, cookieValue, cookieMaxage, false); 82     } 83  84     /** 85      * 设置Cookie的值 不设置生效时间,但编码 86      */ 87     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 88                                  String cookieValue, boolean isEncode) { 89         setCookie(request, response, cookieName, cookieValue, -1, isEncode); 90     } 91  92     /** 93      * 设置Cookie的值 在指定时间内生效, 编码参数 94      */ 95     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 96                                  String cookieValue, int cookieMaxage, boolean isEncode) { 97         doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode); 98     } 99 100     /**101      * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)102      */103     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,104                                  String cookieValue, int cookieMaxage, String encodeString) {105         doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);106     }107 108     /**109      * 删除Cookie带cookie域名110      */111     public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,112                                     String cookieName) {113         doSetCookie(request, response, cookieName, "", -1, false);114     }115 116     /**117      * 设置Cookie的值,并使其在指定时间内生效118      *119      * @param cookieMaxage cookie生效的最大秒数120      */121     private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,122                                           String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {123         try {124             if (cookieValue == null) {125                 cookieValue = "";126             } else if (isEncode) {127                 cookieValue = URLEncoder.encode(cookieValue, "utf-8");128             }129             Cookie cookie = new Cookie(cookieName, cookieValue);130             if (cookieMaxage > 0) {131                 cookie.setMaxAge(cookieMaxage);132             }133             if (null != request) {
// 设置域名的cookie134 String domainName = getDomainName(request);135 System.out.println(domainName);136 if (!"localhost".equals(domainName) && !"127.0.0.1".equals(domainName)) {137 cookie.setDomain(domainName);138 }139 }140 cookie.setPath("/");141 response.addCookie(cookie);142 } catch (Exception e) {143 e.printStackTrace();144 }145 }146 147 /**148 * 设置Cookie的值,并使其在指定时间内生效149 * @param cookieMaxage cookie生效的最大秒数150 */151 private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,152 String cookieName, String cookieValue, int cookieMaxage, String encodeString) {153 try {154 if (cookieValue == null) {155 cookieValue = "";156 } else {157 cookieValue = URLEncoder.encode(cookieValue, encodeString);158 }159 Cookie cookie = new Cookie(cookieName, cookieValue);160 if (cookieMaxage > 0) {161 cookie.setMaxAge(cookieMaxage);162 }163 if (null != request) {
// 设置域名的cookie164 String domainName = getDomainName(request);165 System.out.println(domainName);166 if (!"localhost".equals(domainName)) {167 cookie.setDomain(domainName);168 }169 }170 cookie.setPath("/");171 response.addCookie(cookie);172 } catch (Exception e) {173 e.printStackTrace();174 }175 }176 177 /**178 * 得到cookie的域名179 */180 private static final String getDomainName(HttpServletRequest request) {181 String domainName = null;182 String serverName = request.getRequestURL().toString();183 if (serverName == null || serverName.equals("")) {184 domainName = "";185 } else {186 //http://www.baidu.com/aaa187 //www.baidu.com.cn/aaa/bb/ccc188 serverName = serverName.toLowerCase();189 serverName = serverName.substring(7);190 final int end = serverName.indexOf("/");191 serverName = serverName.substring(0, end);192 final String[] domains = serverName.split("\\.");193 int len = domains.length;194 if (len > 3) {195 // www.xxx.com.cn196 domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];197 } else if (len <= 3 && len > 1) {198 // xxx.com or xxx.cn199 domainName = "." + domains[len - 2] + "." + domains[len - 1];200 } else {201 domainName = serverName;202 }203 }204 if (domainName != null && domainName.indexOf(":") > 0) {205 String[] ary = domainName.split("\\:");206 domainName = ary[0];207 }208 return domainName;209 }210 }

HttpClientUtil.java

1 package io.guangsoft.market.util.utils;  2   3 import java.io.IOException;  4 import java.io.InterruptedIOException;  5 import java.net.URI;  6 import java.net.UnknownHostException;  7 import java.util.ArrayList;  8 import java.util.List;  9 import java.util.Map.Entry; 10  11 import javax.net.ssl.SSLException; 12 import javax.net.ssl.SSLHandshakeException; 13  14 import org.apache.http.Consts; 15 import org.apache.http.HttpEntity; 16 import org.apache.http.HttpEntityEnclosingRequest; 17 import org.apache.http.HttpRequest; 18 import org.apache.http.HttpResponse; 19 import org.apache.http.NameValuePair; 20 import org.apache.http.NoHttpResponseException; 21 import org.apache.http.client.HttpClient; 22 import org.apache.http.client.HttpRequestRetryHandler; 23 import org.apache.http.client.config.RequestConfig; 24 import org.apache.http.client.entity.UrlEncodedFormEntity; 25 import org.apache.http.client.methods.HttpPost; 26 import org.apache.http.client.protocol.HttpClientContext; 27 import org.apache.http.config.Registry; 28 import org.apache.http.config.RegistryBuilder; 29 import org.apache.http.conn.ConnectTimeoutException; 30 import org.apache.http.conn.socket.ConnectionSocketFactory; 31 import org.apache.http.conn.socket.LayeredConnectionSocketFactory; 32 import org.apache.http.conn.socket.PlainConnectionSocketFactory; 33 import org.apache.http.conn.ssl.SSLConnectionSocketFactory; 34 import org.apache.http.impl.client.CloseableHttpClient; 35 import org.apache.http.impl.client.HttpClients; 36 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; 37 import org.apache.http.message.BasicNameValuePair; 38 import org.apache.http.protocol.HttpContext; 39 import org.apache.http.util.EntityUtils; 40  41 import com.alibaba.fastjson.JSONObject; 42  43 public class HttpClientUtil { 44      45     private static CloseableHttpClient httpClient = null; 46     static final int maxTotal = 5000;//最大并发数 47     static final int defaultMaxPerRoute = 1000;//每路最大并发数 48     static final int connectionRequestTimeout = 5000;// ms毫秒,从池中获取链接超时时间   49     static final int connectTimeout = 5000;// ms毫秒,建立链接超时时间   50     static final int socketTimeout = 30000;// ms毫秒,读取超时时间   51      52     private static CloseableHttpClient initHttpClient() { 53         ConnectionSocketFactory plainFactory = PlainConnectionSocketFactory.getSocketFactory(); 54         LayeredConnectionSocketFactory sslFactory = SSLConnectionSocketFactory.getSocketFactory(); 55         Registry
registry = RegistryBuilder.
create(). 56 register("http", plainFactory).register("https", sslFactory).build(); 57 PoolingHttpClientConnectionManager poolManager = new PoolingHttpClientConnectionManager(registry); 58 poolManager.setMaxTotal(maxTotal); 59 poolManager.setDefaultMaxPerRoute(defaultMaxPerRoute); 60 HttpRequestRetryHandler httpRetryHandler = new HttpRequestRetryHandler() { 61 @Override 62 public boolean retryRequest(IOException exception, int executionCount, HttpContext context) { 63 if(executionCount >= 2) { 64 return false; 65 } 66 if(exception instanceof NoHttpResponseException) { 67 return false; 68 } 69 if(exception instanceof SSLHandshakeException) { 70 return false; 71 } 72 if(exception instanceof InterruptedIOException) { 73 return false; 74 } 75 if(exception instanceof UnknownHostException) { 76 return false; 77 } 78 if(exception instanceof ConnectTimeoutException) { 79 return false; 80 } 81 if(exception instanceof SSLException) { 82 return false; 83 } 84 HttpClientContext clientContext = HttpClientContext.adapt(context); 85 HttpRequest request = clientContext.getRequest(); 86 if(!(request instanceof HttpEntityEnclosingRequest)) { 87 return true; 88 } 89 return false; 90 } 91 }; 92 RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(connectionRequestTimeout). 93 setConnectTimeout(connectTimeout).setSocketTimeout(socketTimeout).build(); 94 CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(poolManager).setDefaultRequestConfig(requestConfig). 95 setRetryHandler(httpRetryHandler).build(); 96 return closeableHttpClient; 97 } 98 99 public static CloseableHttpClient getHttpClient() {100 if(httpClient == null) {101 synchronized (HttpClientUtil.class) {102 if(httpClient == null) {103 httpClient = initHttpClient();104 }105 }106 }107 return httpClient;108 }109 110 public static JSONObject sendPost(JSONObject requestData) {111 JSONObject result = new JSONObject();112 String url = requestData.getString("url");113 JSONObject parameter = requestData.getJSONObject("parameter");114 try {115 HttpClient httpClient = HttpClientUtil.getHttpClient();116 HttpPost httpPost = new HttpPost();117 httpPost.setURI(new URI(url));118 List
param = new ArrayList
();119 for(Entry
entry : parameter.entrySet()) { 120 param.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));121 }122 httpPost.setEntity(new UrlEncodedFormEntity(param, Consts.UTF_8));123 HttpResponse response = httpClient.execute(httpPost);124 HttpEntity entity = response.getEntity();125 String responseBody = EntityUtils.toString(entity);126 int code = response.getStatusLine().getStatusCode();127 result.put("CODE", code);128 try {129 JSONObject responseJson = JSONObject.parseObject(responseBody);130 result.put("DATA", responseJson);131 } catch(Exception e) {132 result.put("DATA", responseBody);133 }134 httpPost.abort(); 135 httpPost.releaseConnection(); 136 } catch (Exception e) {137 e.printStackTrace();138 }139 return result;140 }141 142 }

 

转载地址:http://wgsia.baihongyu.com/

你可能感兴趣的文章
非常有趣的js
查看>>
Spring 单元测试
查看>>
品读Mybatis源码---(1)解析配置文件
查看>>
android获取设备分辨率的新方法
查看>>
函数式对象之自指向
查看>>
内建控制结构之变量范围
查看>>
我的友情链接
查看>>
解决Zabbix Grafana 2.5.0.1 不支持7day趋势数据显示
查看>>
JDBC为什么要使用PreparedStatement而不是Statement
查看>>
Cloud9 on Docker镜像发送
查看>>
图片交易平台Scoopshot获120万美元投资
查看>>
去掉JSON中值为null的
查看>>
我的友情链接
查看>>
职业考试的安排-2
查看>>
40个迹象表明你还是PHP菜鸟
查看>>
把程序员这条路走下去 .
查看>>
[Zephir官方文档翻译之四] 安装Zephir
查看>>
每天学一点Scala之内部类
查看>>
BWidget部件
查看>>
JavaScript强化教程 - 六步实现贪食蛇
查看>>