getContextPath 取得项目名
getServletPath 取得Servlet名
getPathInfo 取得Servlet后的URL名,不包括URL参数
getRequestURL 取得不包括参数的URL
getRequestURI 取得不包括参数的URI,即去掉协议和服务器名的URL
具体如下图:
![](http://dl2.iteye.com/upload/attachment/0123/2126/fb7938d3-348a-3cd9-8814-ab580689468c.png)
相对应的函数的值如下:
getContextPath:/ServletTest
getServletPath:/main
getPathInfo:/index/testpage/test
getRequestURL:http://localhost:8080/ServletTest/main/index/testpage/test
getRequestURI:/ServletTest/main/index/testpage/test
以上内容转自https://my.oschina.net/idiotsky/blog/198352
获取完整(包含参数)的地址、及相对地址的方法:
/** * 获取Servlet的全地址,包括参数等信息 * * @param request * 作者:wallimn<br/> * 时间:2017年2月21日<br/> * 联系:[email protected]<br/> */ protected String getRequestURL(HttpServletRequest req) { StringBuffer url = req.getRequestURL(); Map<String, String[]> map = req.getParameterMap(); boolean bFirst = true; for (Entry<String, String[]> entry : map.entrySet()) { for (String v : entry.getValue()) { if (bFirst == true) { url.append("?"); bFirst = false; } else { url.append("&"); } url.append(entry.getKey()).append("=").append(v); } } return url.toString(); } /** * 返回短地址,不包含协议、主机、端口、上下文等信息。 * * @param request * 作者:wallimn<br/> * 时间:2017年2月21日<br/> * 联系:[email protected]<br/> */ protected String getRequestShortURL(HttpServletRequest req) { StringBuffer url = new StringBuffer(); String str = req.getServletPath(); if (str != null) url.append(req.getServletPath()); str = req.getPathInfo();// 这个值有时为null if (str != null) url.append(req.getPathInfo()); Map<String, String[]> map = req.getParameterMap(); boolean bFirst = true; for (Entry<String, String[]> entry : map.entrySet()) { for (String v : entry.getValue()) { if (bFirst == true) { url.append("?"); bFirst = false; } else { url.append("&"); } url.append(entry.getKey()).append("=").append(v); } } return url.toString(); }