/**
* Created with IntelliJ IDEA.
* User: Ryan
* Date: 14-2-11
* Time: 上午11:33
*/
public class ForwardFilter implements Filter {
private String forwardTo;
@Override
public void init(FilterConfig config) throws ServletException {
forwardTo = config.getInitParameter("to");
if (null == forwardTo) {
throw new RuntimeException("you must set forward to in init parameter.");
}
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
request.setCharacterEncoding("utf-8");
// 获取请求路径
String serverName = request.getServerName();
int end = serverName.indexOf(forwardTo);
String path = request.getRequestURI();
String requestURI = "http://" + forwardTo + path;
if (end == -1 || end == 0) {
if ("get".equalsIgnoreCase(request.getMethod())) {
String queryString = (request.getQueryString() == null ? "" : "?" + request.getQueryString());
response.setStatus(301);
response.setHeader("Location", requestURI + queryString);
response.setHeader("Connection", "close");
} else {
List list = new ArrayList();
Map pms = request.getParameterMap();
if (pms != null && !pms.isEmpty()) {
for (Object key : pms.keySet()) {
Object val = pms.get(key);
if (val instanceof String[]) {
String[] values = (String[]) val;
for (String value : values) {
list.add(new BasicNameValuePair(key.toString(), value));
}
} else {
list.add(new BasicNameValuePair(key.toString(), val.toString()));
}
}
}
try {
// 实现将请求的参数封装到表单中,请求体重
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, "utf-8");