Qchen 11 місяців тому
батько
коміт
0d6e991bd7

+ 10 - 0
commons/pom.xml

@@ -104,6 +104,16 @@
             <version>2.0.1.Final</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>3.1</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-codec-http</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 101 - 0
commons/src/main/java/com/jzg/commons/entity/enums/HttpConstants.java

@@ -0,0 +1,101 @@
+package com.jzg.commons.entity.enums;
+
+/**
+ * @author quchen
+ * @date 2025/9/12 14:39
+ */
+
+public class HttpConstants {
+    /** ws请求匹配头 */
+    public static final String DEFAULT_FILTER_PATH = "/ws/";
+
+    /** ws请求端口偏移 */
+    public static final int WS_PORT = 10;
+
+    /** 字符集 */
+    public enum Character {
+
+        UTF8("UTF-8", "UTF-8"), GBK("GBK", "GBK");
+
+        private final String code;
+        private final String info;
+
+        Character(String code, String info) {
+            this.code = code;
+            this.info = info;
+        }
+
+        public String getCode() {
+            return code;
+        }
+
+        public String getInfo() {
+            return info;
+        }
+    }
+
+    /** 请求类型 */
+    public enum Type {
+
+        LOOKUP_RMI("rmi:", "RMI 远程方法调用"),
+        LOOKUP_LDAP("ldap:", "LDAP 远程方法调用"),
+        LOOKUP_LDAPS("ldaps:", "LDAPS 远程方法调用"),
+        HTTP("http://", "http请求"),
+        HTTPS("https://", "https请求"),
+        WS("ws://", "ws请求"),
+        WSS("wss://", "wss请求");
+
+        private final String code;
+        private final String info;
+
+        Type(String code, String info) {
+            this.code = code;
+            this.info = info;
+        }
+
+        public String getCode() {
+            return code;
+        }
+
+        public String getInfo() {
+            return info;
+        }
+    }
+
+    /** 返回状态码 */
+    public enum Status {
+
+        SUCCESS(200, "操作成功"),
+        CREATED(201, "对象创建成功"),
+        ACCEPTED(202, "请求已经被接受"),
+        NO_CONTENT(204, "操作已经执行成功,但是没有返回数据"),
+        MOVED_PERM(301, "资源已被移除"),
+        SEE_OTHER(303, "重定向"),
+        NOT_MODIFIED(304, "资源没有被修改"),
+        BAD_REQUEST(400, "参数列表错误(缺少,格式不匹配)"),
+        UNAUTHORIZED(401, "未授权"),
+        FORBIDDEN(403, "访问受限,授权过期"),
+        NOT_FOUND(404, "资源,服务未找到"),
+        BAD_METHOD(405, "不允许的http方法"),
+        CONFLICT(409, "资源冲突,或者资源被锁"),
+        UNSUPPORTED_TYPE(415, "不支持的数据,媒体类型"),
+        ERROR(500, "系统内部错误"),
+        NOT_IMPLEMENTED(501, "接口未实现");
+
+        private final int code;
+        private final String info;
+
+        Status(int code, String info) {
+            this.code = code;
+            this.info = info;
+        }
+
+        public int getCode() {
+            return code;
+        }
+
+        public String getInfo() {
+            return info;
+        }
+    }
+}

+ 247 - 0
commons/src/main/java/com/jzg/commons/util/http/HttpServletUtils.java

@@ -0,0 +1,247 @@
+package com.jzg.commons.util.http;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.enums.HttpConstants;
+import com.jzg.commons.text.Convert;
+import com.jzg.commons.util.StringUtils;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import reactor.core.publisher.Mono;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.Enumeration;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+    /**
+     * 客户端工具类
+     *
+     * @author ruoyi
+     */public class HttpServletUtils {
+        /**
+         * 获取String参数
+         */
+        public static String getParameter(String name) {
+            return getRequest().getParameter(name);
+        }
+
+        /**
+         * 获取String参数
+         */
+        public static String getParameter(String name, String defaultValue) {
+            return Convert.toStr(getRequest().getParameter(name), defaultValue);
+        }
+
+        /**
+         * 获取Integer参数
+         */
+        public static Integer getParameterToInt(String name) {
+            return Convert.toInt(getRequest().getParameter(name));
+        }
+
+        /**
+         * 获取Integer参数
+         */
+        public static Integer getParameterToInt(String name, Integer defaultValue) {
+            return Convert.toInt(getRequest().getParameter(name), defaultValue);
+        }
+
+        /**
+         * 获取request
+         */
+        public static HttpServletRequest getRequest() {
+            return getRequestAttributes() == null ? null:getRequestAttributes().getRequest();
+        }
+
+        /**
+         * 获取response
+         */
+        public static HttpServletResponse getResponse() {
+            return getRequestAttributes().getResponse();
+        }
+
+        /**
+         * 获取session
+         */
+        public static HttpSession getSession() {
+            return getRequest().getSession();
+        }
+
+        public static ServletRequestAttributes getRequestAttributes() {
+            RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
+            if(attributes == null){
+                return null;
+            }
+            return (ServletRequestAttributes) attributes;
+        }
+
+//        /**
+//         * 将字符串渲染到客户端
+//         *
+//         * @param response 渲染对象
+//         * @param string   待渲染的字符串
+//         * @return null
+//         */
+//        public static String renderString(HttpServletResponse response, String string) {
+//            try {
+//                response.setStatus(200);
+//                response.setContentType("application/json");
+//                response.setCharacterEncoding("utf-8");
+//                response.getWriter().print(string);
+//            } catch (IOException e) {
+//                e.printStackTrace();
+//            }
+//            return null;
+//        }
+//
+//
+//        public static String getHeader(HttpServletRequest request, String name)
+//        {
+//            String value = request.getHeader(name);
+//            if (StringUtils.isEmpty(value))
+//            {
+//                return StringUtils.EMPTY;
+//            }
+//            return urlDecode(value);
+//        }
+//
+//        public static Map<String, String> getHeaders(HttpServletRequest request) {
+//            Map<String, String> map = new LinkedHashMap<>();
+//            Enumeration<String> enumeration = request.getHeaderNames();
+//            if (enumeration != null) {
+//                while (enumeration.hasMoreElements()) {
+//                    String key = enumeration.nextElement();
+//                    String value = request.getHeader(key);
+//                    map.put(key, value);
+//                }
+//            }
+//            return map;
+//        }
+//
+//        /**
+//         * 内容解码
+//         *
+//         * @param str 内容
+//         * @return 解码后的内容
+//         */
+//        public static String urlDecode(String str) {
+//            try {
+//                return URLDecoder.decode(str, HttpConstants.Character.UTF8.getCode());
+//            } catch (UnsupportedEncodingException e) {
+//                return StringUtils.EMPTY;
+//            }
+//        }
+//
+//
+//        /**
+//         * 是否是Ajax异步请求
+//         *
+//         * @param request
+//         */
+//        public static boolean isAjaxRequest(HttpServletRequest request) {
+//            String accept = request.getHeader("accept");
+//            if (accept != null && accept.indexOf("application/json") != -1) {
+//                return true;
+//            }
+//
+//            String xRequestedWith = request.getHeader("X-Requested-With");
+//            if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) {
+//                return true;
+//            }
+//
+//            String uri = request.getRequestURI();
+//            if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) {
+//                return true;
+//            }
+//
+//            String ajax = request.getParameter("__ajax");
+//            if (StringUtils.inStringIgnoreCase(ajax, "json", "xml")) {
+//                return true;
+//            }
+//            return false;
+//        }
+//
+//        /**
+//         * 设置webflux模型响应
+//         *
+//         * @param response ServerHttpResponse
+//         * @param value    响应内容
+//         * @return Mono<Void>
+//         */
+//        public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value) {
+//            return webFluxResponseWriter(response, HttpStatus.OK, value, 1);
+//        }
+//
+//        /**
+//         * 设置webflux模型响应
+//         *
+//         * @param response ServerHttpResponse
+//         * @param code     响应状态码
+//         * @param value    响应内容
+//         * @return Mono<Void>
+//         */
+//        public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, Object value, int code) {
+//            return webFluxResponseWriter(response, HttpStatus.OK, value, code);
+//        }
+//
+//        /**
+//         * 设置webflux模型响应
+//         *
+//         * @param response ServerHttpResponse
+//         * @param status   http状态码
+//         * @param code     响应状态码
+//         * @param value    响应内容
+//         * @return Mono<Void>
+//         */
+//        public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value,
+//                                                       int code) {
+//            return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code);
+//        }
+//
+//        /**
+//         * 设置webflux模型响应
+//         *
+//         * @param response    ServerHttpResponse
+//         * @param contentType content-type
+//         * @param status      http状态码
+//         * @param code        响应状态码
+//         * @param value       响应内容
+//         * @return Mono<Void>
+//         */
+//        public static Mono<Void> webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status,
+//                                                       Object value, int code) {
+//            response.setStatusCode(status);
+//            response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType);
+//            R<?> result = R.fail(code, value.toString());
+//            DataBuffer dataBuffer = response.bufferFactory().wrap(JSONObject.toJSONString(result).getBytes());
+//            return response.writeWith(Mono.just(dataBuffer));
+//        }
+//
+//        /**
+//         * 内容编码
+//         *
+//         * @param str 内容
+//         * @return 编码后的内容
+//         */
+//        public static String urlEncode(String str) {
+//            try {
+//                return URLEncoder.encode(str, "UTF-8");
+//            } catch (UnsupportedEncodingException e) {
+//                return StringUtils.EMPTY;
+//            }
+//        }
+
+    }
+