JavaWeb 获取请求网络协议、IP、端口号、项目根路径(根目录) 202513211编辑

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

JavaWeb 获取请求网络协议、IP、端口号、项目根路径(根目录)

Created by Marydon on 2018-06-01 16:44

1.需求

  在项目中,需要使用Java向本程序发送request请求,由于项目的发布名称、部署IP和端口不固定,

  如何才能动态获取这些信息呢?

2.代码实现

import javax.servlet.http.HttpServletRequest;
/**
* 获取url请求前缀
* @explain http://localhost:8080/test
* @param request request对象
* @return
*/
public static String getRequestPrefix (HttpServletRequest request) {
// 网络协议
String networkProtocol = request.getScheme();
// 网络ip
String ip = request.getServerName();
// 端口号
int port = request.getServerPort();
// 项目发布名称
String webApp = request.getContextPath();
return networkProtocol + "://" + ip + ":" + port + webApp;
}

2021年11月4日10:43:15

SpringMvc,SpringBoot控制层获取请求地址

第一步:注入对象HttpServletRequest

注意:在代码的编译期和运行期,上述的request对象都是NULL,因为此时此刻,并没有请求到达这个控制器,所以该注入的对象为空。

第二步:在请求入口里调用请求对象。

2023年4月14日17:07:25

在Controller层或Servlet类当中,获取项目绝对路径

String projectAbsolutePath = request.getServletContext().RealPath("/");

2023年9月8日17:12:41

在Servlet当中的init()方法当中,获取项目绝对路径

config.getServletContext().getRealPath("/");

获取的项目绝对路径,比如:

D:\workspace-eclipse2021\TWRS2.1\web\

通过Struts2获取项目根路径

import org.apache.struts2.ServletActionContext;
/**
* 获取制定路径的实际路径
* @param servletContext
* @param path
* @return
* @throws FileNotFoundException
*/
public static String getRealPath(String path) throws FileNotFoundException {
if (!path.startsWith("/")) {
path = "/" + path;
}
String realPath = ServletActionContext.getServletContext().getRealPath(path);
if (realPath == null) {
throw new FileNotFoundException("未找到文件夹:" + path);
}
return realPath;
}

 

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(13211)  评论(3编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2017-06-01 ORACLE-临时表实战示例
2017-06-01 oracle 常用函数
2017-06-01 sql各种连接详解
2017-06-01 ORACLE-行转列
2017-06-01 IBATIS + ORACLE(二)
2017-06-01 IBATIS+ORACLE(一)
2017-06-01 ORACLE-SQL(二)
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。