HttpServlet提供finish404、finish405的可定制化接口
This commit is contained in:
@@ -300,8 +300,8 @@
|
||||
<response>
|
||||
<content-type plain="text/plain; charset=utf-8" json="application/json; charset=utf-8"/>
|
||||
<defcookie domain="" path=""/>
|
||||
<addheader name="Access-Control-Allow-Origin" value="request.headers.Origin" />
|
||||
<setheader name="Access-Control-Allow-Headers" value="request.headers.Access-Control-Request-Headers"/>
|
||||
<addheader name="Access-Control-Allow-Origin" value="request.headers.Origin" /> <!-- 可多节点 -->
|
||||
<setheader name="Access-Control-Allow-Headers" value="request.headers.Access-Control-Request-Headers"/> <!-- 可多节点 -->
|
||||
<setheader name="Access-Control-Allow-Credentials" value="true"/>
|
||||
<options auto="true" />
|
||||
<date period="0" />
|
||||
|
||||
@@ -194,7 +194,7 @@ public class HttpResourceServlet extends HttpServlet {
|
||||
String uri = request.getRequestURI();
|
||||
if (uri.contains("../")) {
|
||||
if (logger.isLoggable(Level.FINEST)) logger.log(Level.FINEST, "Not found resource (404) be " + uri + ", request = " + request);
|
||||
response.finish404();
|
||||
finish404(request, response);
|
||||
return;
|
||||
}
|
||||
if (locationRewrites != null) {
|
||||
@@ -217,7 +217,7 @@ public class HttpResourceServlet extends HttpServlet {
|
||||
String suri = uri.toLowerCase();
|
||||
for (String suffix : renderSuffixs) {
|
||||
if (suri.endsWith(suffix)) {
|
||||
response.finish404();
|
||||
finish404(request, response);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -231,7 +231,7 @@ public class HttpResourceServlet extends HttpServlet {
|
||||
}
|
||||
if (entry == null) {
|
||||
if (logger.isLoggable(Level.FINER)) logger.log(Level.FINER, "Not found resource (404), url = " + request.getRequestURI());
|
||||
response.finish404();
|
||||
finish404(request, response);
|
||||
} else {
|
||||
//file = null 表示资源内容在内存而不是在File中
|
||||
//file = null 时必须传 filename
|
||||
@@ -288,7 +288,7 @@ public class HttpResourceServlet extends HttpServlet {
|
||||
int pos;
|
||||
while ((pos = in.read(bytes)) != -1) {
|
||||
out.put(bytes, 0, pos);
|
||||
}
|
||||
}
|
||||
this.servlet = servlet;
|
||||
this.file = null;
|
||||
this.filename = filename;
|
||||
@@ -307,7 +307,7 @@ public class HttpResourceServlet extends HttpServlet {
|
||||
if (this.servlet.cachedLength.longValue() + length > this.servlet.cachelimit) return; //超过缓存总容量
|
||||
try {
|
||||
FileInputStream in = new FileInputStream(file);
|
||||
ByteArray out = new ByteArray((int) file.length());
|
||||
ByteArray out = new ByteArray((int) file.length());
|
||||
byte[] bytes = new byte[10240];
|
||||
int pos;
|
||||
while ((pos = in.read(bytes)) != -1) {
|
||||
|
||||
@@ -28,10 +28,10 @@ import org.redkale.util.*;
|
||||
*/
|
||||
public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse> {
|
||||
|
||||
@Deprecated //@since 2.8.0
|
||||
@Deprecated //@deprecated 2.8.0
|
||||
public static final int RET_SERVER_ERROR = 1200_0001;
|
||||
|
||||
@Deprecated //@since 2.8.0
|
||||
@Deprecated //@deprecated 2.8.0
|
||||
public static final int RET_METHOD_ERROR = 1200_0002;
|
||||
|
||||
String _actionSimpleMappingUrl; //只给HttpActionServlet使用,_actionSimpleMappingUrl不能包含正则表达式,比如 /json /createRecord, 不能是 /user/**
|
||||
@@ -53,7 +53,7 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
||||
ActionEntry entry = request.actionEntry;
|
||||
if (entry.rpconly) {
|
||||
if (!request.rpc) {
|
||||
response.finish(404, null);
|
||||
finish404(request, response);
|
||||
return;
|
||||
} else if (request.rpcAuthenticator != null) {
|
||||
if (!request.rpcAuthenticator.auth(request, response)) {
|
||||
@@ -84,7 +84,7 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
||||
ActionEntry entry = request.actionEntry;
|
||||
if (!entry.checkMethod(request.getMethod())) {
|
||||
//response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error"));
|
||||
response.finish405();
|
||||
finish405(request, response);
|
||||
return;
|
||||
}
|
||||
request.moduleid = entry.moduleid;
|
||||
@@ -103,7 +103,7 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
||||
ActionEntry entry = en.getValue();
|
||||
if (!entry.checkMethod(request.getMethod())) {
|
||||
//response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error"));
|
||||
response.finish405();
|
||||
finish405(request, response);
|
||||
return;
|
||||
}
|
||||
request.actionEntry = entry;
|
||||
@@ -119,7 +119,7 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
||||
return;
|
||||
}
|
||||
}
|
||||
response.finish404();
|
||||
finish404(request, response);
|
||||
//throw new IOException(this.getClass().getName() + " not found method for URI(" + request.getRequestURI() + ")");
|
||||
}
|
||||
};
|
||||
@@ -147,6 +147,32 @@ public class HttpServlet extends Servlet<HttpContext, HttpRequest, HttpResponse>
|
||||
public void postStart(HttpContext context, AnyValue config) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 提供404状态码的可定制接口
|
||||
*
|
||||
* @since 2.8.0
|
||||
* @param request HttpRequest
|
||||
* @param response HttpResponse
|
||||
*
|
||||
* @throws IOException IOException
|
||||
*/
|
||||
protected void finish404(HttpRequest request, HttpResponse response) throws IOException {
|
||||
response.finish404();
|
||||
}
|
||||
|
||||
/**
|
||||
* 提供405状态码的可定制接口
|
||||
*
|
||||
* @since 2.8.0
|
||||
* @param request HttpRequest
|
||||
* @param response HttpResponse
|
||||
*
|
||||
* @throws IOException IOException
|
||||
*/
|
||||
protected void finish405(HttpRequest request, HttpResponse response) throws IOException {
|
||||
response.finish405();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 预执行方法,在execute方法之前运行,设置当前用户信息,或者加入常规统计和基础检测,例如 : <br>
|
||||
|
||||
Reference in New Issue
Block a user