Servlet获取URL地址

Servlet获取URL地址这里来说说用Servlet获取URL地址。在HttpServletRequest类里,有以下六个取URL的函数:

getContextPath 取得项目名
getServletPath 取得Servlet名
getPathInfo 取得Servlet后的URL名,不包括URL参数
getRequestURL 取得不包括参数的URL
getRequestURI 取得不包括参数的URI,即去掉协议和服务器名的URL

具体如下图:




相对应的函数的值如下:

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();
	}

猜你喜欢

转载自wallimn.iteye.com/blog/2358182