package org.beanfuse.utils.web;
import java.net.URLEncoder;
import javax.mail.internet.MimeUtility;
import javax.servlet.http.HttpServletRequest;
public final class RequestUtils {
private RequestUtils() {
}
/**
* 获取远程访问的客户IP
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
/**
* 查找当前调用的action对应的.do<br>
* 例如http://localhost/myapp/dd.do 返回dd.do<br>
* http://localhost/myapp/dir/to/dd.do 返回dir/to/dd.do
*
* @return
*/
public static String getRequestURI(HttpServletRequest request) {
String actionName = request.getServletPath();
if (actionName.startsWith("/")) {
actionName = actionName.substring(1);
}
return actionName;
}
public static String encodeAttachName(HttpServletRequest request, String attch_name)
throws Exception {
String agent = request.getHeader("USER-AGENT");
String newName = null;
if (null != agent && -1 != agent.indexOf("MSIE")) {
newName = URLEncoder.encode(attch_name, "UTF-8");
} else if (null != agent && -1 != agent.indexOf("Mozilla")) {
newName = MimeUtility.encodeText(attch_name, "UTF-8", "B");
}
return newName;
}
}