java中获取url路径类似的有好几个方法。如:
request.getServletPath()
request.getContextPath()
request.getRequestURI()
request.getRequestURL()
request.getPathInfo()
request.getServletContext().getRealPath("/")
用spring boot(用来测试web程序真是太方便了)试了一下,先贴代码吧:
@RequestMapping("/say/{param}/{type}")
public String say(HttpServletRequest request, @PathVariable("param") String param,
@PathVariable("type") String type) {
// 如果url是(http://localhost:8080/hello/say/lifeng/1),需要获取出后两个字符串
String servletPath = request.getServletPath();
String contextPath = request.getContextPath();
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();
String pathInfo = request.getPathInfo();
String realPath2 = request.getServletContext().getRealPath("/");
String str = "servletPath是:" + servletPath + "。contextPath是:" + contextPath
+ "。requestURI是:" + requestURI + "。requestURL是:" + requestURL + "。pathInfo是:"
+ pathInfo +"。realPath2是:"+realPath2;
return str;
}
测试结果:
getServletPath()返回的是请求资源路径。
getContextPath()返回的是应用程序路径。
getRequestURI()返回的是uri路径(相当于ContextPath+ServletPath)。
getRequestURL()返回的是绝对路径。
getServletContext().getRealPath()返回的是应用程序在本地计算机上的的位置。
上面这些方法的路径都不包含参数。
还有一些其他的方法:
//获取请求方法
request.getMethod(); //返回"GET
//获取请求协议
request.getScheme(); //返回"http"
//获取请求域名(IP地址);
request.getServerName(); //返回"localhost"
//获取请求端口号
request.getServerPort(); //返回"8080"