浏览代码

新增工具

zh.sqy 9 年之前
父节点
当前提交
1149c6fca3

+ 49 - 0
hsweb-web-core/src/main/java/org/hsweb/web/utils/RandomUtil.java

@@ -0,0 +1,49 @@
+package org.hsweb.web.utils;
+
+import java.util.Random;
+import java.util.UUID;
+
+/**
+ * 随机数工具,用于产生随机数,随机密码等
+ */
+public class RandomUtil {
+    private static final Random random = new Random();
+
+    public static Random getRandom() {
+        return random;
+    }
+
+    static char[] chars = {
+            'a', 'b', 'c', 'd', 'e', 'f', 'g',
+            'h', 'i', 'j', 'k', 'l', 'm', 'n',
+            'o', 'p', 'q', 'r', 's', 't', 'u',
+            'v', 'w', 'x', 'y', 'z',
+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+            'A', 'B', 'C', 'D', 'E', 'F', 'G',
+            'H', 'I', 'J', 'K', 'L', 'M', 'N',
+            'O', 'P', 'Q', 'R', 'S', 'T', 'U',
+            'V', 'W', 'X', 'Y', 'Z'
+    };
+
+    /**
+     * 随机生成由0-9a-zA-Z组合而成的字符串
+     *
+     * @param len 字符串长度
+     * @return 生成结果
+     */
+    public static String randomChar(int len) {
+        StringBuffer shortBuffer = new StringBuffer();
+        String uuid = UUID.randomUUID().toString().replace("-", "");
+        for (int i = 0; i < len; i++) {
+            String str = uuid.substring(i * 4, i * 4 + 4);
+            int x = Integer.parseInt(str, 16);
+            shortBuffer.append(chars[x % 0x3E]);
+        }
+        return shortBuffer.toString();
+    }
+
+    public static String randomChar() {
+        return randomChar(8);
+    }
+
+}

+ 135 - 0
hsweb-web-core/src/main/java/org/hsweb/web/utils/WebUtil.java

@@ -0,0 +1,135 @@
+package org.hsweb.web.utils;
+
+import org.hsweb.web.bean.po.user.User;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.util.Enumeration;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Web常用工具集,用于获取当前登录用户,请求信息等
+ * Created by 浩 on 2015-08-25 0025.
+ */
+public class WebUtil {
+
+    /**
+     * 尝试获取当前请求的HttpServletRequest实例
+     *
+     * @return HttpServletRequest
+     */
+    public static HttpServletRequest getHttpServletRequest() {
+        try {
+            return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    /**
+     * 尝试获取当前登录的用户(基于ThreadLocal)
+     *
+     * @return 当前登录的用户
+     */
+    public static User getLoginUser() {
+        return getLoginUser(getHttpServletRequest());
+    }
+
+    /**
+     * 在HttpSession中获取当前登录的用户
+     *
+     * @param session HttpSession
+     * @return 当前登录的用户
+     */
+    public static User getLoginUser(HttpSession session) {
+        try {
+            return (User) session.getAttribute("user");
+        } catch (Exception e) {
+        }
+        return null;
+    }
+
+    /**
+     * 在HttpServletRequest中获取当前登录的用户
+     *
+     * @param request HttpServletRequest
+     * @return 当前登录的用户
+     */
+    public static User getLoginUser(HttpServletRequest request) {
+        if (request == null) return null;
+        return getLoginUser(request.getSession());
+    }
+
+    public static Map<String, String> getHeaders(HttpServletRequest request) {
+        Map<String, String> map = new LinkedHashMap<>();
+        Enumeration<String> enumeration = request.getHeaderNames();
+        while (enumeration.hasMoreElements()) {
+            String key = enumeration.nextElement();
+            String value = request.getHeader(key);
+            map.put(key, value);
+        }
+        return map;
+    }
+
+    /**
+     * 解析参数列表为map
+     *
+     * @param request request请求对象
+     * @return 参数集合
+     */
+    public static Map<String, String> getParams(HttpServletRequest request) {
+        Map<String, String[]> map = request.getParameterMap();
+        Map<String, String> param = new LinkedHashMap<>();
+        for (Map.Entry<String, String[]> entry : map.entrySet()) {
+            String key = entry.getKey();
+            String[] varr = entry.getValue();
+            StringBuilder builder = new StringBuilder();
+            for (int i = 0; i < varr.length; i++) {
+                String var = varr[i];
+                if (i != 0) builder.append(",");
+                builder.append(var);
+            }
+            param.put(key, builder.toString());
+        }
+        return param;
+    }
+
+    /**
+     * 获取请求客户端的真实ip地址
+     *
+     * @param request 请求对象
+     * @return ip地址
+     */
+    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("X-Real-IP");
+        }
+        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;
+    }
+
+    /**
+     * web应用绝对路径
+     *
+     * @param request 请求对象
+     * @return 绝对路径
+     */
+    public static String getBasePath(HttpServletRequest request) {
+        String path = request.getContextPath();
+        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
+        return basePath;
+    }
+
+}