写项目的时候,有个需求
要求显示当前页面的URL以及根目录(也就是获取localhost,如果是域名则获取域名)
获取当前页面URL的方法
使用javax.servlet.http
假设访问地址为:localhost:4000/Project/index.html
其中Project
是项目工程,index.html
是页面
getRequestURL()
// 获取当前页面的完整路径(不包含请求参数,需要加上getQueryString()才能获取请求参数)
getRequestURI()
// 返回除去Localhost(域名或者ip)部分的路径 注意这和上面是不同的一个是`URL`一个是`URI`
getContextPath()
// 返回工程名,如果工程映射为/,返回"空"
getServletPath()
// 返回除去host和工程名部分的路径
还有很多方法我这里就不过多
看一下效果
getRequestURL() // http://localhost:4000/Project/index.html
getRequestURI() // /Project/index.html
getContextPath() // /Project
getServletPath() // /index.html
实际代码演示
请求地址:http://127.0.0.1/article/bbbbb?name=abc
由于我建的是SpringBoot项目,所以项目工程根目录为/
System.out.println("getRequestURI:"+request.getRequestURI());
System.out.println("getRequestURL:"+request.getRequestURL());
System.out.println("getContextPath:"+request.getContextPath());
System.out.println("getServletPath:"+request.getServletPath());
System.out.println("getQueryString:"+request.getQueryString());
System.out.println("根目录:"+request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort());
//getRequestURI:/article/bbbbb
//getRequestURL:http://127.0.0.1/article/bbbbb
//getContextPath:
//getServletPath:/article/bbbbb
//getQueryString:name=abc
//根目录:http://127.0.0.1:80
Thymeleaf写法与上方大致相同
<div th:text="${#httpServletRequest.requestURL}"></div>
<!-- http://127.0.0.1/article/bbbbb -->
<div th:text="${#httpServletRequest.getScheme() + '://' + #httpServletRequest.getServerName() + ':' + #request.getServerPort()}"></div>
<!-- 根目录:http://127.0.0.1:80 -->