
artoria.servlet.RequestUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of artoria-extend Show documentation
Show all versions of artoria-extend Show documentation
Artoria is a java technology framework based on the facade pattern.
The newest version!
package artoria.servlet;
import artoria.util.ArrayUtils;
import artoria.util.CollectionUtils;
import artoria.util.MapUtils;
import artoria.util.StringUtils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import static artoria.common.constant.Symbols.COMMA;
import static artoria.common.constant.Words.UNKNOWN;
/**
* Request tools.
* @author Kahle
*/
public class RequestUtils {
public static String getReferer(HttpServletRequest request) {
if (request == null) { return null; }
String referer = request.getHeader("Referer");
return StringUtils.isBlank(referer) ? null : referer;
}
public static String getUserAgent(HttpServletRequest request) {
if (request == null) { return null; }
String userAgent = request.getHeader("User-Agent");
return StringUtils.isBlank(userAgent) ? null : userAgent;
}
public static String getRealAddress(HttpServletRequest request) {
String remoteAddr = RequestUtils.getRemoteAddress(request);
if (StringUtils.isBlank(remoteAddr)) { return remoteAddr; }
if (!remoteAddr.contains(COMMA)) { return remoteAddr; }
String[] split = remoteAddr.trim().split(COMMA);
remoteAddr = split[split.length - 1];
if (StringUtils.isNotBlank(remoteAddr)) {
remoteAddr = remoteAddr.trim();
}
return remoteAddr;
}
public static String getRemoteAddress(HttpServletRequest request) {
if (request == null) { return null; }
String address = request.getHeader("X-Forwarded-For");
if(StringUtils.isBlank(address) || UNKNOWN.equalsIgnoreCase(address)) {
address = request.getHeader("X-Real-IP");
}
if(StringUtils.isBlank(address) || UNKNOWN.equalsIgnoreCase(address)) {
address = request.getHeader("Proxy-Client-IP");
}
if(StringUtils.isBlank(address) || UNKNOWN.equalsIgnoreCase(address)) {
address = request.getHeader("WL-Proxy-Client-IP");
}
if(StringUtils.isBlank(address) || UNKNOWN.equalsIgnoreCase(address)) {
address = request.getHeader("HTTP_CLIENT_IP");
}
if(StringUtils.isBlank(address) || UNKNOWN.equalsIgnoreCase(address)) {
address = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if(StringUtils.isBlank(address) || UNKNOWN.equalsIgnoreCase(address)) {
address = request.getRemoteAddr();
}
return address;
}
public static Map getCookieMap(Cookie[] cookies) {
Map cookieMap = new LinkedHashMap();
if (ArrayUtils.isEmpty(cookies)) { return cookieMap; }
for (Cookie cookie : cookies) {
if (cookie == null) { continue; }
String cookieValue = cookie.getValue();
String cookieName = cookie.getName();
cookieMap.put(cookieName, cookieValue);
}
return cookieMap;
}
public static RequestBean getRequestBean(HttpServletRequest request) {
if (request == null) { return null; }
RequestBean requestBean = new RequestBean();
requestBean.setReceiveTime(new Date());
StringBuffer requestURL = request.getRequestURL();
requestBean.setRequestURL(String.valueOf(requestURL));
requestBean.setMethod(request.getMethod());
requestBean.setContentType(request.getContentType());
requestBean.setRemoteAddress(request.getRemoteAddr());
int remotePort = request.getRemotePort();
requestBean.setRemotePort(String.valueOf(remotePort));
requestBean.setCharacterEncoding(request.getCharacterEncoding());
Map cookieMap = getCookieMap(request.getCookies());
requestBean.setCookies(cookieMap);
Map> headers = new LinkedHashMap>();
Enumeration headerNameEnumeration = request.getHeaderNames();
while (headerNameEnumeration.hasMoreElements()) {
String headerName = headerNameEnumeration.nextElement();
if (StringUtils.isBlank(headerName)) { continue; }
Enumeration valEnumeration = request.getHeaders(headerName);
List list = new ArrayList();
CollectionUtils.addAll(list, valEnumeration);
headers.put(headerName, list);
}
requestBean.setHeaders(headers);
Map> parameters = new LinkedHashMap>();
Map parameterMap = request.getParameterMap();
if (MapUtils.isNotEmpty(parameterMap)) {
for (Map.Entry entry : parameterMap.entrySet()) {
if (entry == null) { continue; }
String[] val = entry.getValue();
String key = entry.getKey();
List list = new ArrayList();
Collections.addAll(list, val);
parameters.put(key, list);
}
}
requestBean.setParameters(parameters);
return requestBean;
}
public static String findCookieValue(HttpServletRequest request, String cookieName) {
if (request == null) { return null; }
if (StringUtils.isBlank(cookieName)) {
return null;
}
Cookie[] cookies = request.getCookies();
if (ArrayUtils.isEmpty(cookies)) {
return null;
}
for (Cookie cookie : cookies) {
if (cookie == null) { continue; }
String name = cookie.getName();
if (cookieName.equalsIgnoreCase(name)) {
return cookie.getValue();
}
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy