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; }
与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。
您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!
↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/9122379.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于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(二)