This commit is contained in:
RedKale
2016-03-17 09:42:24 +08:00
parent 580dd10053
commit 53b5504ed0
3 changed files with 28 additions and 16 deletions

View File

@@ -131,6 +131,7 @@
<!--
当Server为HTTP协议时, response节点才有效。
defcookie 节点: 当response里输出的cookie没有指定domain 和path时使用该节点的默认值。
如果addheader、setheader 的value值以request.parameters.开头则表示从request.parameters中获取对应的parameter值
如果addheader、setheader 的value值以request.headers.开头则表示从request.headers中获取对应的header值
例如下面例子是在Response输出header时添加两个header一个addHeader 一个setHeader
-->

View File

@@ -5,19 +5,19 @@
*/
package org.redkale.net.http;
import org.redkale.util.AnyValue.DefaultAnyValue;
import org.redkale.util.AnyValue.Entry;
import java.io.*;
import java.lang.reflect.*;
import java.net.*;
import java.nio.*;
import java.lang.reflect.Type;
import java.net.HttpCookie;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.nio.file.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.atomic.*;
import org.redkale.convert.json.*;
import java.util.concurrent.atomic.AtomicLong;
import org.redkale.convert.json.JsonConvert;
import org.redkale.net.*;
import org.redkale.util.AnyValue.DefaultAnyValue;
import org.redkale.util.AnyValue.Entry;
import org.redkale.util.*;
/**
@@ -494,7 +494,10 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
}
if (this.defaultAddHeaders != null) {
for (String[] headers : this.defaultAddHeaders) {
if (headers.length > 2) {
if (headers.length > 3) {
String v = request.getParameter(headers[2]);
if (v != null) this.header.addValue(headers[0], v);
} else if (headers.length > 2) {
String v = request.getHeader(headers[2]);
if (v != null) this.header.addValue(headers[0], v);
} else {
@@ -504,8 +507,12 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
}
if (this.defaultSetHeaders != null) {
for (String[] headers : this.defaultSetHeaders) {
if (headers.length > 2) {
this.header.setValue(headers[0], request.getHeader(headers[2]));
if (headers.length > 3) {
String v = request.getParameter(headers[2]);
if (v != null) this.header.setValue(headers[0], v);
} else if (headers.length > 2) {
String v = request.getHeader(headers[2]);
if (v != null) this.header.setValue(headers[0], v);
} else {
this.header.setValue(headers[0], headers[1]);
}

View File

@@ -5,13 +5,13 @@
*/
package org.redkale.net.http;
import java.net.*;
import java.nio.*;
import java.net.HttpCookie;
import java.nio.ByteBuffer;
import java.util.*;
import java.util.concurrent.atomic.*;
import java.util.concurrent.atomic.AtomicLong;
import org.redkale.net.*;
import org.redkale.util.*;
import org.redkale.watch.*;
import org.redkale.watch.WatchFactory;
/**
*
@@ -78,7 +78,9 @@ public final class HttpServer extends Server<String, HttpContext, HttpRequest, H
for (int i = 0; i < addHeaders.length; i++) {
String val = addHeaders[i].getValue("value");
if (val == null) continue;
if (val.startsWith("request.headers.")) {
if (val.startsWith("request.parameters.")) {
defaultAddHeaders.add(new String[]{addHeaders[i].getValue("name"), val, val.substring("request.parameters.".length()), null});
} else if (val.startsWith("request.headers.")) {
defaultAddHeaders.add(new String[]{addHeaders[i].getValue("name"), val, val.substring("request.headers.".length())});
} else if (val.startsWith("system.property.")) {
String v = System.getProperty(val.substring("system.property.".length()));
@@ -92,7 +94,9 @@ public final class HttpServer extends Server<String, HttpContext, HttpRequest, H
if (setHeaders.length > 0) {
for (int i = 0; i < setHeaders.length; i++) {
String val = setHeaders[i].getValue("value");
if (val != null && val.startsWith("request.headers.")) {
if (val != null && val.startsWith("request.parameters.")) {
defaultSetHeaders.add(new String[]{setHeaders[i].getValue("name"), val, val.substring("request.parameters.".length()), null});
} else if (val != null && val.startsWith("request.headers.")) {
defaultSetHeaders.add(new String[]{setHeaders[i].getValue("name"), val, val.substring("request.headers.".length())});
} else {
defaultSetHeaders.add(new String[]{setHeaders[i].getValue("name"), val});