假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下
String path =request.getContextPath();//项目名称
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
StringremoteAddress=request.getRemoteAddr();
StringservletPath=request.getServletPath();
StringrealPath=request.getRealPath("/");
StringremoteUser=request.getRemoteUser();
StringrequestURI=request.getRequestURI();
out.println("path:"+path+"");
out.println("basePath:"+basePath+"");
out.println("remoteAddr:"+remoteAddress+"");
out.println("servletPath:"+servletPath+"");
out.println("realPath:"+realPath+"");
out.println("remoteUser:"+remoteUser+"");
out.println("requestURI:"+requestURI+"");
结果:
path:/WebDemo
basePath:http://localhost:8683/WebDemo/
remoteAddr:127.0.0.1
servletPath:/index.jsp
realPath:D:\apache-tomcat-6.0.13\webapps\WebDemo\
remoteUser:null
requestURI:/WebDemo/index.jsp
basePath:http://localhost:8683/WebDemo/
remoteAddr:127.0.0.1
servletPath:/index.jsp
realPath:D:\apache-tomcat-6.0.13\webapps\WebDemo\
remoteUser:null
requestURI:/WebDemo/index.jsp
request.getHeader("Referer");//获得请求来源的全路径
//获取访问者IP
3 * 4 * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。 5 * 6 * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割), 7 * 如果还不存在则调用Request .getRemoteAddr()。
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
} else {
return request.getRemoteAddr();
}
}
import org.apache.commons.lang.StringUtils;
这个是在commons-lang-2.5.jar包里面..
本文介绍如何在Java Web应用中使用HttpServletRequest对象获取各种路径信息及客户端真实IP地址,特别是针对通过反向代理服务器的情况。
1512

被折叠的 条评论
为什么被折叠?



