java里绝对路径和相对路径的区别
一般在处理Web应用下的文件创建与移动等时,会涉及到很多关于java
中相对路径,绝对路径等问题。以下是一些总结。希望大家遇到类似的问题,可以更有效的解决。
=================================================================================
1基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:\xyz\testtxt 代表了testtxt文件的绝对路径。http://wwwsuncom/indexhtm也代表了一个
URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中,"/"代表Web应用的根目录。和物理路径的相对表示,例如:"/" 代表当前目录,
"/"代表上级目录。这种类似的表示,也是属于相对路径。
2关于JSP/Servlet中的相对路径和绝对路径。
21服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的
(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候
在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://127001/webapp/的。
其用到的地方有:
forward:servlet中的requestgetRequestDispatcher(address);这个address是
在服务器端解析的,所以,你要forward到ajsp应该这么写:
requestgetRequestDispatcher(“/user/ajsp”)这个/相对于当前的web应用webapp,
其绝对地址就是:http://19216801/webapp/user/ajsp。
sendRedirect:在jsp中<%responsesendRedirect("/rtccp/user/ajsp");%>
222、客户端的地址
所有的html页面中的相对地址都是相对于服务器根目录(http://127001/)的,
而不是(根目录下的该Web应用的目录)http://127001/webapp/的。
Html中的form表单的action属性的地址应该是相对于服务器根目录(http://127001/)的,
所以,如果提交到ajsp为:action="/webapp/user/ajsp"或action="<%=requestgetContextPath()%>"/user/ajsp;
提交到servlet为actiom="/webapp/handleservlet"
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
因此,一般情况下,在JSP/HTML页面等引用的CSS,JavascriptAction等属性前面最好都加上
<%=requestgetContextPath()%>,以确保所引用的文件都属于Web应用中的目录。
另外,应该尽量避免使用类似"","/","//"等类似的相对该文件位置的相对路径,这样
当文件移动时,很容易出问题。
3 JSP/Servlet中获得当前应用的相对路径和绝对路径
31 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:requestgetRequestURI()
文件的绝对路径:applicationgetRealPath(requestgetRequestURI());
当前web应用的绝对路径 :applicationgetRealPath("/");
取得请求文件的上层目录:new File(applicationgetRealPath(requestgetRequestURI()))getParent()
32 Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:requestgetServletPath();
文件的绝对路径 :requestgetSession()getServletContext()getRealPath
(requestgetRequestURI())
当前web应用的绝对路径 :servletConfiggetServletContext()getRealPath("/");
(ServletContext对象获得几种方式:
javaxservlethttpHttpSessiongetServletContext()
javaxservletjspPageContextgetServletContext()
javaxservletServletConfiggetServletContext()
)
4java 的Class中获得相对路径,绝对路径的方法
41单独的Java类中获得绝对路径
根据javaioFile的Doc文挡,可知:
默认情况下new File("/")代表的目录为:SystemgetProperty("userdir")。
一下程序获得执行类的当前路径
package orgchengfile;import javaioFile;
public class FileTest {
public static void main(String[] args) throws Exception {
Systemoutprintln(ThreadcurrentThread()getContextClassLoader()getResource(""));
Systemoutprintln(FileTestclassgetClassLoader()getResource(""));
Systemoutprintln(ClassLoadergetSystemResource(""));
Systemoutprintln(FileTestclassgetResource(""));
Systemoutprintln(FileTestclassgetResource("/")); //Class文件所在路径
Systemoutprintln(new File("/")getAbsolutePath());
Systemoutprintln(SystemgetProperty("userdir"));
}
}
42服务器中的Java类获得当前路径(来自网络)
(1)Weblogic
WebApplication的系统文件根目录是你的weblogic安装所在根目录。
例如:如果你的weblogic安装在c:\bea\weblogic700
那么,你的文件根路径就是c:\
所以,有两种方式能够让你访问你的服务器端的文件:
a使用绝对路径:
比如将你的参数文件放在c:\yourconfig\yourconfproperties,
直接使用 new FileInputStream("yourconfig/yourconfproperties");
b使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放
在yourwebapp\yourconfig\yourconfproperties,
这样使用:
new FileInputStream("/yourconfig/yourconfproperties");
这两种方式均可,自己选择。
(2)Tomcat
在类中输出SystemgetProperty("userdir");显示的是%Tomcat_Home%/bin
(3)Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根比如用新建文件法测试File f = new File("ahtm");
这个ahtm在resin的安装目录下
(4)如何读相对路径哪?
在Java文件中getResource或getResourceAsStream均可
例:getClass()getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web
发布根路径下WEB-INF/classes
默认使用该方法的路径是:WEB-INF/classes。已经在Tomcat中测试。
5读取文件时的相对路径,避免硬编码和绝对路径的使用。(来自网络)
51 采用Spring的DI机制获得文件,避免硬编码。
参考下面的连接内容:
http://wwwjavajianet/viewtopicphpp=90213&
52 配置文件的读取
参考下面的连接内容:
http://devcsdnnet/develop/article/39/39681shtm
53 通过虚拟路径或相对路径读取一个xml文件,避免硬编码
参考下面的连接内容:
http://clubgamvancom/club/clubPagejspiPage=1&tID=10708&ccID=8
6Java中文件的常用操作(复制,移动,删除,创建等)(来自网络)
常用 java File 操作类
http://wwweasydonecn/014/200604022353065155htm
Java文件操作大全(JSP中)
http://wwwpconlinecomcn/pcedu/empolder/gj/java/0502/559401html
java文件操作详解(Java中文网)
http://www51ctocom/html/2005/1108/10947htm
JAVA 如何创建\删除\修改\复制目录及文件
http://wwwgamvancom/developer/java/2005/2/264html
总结:
通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制
删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。
建议参考URI,的RFC标准文挡。同时对JavaioFile JavanetURI等内容了解透彻
对其他方面的理解可以更加深入和透彻。
题主是否想询问“java下载文件报连接重置的原因是什么”?网络问题,文件服务器出现问题。
1、网络问题:连接重置是由于网络连接不稳定或中断引起的。这是由于服务器故障、网络中断、防火墙设置等造成的。
2、文件服务器问题:下载文件时,文件服务器出现故障或不可用,会导致连接重置。会是服务器过载、文件损坏、权限设置等问题引起的。
域名解析失败怎么办
1:更换本地DNS的方法
目前国内电信运营商通过使用DNS劫持的方法,干扰用户正常上网,使得用户无法访问,(例如弹出广告窗口),所以我一直在使用Google DNS,不仅可以解决中国的电信运营商的流氓行为,还可以解决域名无法访问的情况。
小技巧:点击开始-设置-网络连接-本地连接-属性-TCP/IP协议-使用下面的DNS服务器地址,在框中输入“8888”和“8844”断开,从新连接网络即可,并且没有电信、联通(原网通)等DNS劫持问题。
2:修改HOSTS文件的方法
如果我们希望把某个域名与某个IP绑定,就可以通过修改HOSTS文件的办法:“开始-搜索”,然后查找名叫hosts的文件。或路径为c:\windows\system32\drivers\etc都可。用记事本打开,在下面加入要解析的IP和域名即可。(修改HOSTS文件则是在实在没有办法的时候在用)
小知识:每个windows系统都有个HOSTS文件,它的作用是加快域名解析,方便局域网用户,屏蔽网站,顺利连接系统等功能。
3:清除DNS缓存信息的方法
“开始-运行-输入CMD”,在ipconfig /中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令,执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。接下来所有的DNS缓存都会重新加载。
pos机连接服务器失败什么原因
当pos机网络信号不好、流量卡安装错误、没有流量、出现故障时,会出现连接服务器失败的情况。1、网络信号不好,出现这种情况,通过更换网络即可解决。2、流量卡安装错误,出现这种问题,将流量卡拔出重新安装解决。3、没有流量,查看是否欠费,如果是欠费导致的,续费后,就可以了。4、出现故障,这种情况要联系装机人员,让装机人员检查修复。
域名解析失败是怎么回事
有3种情况会到底解析失败。
第一,您的电脑网络连接不成功。第二,您与您的DNS域名解析服务器之间连接有故障(这个可用PING命令测试)。第三,如果您是处于一个局域网中,那么可能您收到了ARP欺骗攻击,导致您的域名解析服务器指向错误,这个是用PING命令测试不出来的
刷信用卡POS机显示银行卡解析失败,但是换一张卡可以正常刷卡消费,是什么原因呢,请大佬解惑
这种情况下,可以先确定是银行卡问题。您可以联系银行检查卡账户是否处于正常状态。如果账户状态正常,需要换卡。芯片或磁条应该有问题。如果卡账户处于异常状态,请银行帮助恢复账户。
这个问题有两种情况
1、银行卡上没有银联标志我们都知道,POS机是银联发放的支付许可证,可以刷卡。如果卡上没有银联标识,店主的POS机无法刷卡。
2、卡上有银联标识卡上有银联标识,但仍无法解析。这是店主和卡之间的感应问题。建议换张卡再刷一遍,或者等半个小时
:
为什么银行卡解析失败?
再试一次。这种解析失败可能是由于银行信息系统在处理交易数据时出现了一些异常。所有的笔都不一样。
输入密码后银行卡无法解析是什么意思?
你是说你输入了错误的银行卡密码,导致卡被锁定了吗?如果是这样,就无法解锁。你必须带着身份证和银行卡去当地银行的柜台
招商银行转专业版的时候说账户分析失败?
一般是个人填错了账户信息。
1重新核实收款人信息,如账号、户名、开户行等。,然后重新汇款。
2拨打招商银行卡客服电话,向客服求助
绑定银行卡时,为什么说验证失败?
如果与帐户名不匹配,验证将失败
1。银行是指各银行发行的硬卡上的数字代码。商业银行之间的业务号段有统一规定。的前六位代表发行人识别码,也称为箱号。不同的箱号代表不同的银行卡组织和卡级别
2。一旦银行卡被分配,输入客户的基本信息、金额和交易状态,就会及时传送到中央银行。许多信息,如防止和统计,将在中央银行数据库中汇总,这是统一金融管理的媒介
域名解析错误怎么办?
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
2、通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
1260
下一条回答
百度搜索排名多少钱 -选百度营销 足不出户也能爆单 点击了解
本月8749人已拨打电话咨询问题
百度搜索排名多少钱每天几十元就可以做,让硬线索主动上门,获客不再是难题,快速提高订单量,效果收费,智能之选,现在开户还有超值豪礼等你来拿!
百度营销广告
数字后端_零基础入门到精通
值得一看的数字后端相关信息推荐
E课网四大数字IC设计就业班,涵盖数字前端设计,数字验证,数字后端设计,DFT设计报名即签署协议,资深工程师全程带班监督,解疑答惑
爱思尔教育科技有限广告
[淘宝]c语言基础_百万商品_天天低价_淘出乐趣
C/C语言编程开发2022新版零基础入门到精项目实战网课视频教程
¥396 元
c/vb/php/c#视频教程 visual basic/vc编程c语言零基础在线课程
¥60 元
官方正版 标准C语言基础教程 第四版 英文版 国外计算机科学教材系列 C语言编程 用C语言进行计算机经典教材 C编程详解书
¥89 元
c视频教程 C/VC/C语言编程开发程序项目实战MFC自学实战教学
¥298 元
c视频教程 C/VC/C语言编程开发程序项目实战MFC自学实战教学
¥298 元
simbataobaocom广告
2条评论
评论,是对回答者的感谢
发布
百度网友c679f69969
36
怎么找不到设备呢
2020-08-10 19:16
热心网友
25
哦
2021-05-04 22:41
为您推荐
免费javajava学些什么-一般学多久java广告
免费java新手入门学Java-技术选动力节点-本地Java培训学校,13年Java教学经验;全国十
572022-06-05
紧急求救:浏览器(错误 105 (net::ERR_NAME_NOT_RESOLVED): 无法找到此服务器。)什么意思?怎么解决?
我是XP系统,曾遇到和楼主相同的问题。解决方法是:网络连接-本地连接-Internet协议(TCP
176 浏览305032017-11-23
错误105(net::ERR_NAME_NOT_RESOLVED):无法解析服务器的DNS地址
希望对你有帮助!你原来的路由器是设置好了的,所以能上网,新的路由器并不是买回来插上就能用的,要进行设
29 浏览4961
错误 105 (net::ERR_NAME_NOT_RESOLVED): 无法找到此服务器
网页显示问题(适用于 Windows): “无法访问此网页”(网络错误 2、102、104 和 10
17 浏览12418
百度营销一招让你快速恢复生意,订单接不停
值得一看的百度相关信息推荐
本月8749人已拨打电话咨询问题
咨询
百度营销广告
免费javajava学些什么-一般学多久java
值得一看的java相关信息推荐
本月173人已咨询相关问题
咨询
动力节点广告
正在加载
银联pos机签到显示域名解析错误怎么回事
说明机器本身程序的域名被人家更改了,还原就行了,如果不清楚最好是联系当地收单机构的人员来处理
(Eclipse)删除文件需要恢复的方式如下:
1现在删除T1java和T4properties。
2鼠标右键点击项目名ZJ,选择Restore from Local history。
3 选择需要恢复的文件,即可恢复所需要的文件。
Java8种值得学习优秀技能
1 Git
Git 是 Java 开发人员需要掌握的基础工具之一,每一位 Java 从业者都应该学会用它。Git 使用一套版本控制系统来管理各种项目集合。这是一个完全免费的开源系统,专注干非线性工作流、完整性和速度。分布式扩展:存储库可用来创建开发历史的副本。链接方法: Git 具有基于工具箱的设计,可提供定义明确的模型。
基干工具箱的设计:基于工具箱的设计可减少复合组件。
分布式扩展: 存储库可用来创建开发历史的副本。链接方法:Git 具有基于工具箱的设计,可提供定义明确的模型。
基干工具箱的设计:基于工具箱的设计可减少复合组件。
2Selenium
Java 中的 Selenium Web 驱动程序是 Java 开发人员在 2021 年应该了解的重要技术之一。
Selenium 提供了使用测试框架测试 Web 应用程序的一组工具; Selenium Web 驱动提供了一个开源API。它包括了用于 Web 应用程序的一些自动化特性。Selenium 的关键元素包括:
IDE(集成开发环境)
远程控制 /Selenium10
Web 控制器 /Selenium20/30
Selenium网格
3Jenkins
Jenkins 是源自 JAVA 编程的技术,其开源自动化的持续交付和集成可以自动化软件开发流程,支持多种版本控制工具。
Jenkins的插件可与另一种语言编写的代码集成。以下是你应该选择 Jenkins 的三大原因: 它提供了比其他软件更好的质量;其自动化系统可以管理集成;Jenkins的开发速度要快得多。
4用户友好的 Web 服务
REST 的全称是Representative Translation ofState(表述性状态转移),它代表了一种架构风格,是Java 开发人员必须掌握的知识。它提升了 Web 服务性能,还定义了可伸缩性和性能约束。这是 2022年Java 开发人员最理想的选项之一。
它的可重建 API用于 Web 服务开发中的通信需求。如果你了解 HTML、CSS 等,那么你将从RESTfulWeb 服务中获益匪浅。以下是 RESTful 服务的特性:
基干客户端 - 服务器的架构提供了服务器的管理、部署和托管等特性,还可以帮助用户使用服务和资源。它本质上是一种共享资源的共享计算模型。
5 Spring security
它的主要功能是应用程序身份验证。其 J2EE servlet规范和 EJB规范是JAVA 开发人员常用的两个关键安全特性。
Spring Security 支持多种身份验证模型,并与HTTP、Kerberos、JOSSO、CAS、LDAP 等技术集成。Spring Security 与 Java 深度关联,强烈建议Java 开发人员学习它。
6SpringBoot2
Spring Boot 发布了一个名为 Spring Boot 2的新版本。其中 Spring 框架负责控制,Spring Boot 负责生成具有常规配置的独立解决方案。
它主要依赖JAVA Baseline、BOM 材质和 cradle插件,其自动配置可提供安全性和响应性。它还提供了技术支持并改善了开发体验。它是 JAVA 程序员应了解的基本工具之一,其关键特性包括:
直接部署 Undertow、Jetty 或 Tomcat
减少构建配置,提供依赖项
在 Spring 中创建独立的应用程序
7Angular 或响应式 JS
ReactJS 是一个专门用于 UI开发的 JavaScript库,而 Angular 是一个框架。JAVA 开发人员应该很熟悉这两大关键技术了。微信搜索readdot,关注后回复编程资源,领取各种经典学习资料
Angular 2是开源 We 应用程序框架,Angular 的主要特性包括指令、范围、模板、注解、高级依赖项注入和子路由器: ReactJS 用于开发移动应用程序。ReactJS的主要特性包括与服务器的免费开源侧通信功能等。
8ApacheSpark 和 Kafka
Apache Spark 和 Kafka 是2021年Java开发人员一定要掌握的两项技术;它们在 2018 年底已发布稳定版本。Apache Spark 是用于集群计算的框架已开源。
Spark 提供了用于执行基本 1/0、调度和分派等任务的应用程序接口,并提供了同样开源的流处理平台。特别要提的是 Apache Kafka 代码是 Java 和 Scala 编写的。
Kafka 可以使用一些基本 API,例如 Producer APIConsumer APl、Connector API 和 Stream APl。
0条评论