Servlet获取URL地址
Servlet获取URL地址这里来说说用Servlet获取URL地址。在HttpServletRequest类里,有以下六个取URL的函数:
getContextPath 取得项目名
getServletPath 取得Servlet名
getPathInfo 取得Servlet后的URL名,不包括URL参数
getRequestURL 取得不包括参数的URL
getRequestURI 取得不包括参数的URI,即去掉协议和服务器名的URL
具体如下图:
[img]http://dl2.iteye.com/upload/attachment/0123/2126/fb7938d3-348a-3cd9-8814-ab580689468c.png\[/img\]
相对应的函数的值如下:
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/>
* 联系:54871876@qq.com<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/>
* 联系:54871876@qq.com<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();
}
还没有评论,来说两句吧...