diff --git a/src/org/redkale/net/http/HttpContext.java b/src/org/redkale/net/http/HttpContext.java index 8deda414b..3cd94165b 100644 --- a/src/org/redkale/net/http/HttpContext.java +++ b/src/org/redkale/net/http/HttpContext.java @@ -16,6 +16,7 @@ import org.redkale.util.*; import org.redkale.watch.*; /** + * HTTP服务的上下文对象 * *

* 详情见: https://redkale.org @@ -27,10 +28,10 @@ public class HttpContext extends Context { protected final SecureRandom random = new SecureRandom(); public HttpContext(long serverStartTime, Logger logger, ExecutorService executor, int bufferCapacity, ObjectPool bufferPool, - ObjectPool responsePool, int maxbody, Charset charset, InetSocketAddress address, PrepareServlet prepare, - WatchFactory watch, int readTimeoutSecond, int writeTimeoutSecond) { + ObjectPool responsePool, int maxbody, Charset charset, InetSocketAddress address, PrepareServlet prepare, + WatchFactory watch, int readTimeoutSecond, int writeTimeoutSecond) { super(serverStartTime, logger, executor, bufferCapacity, bufferPool, responsePool, maxbody, charset, - address, prepare, watch, readTimeoutSecond, writeTimeoutSecond); + address, prepare, watch, readTimeoutSecond, writeTimeoutSecond); random.setSeed(Math.abs(System.nanoTime())); } diff --git a/src/org/redkale/net/http/HttpPrepareServlet.java b/src/org/redkale/net/http/HttpPrepareServlet.java index 29e0e36b5..81deb7223 100644 --- a/src/org/redkale/net/http/HttpPrepareServlet.java +++ b/src/org/redkale/net/http/HttpPrepareServlet.java @@ -17,6 +17,8 @@ import org.redkale.util.*; import org.redkale.watch.*; /** + * HTTP Servlet的总入口,请求在HttpPrepareServlet中进行分流。 + * 一个HttpServer只有一个HttpPrepareServlet, 用于管理所有HttpServlet。 * *

* 详情见: https://redkale.org @@ -89,6 +91,7 @@ public class HttpPrepareServlet extends PrepareServlet * 详情见: https://redkale.org @@ -268,7 +269,7 @@ public class HttpResourceServlet extends HttpServlet { public void update() { if (this.file == null) return; - if (this.content != null) { + if (this.content != null) { this.servlet.cachedLength.add(0L - this.content.remaining()); this.content = null; } diff --git a/src/org/redkale/net/http/HttpServer.java b/src/org/redkale/net/http/HttpServer.java index 5144c3125..d2e2d4e8e 100644 --- a/src/org/redkale/net/http/HttpServer.java +++ b/src/org/redkale/net/http/HttpServer.java @@ -16,6 +16,7 @@ import org.redkale.util.*; import org.redkale.watch.WatchFactory; /** + * Http服务器 * *

* 详情见: https://redkale.org @@ -37,24 +38,88 @@ public final class HttpServer extends Server Service + * @param RestHttpServlet + * @param name Service的资源名 + * @param serviceType Service的类型 + * @param service Service对象 + * @param baseServletClass RestHttpServlet基类 + * @param prefix url前缀 + * + * @return RestHttpServlet + */ public RestHttpServlet addRestServlet(String name, Class serviceType, S service, Class baseServletClass, String prefix) { return addRestServlet(name, serviceType, service, baseServletClass, prefix, null); } + /** + * 添加RestHttpServlet + * + * @param Service + * @param RestHttpServlet + * @param name Service的资源名 + * @param serviceType Service的类型 + * @param service Service对象 + * @param baseServletClass RestHttpServlet基类 + * @param prefix url前缀 + * @param conf 配置信息 + * + * @return RestHttpServlet + */ public RestHttpServlet addRestServlet( final String name, Class serviceType, final S service, final Class baseServletClass, final String prefix, AnyValue conf) { RestHttpServlet servlet = null; diff --git a/src/org/redkale/net/http/MimeType.java b/src/org/redkale/net/http/MimeType.java index ad4301055..c3a76ae62 100644 --- a/src/org/redkale/net/http/MimeType.java +++ b/src/org/redkale/net/http/MimeType.java @@ -8,6 +8,7 @@ package org.redkale.net.http; import java.util.*; /** + * MimeType * *

* 详情见: https://redkale.org @@ -100,6 +101,7 @@ public class MimeType { contentTypes.put("oda", "application/oda"); contentTypes.put("ogg", "application/ogg"); contentTypes.put("out", "text/plain"); + contentTypes.put("pac", "application/x-javascript-config"); contentTypes.put("pbm", "image/x-portable-bitmap"); contentTypes.put("pct", "image/pict"); contentTypes.put("pdf", "application/pdf"); diff --git a/src/org/redkale/net/http/MultiContext.java b/src/org/redkale/net/http/MultiContext.java index f28fb7286..77195e4d8 100644 --- a/src/org/redkale/net/http/MultiContext.java +++ b/src/org/redkale/net/http/MultiContext.java @@ -15,6 +15,7 @@ import java.util.regex.*; import org.redkale.util.AnyValue.DefaultAnyValue; /** + * HTTP的文件上传请求的上下文对象 * *

* 详情见: https://redkale.org @@ -77,10 +78,21 @@ public final class MultiContext { return null; } + /** + * 判断请求是否包含上传文件 + * + * @return + */ public boolean isMultipart() { return this.boundary != null; } + /** + * 获取上传文件信息列表 + * + * @return + * @throws IOException + */ public Iterable parts() throws IOException { if (!isMultipart()) return emptyIterable; final String boundarystr = "--" + this.boundary; diff --git a/src/org/redkale/net/http/RestCookie.java b/src/org/redkale/net/http/RestCookie.java index f7c1ce899..a1d260727 100644 --- a/src/org/redkale/net/http/RestCookie.java +++ b/src/org/redkale/net/http/RestCookie.java @@ -22,9 +22,24 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Retention(RUNTIME) public @interface RestCookie { - String name(); //cookie名 + /** + * cookie名 + * + * @return String + */ + String name(); - int radix() default 10; //转换数字byte/short/int/long时所用的进制数, 默认10进制 + /** + * 转换数字byte/short/int/long时所用的进制数, 默认10进制 + * + * @return int + */ + int radix() default 10; - String comment() default ""; //备注描述 + /** + * 备注描述 + * + * @return String + */ + String comment() default ""; } diff --git a/src/org/redkale/net/http/RestHeader.java b/src/org/redkale/net/http/RestHeader.java index 28020a6f1..9c4f93c79 100644 --- a/src/org/redkale/net/http/RestHeader.java +++ b/src/org/redkale/net/http/RestHeader.java @@ -22,9 +22,24 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Retention(RUNTIME) public @interface RestHeader { - String name(); //参数名 + /** + * Header参数名 + * + * @return + */ + String name(); - int radix() default 10; //转换数字byte/short/int/long时所用的进制数, 默认10进制 + /** + * 转换数字byte/short/int/long时所用的进制数, 默认10进制 + * + * @return int + */ + int radix() default 10; - String comment() default ""; //备注描述 + /** + * 备注描述 + * + * @return String + */ + String comment() default ""; } diff --git a/src/org/redkale/net/http/RestMapping.java b/src/org/redkale/net/http/RestMapping.java index d8a13feea..54592ed0b 100644 --- a/src/org/redkale/net/http/RestMapping.java +++ b/src/org/redkale/net/http/RestMapping.java @@ -24,25 +24,60 @@ import static java.lang.annotation.RetentionPolicy.*; @Repeatable(RestMappings.class) public @interface RestMapping { - boolean ignore() default false; //是否屏蔽该方法的转换 + /** + * 是否屏蔽该方法的转换 + * + * @return boolean + */ + boolean ignore() default false; /** * 请求的方法名, 不能含特殊字符 * 默认为方法名的小写(若方法名以createXXX、updateXXX、deleteXXX、queryXXX、findXXX、existsXXX且XXXService为Service的类名将只截取XXX之前) * - * @return name + * @return String */ String name() default ""; - String comment() default ""; //备注描述, 对应@WebAction.comment + /** + * 备注描述, 对应@WebAction.comment + * + * @return String + */ + String comment() default ""; - boolean auth() default false; //是否鉴权,默认不鉴权, 对应@AuthIgnore + /** + * 是否鉴权,默认不鉴权, 对应@AuthIgnore + * + * @return boolean + */ + boolean auth() default false; - int actionid() default 0; //操作ID值,鉴权时用到, 对应@WebAction.actionid + /** + * 操作ID值,鉴权时用到, 对应@WebAction.actionid + * + * @return int + */ + int actionid() default 0; - int cacheseconds() default 0; // 结果缓存的秒数, 为0表示不缓存, 对应@HttpCacheable.seconds + /** + * 结果缓存的秒数, 为0表示不缓存, 对应@HttpCacheable.seconds + * + * @return int + */ + int cacheseconds() default 0; - String[] methods() default {};//允许方法(不区分大小写),如:GET/POST/PUT,为空表示允许所有方法, 对应@WebAction.methods + /** + * 允许方法(不区分大小写),如:GET/POST/PUT,为空表示允许所有方法, 对应@WebAction.methods + * + * @return String[] + */ + String[] methods() default {}; - String jsvar() default ""; //以application/javascript输出对象是指明js的对象名,该值存在时则忽略contentType()的值 + /** + * 以application/javascript输出对象是指明js的对象名,该值存在时则忽略contentType()的值 + * + * @return String + */ + String jsvar() default ""; } diff --git a/src/org/redkale/net/http/RestParam.java b/src/org/redkale/net/http/RestParam.java index 537bbd66a..f8a9c7ab4 100644 --- a/src/org/redkale/net/http/RestParam.java +++ b/src/org/redkale/net/http/RestParam.java @@ -26,11 +26,34 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; @Retention(RUNTIME) public @interface RestParam { - String name(); //参数名 name='&'表示当前用户; name='#'表示截取uri最后一段; name='#xxx:'表示从uri中/pipes/xxx:v/截取xxx:的值 + /** + * 参数名 n + * ame='&'表示当前用户; + * name='#'表示截取uri最后一段; + * name='#xxx:'表示从uri中/pipes/xxx:v/截取xxx:的值 + * + * @return String + */ + String name(); - int radix() default 10; //转换数字byte/short/int/long时所用的进制数, 默认10进制 + /** + * 转换数字byte/short/int/long时所用的进制数, 默认10进制 + * + * @return int + */ + int radix() default 10; - boolean required() default true; //参数是否必传 + /** + * 参数是否必传 + * + * @return boolean + */ + boolean required() default true; - String comment() default ""; //备注描述 + /** + * 备注描述 + * + * @return String + */ + String comment() default ""; } diff --git a/src/org/redkale/net/http/WebInitParam.java b/src/org/redkale/net/http/WebInitParam.java index 0803bcf7d..7151b99c2 100644 --- a/src/org/redkale/net/http/WebInitParam.java +++ b/src/org/redkale/net/http/WebInitParam.java @@ -10,7 +10,9 @@ import java.lang.annotation.*; /** * 功能同JSR 315 (java-servlet 3.0) 规范中的 @WebInitParam * - *

详情见: https://redkale.org + *

+ * 详情见: https://redkale.org + * * @author zhangjx */ @Target({ElementType.TYPE}) @@ -18,9 +20,24 @@ import java.lang.annotation.*; @Documented public @interface WebInitParam { + /** + * 参数名 + * + * @return String + */ String name(); + /** + * 参数值 + * + * @return String + */ String value(); + /** + * 参数描述 + * + * @return + */ String description() default ""; } diff --git a/src/org/redkale/net/http/WebServlet.java b/src/org/redkale/net/http/WebServlet.java index 757dd5790..967a09cef 100644 --- a/src/org/redkale/net/http/WebServlet.java +++ b/src/org/redkale/net/http/WebServlet.java @@ -21,15 +21,45 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) public @interface WebServlet { + /** + * HttpServlet资源名 + * + * @return String + */ String name() default ""; + /** + * 是否自动添加url前缀 + * + * @return boolean + */ boolean repair() default true; + /** + * url匹配规则 + * + * @return String[] + */ String[] value() default {}; + /** + * 模块ID,一个HttpServlet尽量只有提供一个模块的服务 + * + * @return int + */ int moduleid() default 0; + /** + * 参数 + * + * @return WebInitParam[] + */ WebInitParam[] initParams() default {}; - String comment() default ""; //备注描述 + /** + * 备注描述 + * + * @return String + */ + String comment() default ""; } diff --git a/src/org/redkale/util/Utility.java b/src/org/redkale/util/Utility.java index bc6d57130..b4a6cbdf0 100644 --- a/src/org/redkale/util/Utility.java +++ b/src/org/redkale/util/Utility.java @@ -175,6 +175,24 @@ public final class Utility { return news; } + /** + * 判断字符串是否包含指定的字符,包含返回true + * + * @param string 字符串 + * @param values 字符集合 + * + * @return boolean + */ + public static boolean contains(String string, char... values) { + if (string == null) return false; + for (char ch : Utility.charArray(string)) { + for (char ch2 : values) { + if (ch == ch2) return true; + } + } + return false; + } + /** * 删除掉字符串数组中包含指定的字符串 *