https://my.oschina.net/KelinM/blog/1925209
https://blog.csdn.net/u010096717/article/details/84558463
https://blog.csdn.net/ma_jiang/article/details/53636840
https://blog.csdn.net/qq_18495465/article/details/79248608
import org.springframework.util.StringUtils;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
/**
* @Author: JCccc
* @CreateTime: 2018-10-30
* @Description:
*/
public class SignUtils {
public String getTimestamp() {
//生成时间戳
long timestampLong =System.currentTimeMillis();
String timestampStr = String.valueOf(timestampLong);
return timestampStr;
}
public String getNonceStr(int length){
//生成随机字符串
String str="zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
Random random=new Random();
StringBuffer randomStr=new StringBuffer();
// 设置生成字符串的长度,用于循环
for(int i=0; i<length; ++i){
//从62个的数字或字母中选择
int number=random.nextInt(62);
//将产生的数字通过length次承载到sb中
randomStr.append(str.charAt(number));
}
//将承载的字符转换成字符串
return randomStr.toString();
}
//类似微信接口的签名生成方法
public String createSign(Map<String, String> params, String privateKey){
StringBuilder sb = new StringBuilder();
// 将参数以参数名的字典升序排序
Map<String, String> sortParams = new TreeMap<String, String>(params);
// 遍历排序的字典,并拼接"key=value"格式
for (Map.Entry<String, String> entry : sortParams.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().trim();
if (!StringUtils.isEmpty(value))
sb.append("&").append(key).append("=").append(value);
}
String stringA = sb.toString().replaceFirst("&","");
//String stringSignTemp = stringA + "&"+"appkey="+privateKey;
//将签名使用MD5加密并全部字母变为大写
// String signValue = Md5Encrypt.md5(stringSignTemp).toUpperCase();
// System.out.println("stringA+privateKey后MD5加密+转换全部大写生成sign为: "+signValue);
return stringA ;
}
}
package com.awj.mall.restfulapi.common.util;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import com.google.common.collect.Maps;
import com.awj.mall.restfulapi.modular.base.interceptor.AuthInterceptor;
/**
* Request请求的工具类
* @author Administrator
*
*/
public class RequestUtil {
/**
* 获取ip
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
public static String getURI(HttpServletRequest request){
return request.getRequestURI();
}
public static String getURL(HttpServletRequest request){
return request.getRequestURL().toString();
}
/**
* 获取key值获取request中的value
*
* @param request
* @param key
* @return
*/
public static String getParam(HttpServletRequest request,String key){
return request.getParameter(key);
}
/**
* @Author: hanweisheng
* @Description: 获取request请求的map
* @method:
* @params:
* @Date: Created in 2018/4/13 14:21
*/
public static Map<String, String> getRequestMap(HttpServletRequest req) {
Map<String, String> params = Maps.newHashMap();
Map<String, String[]> requestParams = req.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
return params;
}
public static String getRequestStr(HttpServletRequest req, String excludeStr) {
StringBuffer buffer = new StringBuffer();
Map<String, String[]> requestParams = req.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
if (name.equals(excludeStr)) {
continue;
}
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
buffer.append(name).append("=").append(valueStr).append("&");
}
if (buffer.length() > 0) {
buffer.deleteCharAt(buffer.length() - 1);
}
return buffer.toString();
}
public static String getOrderRequestStr(HttpServletRequest req, String excludeStr){
List<String> list = new ArrayList<String>();
Map<String, String[]> requestParams = req.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
if (name.equals(excludeStr)) {
continue;
}
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
list.add(name+"="+valueStr);
}
StringBuffer buffer = new StringBuffer();
if(list.size()>0){
Collections.sort(list);
for (int i = 0; i <list.size() ; i++) {
buffer .append( (i == list.size() - 1) ? list.get(i) : list.get(i) + "&");
}
}
return buffer.toString();
}
public static String getOrderStr(Map<String,String> map, String excludeStr){
List<String> list = new ArrayList<String>();
for (Iterator<String> iter = map.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
if (name.equals(excludeStr)) {
continue;
}
String value = map.get(name);
list.add(name+"="+value);
}
StringBuffer buffer = new StringBuffer();
if(list.size()>0){
Collections.sort(list);
for (int i = 0; i <list.size() ; i++) {
buffer .append( (i == list.size() - 1) ? list.get(i) : list.get(i) + "&");
}
}
return buffer.toString();
}
public static String getUriPath(HttpServletRequest req) {
String uri = req.getRequestURI();
String contextPath = req.getServletContext().getContextPath();
if (!StringUtils.isEmpty(contextPath)) {
uri = uri.replaceFirst(contextPath, "");
}
return uri;
}
}