js获取网站绝对路径

在jsp中我们可以使用${pageContext.request.contextPath}来获取网站根目录,从而得到绝对路径,但是今天在写js 的时候也需要获取网站根目录。

测试发现,如果把js直接写在jsp页面,${pageContext.request.contextPath}这种写法是可以的,但是如果把js抽出来,作为一个单独的文件,那么这种办法就不行了。

那么,js中应该怎么获取呢?

//js获取项目根路径,如: http://localhost:8080/itoo-jrkj-evaluate-web
function getRootPath(){

    //获取当前网址,如: http://localhost:8080/itoo-jrkj-evaluate-web/index.jsp

    var curWwwPath=window.document.location.href;
    //获取主机地址之后的目录,如: itoo-jrkj-evaluate-web/index.jsp
    var pathName=window.document.location.pathname;
    var pos=curWwwPath.indexOf(pathName);
    //获取主机地址,如: http://localhost:8080
    var localhostPaht=curWwwPath.substring(0,pos);
    //获取带"/"的项目名,如:/uimcardprj
    var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
    return(localhostPaht+projectName);
}


### 获取网站绝对路径的方法 在 Web 开发中,获取网站绝对路径可以通过多种方式实现,具体取决于需求场景以及所使用的编程技术栈。 #### URL 的绝对路径 对于浏览器端的应用程序来说,JavaScript 是最常用的工具来获取当前页面的完整 URL 或其组成部分。以下是具体的实现方法: ```javascript // 获取完整的 URL 地址 const fullUrl = window.location.href; // 获取协议部分 (http/https) const protocol = window.location.protocol; // 获取主机名(不带端口号) const hostname = window.location.hostname; // 获取端口 const port = window.location.port; // 获取路径部分 const path = window.location.pathname; ``` 以上代码片段展示了如何通过 `window.location` 对象分解并提取 URL 各个部分的信息[^1]。这适用于前端 JavaScript 应用程序,能够帮助开发者快速定位用户的请求地址及其细节。 #### 服务器上的文件绝对路径 当涉及到服务器端操作时,尤其是需要知道某个文件的具体存储位置,则需依赖于后端框架的功能支持。例如,在 Java Web 中可以利用 Servlet API 来获得项目的根目录: ```java String realPath = request.getSession().getServletContext().getRealPath("/"); System.out.println(realPath); ``` 这段代码会返回项目部署后的实际磁盘路径[^2]。需要注意的是,这种方法仅限于某些特定环境有效——比如 Tomcat 容器内部工作正常,但如果运行在一个只提供虚拟映射而无真实对应关系的情况下可能会失败。 另外一种情况是从 HTML 文件上传功能出发考虑问题。如果要处理来自客户端提交的数据包里包含有文件对象的情形下,我们往往还需要关心它们最终被保存到了哪里。下面给出了一段 Flutter Web 上创建 `<input type="file">` 输入框的小例子作为参考[^4]: ```dart import 'dart:html' as html; void main() { final html.InputElement input = html.FileUploadInputElement(); input.onChange.listen((event) => handleFiles(input.files)); } void handleFiles(html.List<html.File> files) async { for (var file in files!) { String fileName = file.name; // 只能得到文件名字而非全路径 print('File name is $fileName'); // 如果想进一步解析更多关于这个文件的东西, // 需要在服务端接收后再做相应逻辑判断。 } } ``` 值得注意的一点在于,出于安全原因现代浏览器不会暴露本地系统的完整文件路径给网页脚本使用[^3]。因此即使尝试读取用户选取的文档信息也只能拿到有限的部分而不是确切的位置描述符。 综上所述,无论是针对网络资源链接还是实体档案管理方面的需求,都有相应的解决方案可供采纳实施。不过也要记得根据不同平台特性灵活调整策略以达到最佳效果!
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值