Java SpringBoot Thymeleaf获取当前页面完整URL地址-获取项目访问地址(根目录、域名)

写项目的时候,有个需求
要求显示当前页面的URL以及根目录(也就是获取localhost,如果是域名则获取域名)

获取当前页面URL的方法

使用javax.servlet.http
假设访问地址为:localhost:4000/Project/index.html
其中Project是项目工程,index.html是页面

COPY
1
2
3
4
5
6
7
8
getRequestURL()  
// 获取当前页面的完整路径(不包含请求参数,需要加上getQueryString()才能获取请求参数)
getRequestURI()
// 返回除去Localhost(域名或者ip)部分的路径 注意这和上面是不同的一个是`URL`一个是`URI`
getContextPath()
// 返回工程名,如果工程映射为/,返回"空"
getServletPath()
// 返回除去host和工程名部分的路径

还有很多方法我这里就不过多

看一下效果

COPY
1
2
3
4
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项目,所以项目工程根目录为/

COPY
1
2
3
4
5
6
7
8
9
10
11
12
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写法与上方大致相同

COPY
1
2
3
4
5
<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 -->
Authorship: Lete乐特
Article Link: https://blog.imlete.cn/article/Thymeleaf-GetUrl.html
Copyright: All posts on this blog are licensed under the CC BY-NC-SA 4.0 license unless otherwise stated. Please cite Lete乐特 's Blog !