怎样在JAVA文件中获取该项目的相对路径

java access 相对路径 javabean it

From:http://www.xker.com/page/e2007/1026/36926.html
 
 
1.基本概念的理解
  绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:\xyz\test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个
URL绝对路径。
  相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,
"../"代表上级目录。这种类似的表示,也是属于相对路径。
另外关于URI,URL,URN等内容,请参考RFC相关文档标准。
RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
(http://www.ietf.org/rfc/rfc2396.txt)

2.关于JSP/Servlet中的相对路径和绝对路径。
2.1服务器端的地址
   服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的
(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候
在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。
  其用到的地方有:
 forward:servlet中的request.getRequestDispatcher(address);这个address是
在服务器端解析的,所以,你要forward到a.jsp应该这么写:
request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,
其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。
sendRedirect:在jsp中
2.22、客户端的地址
 
       所有的html页面中的相对地址都是相对于服务器根目录(http://192.168.0.1/)的,
而不是(跟目录下的该Web应用的目录)http://192.168.0.1/webapp/的。
 Html中的form表单的action属性的地址应该是相对于服务器根目录(http://192.168.0.1/)的,
所以,如果提交到a.jsp为:action="/webapp/user/a.jsp"或action=""/user/a.jsp;
  提交到servlet为actiom="/webapp/handleservlet" 
   Javascript也是在客户端解析的,所以其相对路径和form表单一样。
 
  因此,一般情况下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上
,以确保所引用的文件都属于Web应用中的目录。
另外,应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径,这样
当文件移动时,很容易出问题。

3. JSP/Servlet中获得当前应用的相对路径和绝对路径
3.1 JSP中获得当前应用的相对路径和绝对路径
 根目录所对应的绝对路径:request.getRequestURI()
 文件的绝对路径     :application.getRealPath(request.getRequestURI());
 当前web应用的绝对路径 :application.getRealPath("/");
 取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3.2 Servlet中获得当前应用的相对路径和绝对路径
 根目录所对应的绝对路径:request.getServletPath();
 文件的绝对路径    :request.getSession().getServletContext().getRealPath
(request.getRequestURI())  
 当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
     (ServletContext对象获得几种方式:
       javax.servlet.http.HttpSession.getServletContext()
       javax.servlet.jsp.PageContext.getServletContext()
       javax.servlet.ServletConfig.getServletContext()
     )
4.java 的Class中获得相对路径,绝对路径的方法
4.1单独的Java类中获得绝对路径
  根据java.io.File的Doc文挡,可知:
 默认情况下new File("/")代表的目录为:System.getProperty("user.dir")。
 一下程序获得执行类的当前路径
package org.cheng.file;
import java.io.File;
public class FileTest {
    public static void main(String[] args) throws Exception {     
  System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));    
  System.out.println(FileTest.class.getClassLoader().getResource(""));       
  System.out.println(ClassLoader.getSystemResource(""));       
  System.out.println(FileTest.class.getResource(""));       
  System.out.println(FileTest.class.getResource("/")); //Class文件所在路径 
  System.out.println(new File("/").getAbsolutePath());       
  System.out.println(System.getProperty("user.dir"));   
 }
}
4.2服务器中的Java类获得当前路径(来自网络)
(1).Weblogic
WebApplication的系统文件根目录是你的weblogic安装所在根目录。
例如:如果你的weblogic安装在c:\bea\weblogic700.....
那么,你的文件根路径就是c:\.
所以,有两种方式能够让你访问你的服务器端的文件:
a.使用绝对路径:
比如将你的参数文件放在c:\yourconfig\yourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放
在yourwebapp\yourconfig\yourconf.properties,
这样使用:
new FileInputStream("./yourconfig/yourconf.properties");
这两种方式均可,自己选择。
(2).Tomcat
在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
(3).Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下
(4).如何读相对路径哪?
在Java文件中getResource或getResourceAsStream均可
例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web
发布根路径下WEB-INF/classes
默认使用该方法的路径是:WEB-INF/classes。已经在Tomcat中测试。
5.读取文件时的相对路径,避免硬编码和绝对路径的使用。(来自网络)
5.1 采用Spring的DI机制获得文件,避免硬编码。
   参考下面的连接内容:
   http://www.javajia.net/viewtopic.php?p=90213&
5.2 配置文件的读取
 参考下面的连接内容:
 http://dev.csdn.net/develop/article/39/39681.shtm
5.3 通过虚拟路径或相对路径读取一个xml文件,避免硬编码
 参考下面的连接内容:
 http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
 
6.Java中文件的常用操作(复制,移动,删除,创建等)(来自网络)
 常用 java File 操作类
 http://www.easydone.cn/014/200604022353065155.htm
 
 Java文件操作大全(JSP中)
 http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html
 java文件操作详解(Java中文网)
 http://www.51cto.com/html/2005/1108/10947.htm
 JAVA 如何创建\删除\修改\复制目录及文件
 http://www.gamvan.com/developer/java/2005/2/264.html
总结:
 通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制
 删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。
建议参考URI,的RFC标准文挡。同时对Java.io.File. Java.net.URI.等内容了解透彻
对其他方面的理解可以更加深入和透彻。  

 

From: http://blog.163.com/alpsdyk2001@126/blog/static/5279414820088217454511/

 

1. 在站点(我的站点为:E:\javatest)下建立文件夹“AccessDb”并在文件夹下建立数据库“test.mdb”以及表“stu”,stu字段为 id,stuname test.mdb所在路径为:E:\javatest\AccessDb 下面
如下图:

2.在站点(E:\javatest)下建立测试连接数据库文件“AccessTest.jsp”
代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ACCESS连接测试</title>
</head>
<body>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
out.print(e);
}
try{
//绝对路径
//String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:/javatest/AccessDb/test.mdb";
//其中 E:/javatest/AccessDb/test.mdb 为数据库所在绝对路径
//相对路径
String strDirPath=getServletContext().getRealPath("/"); //获得所在站点的绝对路径:E:\javatest\
//out.print(strDirPath+"<br>");
strDirPath=strDirPath.replace('\\','/'); //将“\”替换为“/” E:/javatest/
//out.print(strDirPath+"<br>");
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+strDirPath+"AccessDb/test.mdb";
//out.print(url+"<br>");
//String url = "jdbc:odbc:accesstest";
//建立ODBC数据源连接
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select * FROM stu"); //取得stu表中的记录
out.println("Table-list"+"<br>");
while(rs.next()){
out.print(rs.getInt(1)+" ");
out.print(rs.getString(2)+"<br>");
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception ex){
out.print(ex);
}
%>
</body>
</html>
运行结果如下:



相关推荐

  • HTML相对路径(Relative Path)和绝对路径(Absolute Path) HTML有2种路径的写法:相对路径和绝对路径。HTML相对路径(RelativePath)相对路径顾名思义就是相对当前文件而言引用文件所在路径同一个目录的文件引用如果源文件和引用文件在同一个目录里,直接写引用文件名即可。我们现在建一个源文件
  • URL的绝对路径与相对路径分析报告 绝对路径指的是包含域名的完整网址;相对路径指的是不包含域名的、被链接页面相对于当前页面的相对网址。假设:页面A的URL是http://www.wanbuyu.com/pageA.html,而B页面的URL是:http://www.wanbu
  • SEO网络实战_相对路径的利弊 相对路径的优点:·移动内容比较容易,不用更新其他页面上的链接。·在测试服务器上进行测试也比较容易。·节省代码。相对路径的缺点:·页面移动位置,里面的链接可能需要改动。·被抄袭和采集对网站没有任何益处。不过很多采集软件其实是可以自动鉴别绝对路
  • Delphi项目相对路径问题 Delphi项目相对路径问题时间:2009-11-0811:34:00来源:网络作者:未知点击:503次你写了一个程序,如何把源码拷贝到其他机器的不同目录下,是否程序不能编译不能通过了,那么很有可能是路径出了问题,如何工程设置中都使用了相对
  • 关于Python2、Python3相对路径、绝对路径导入的记录 两个版本的差异python2缺省为相对路径导入,python3缺省为绝对路径导入python2绝对路径导入from__future__importabsolute_import如果需要保持python2与python3皆可用,避免出现try
  • 绝对路径和相对路径与SEO   (6月18号注:昨天很多读者大概没看到这篇帖子,而且整天忙着处理不可抗力造成的问题很累,今天就不更新了(http://www.eee1212.com/)。)  经常看到有人在论坛里问URL的绝对路径和相对路径问题,在网站中应该使用哪种?
  • 绝对路径和相对路径与SEO   经常看到有人在论坛里问URL的绝对路径和相对路径问题,在网站中应该使用哪种?对SEO有什么影响?这实际上没有绝对的答案,两者各有优缺点。Google员工JohnMu前几天在GoogleGroups中做了一个挺全面的总结。下面半翻译半解释
  • 论网站用相对路径好还是绝对路径的利弊 我们知道网站页面所在的位置有相对地址和绝对地址之分,也就是我们常说的相对地址与绝对地址,那么它们之间有什么优点和缺点呢?这里情感日志雨祺做简要分析。    绝对路径URL优点是:    1)防止恶意镜像,恶意像也称作恶意克隆,是指通过A记录
  • c# 获取相对路径 c#获取相对路径一、获取当前文件的路径1.System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName获取模块的完整路径,包括文件名。2.System.Environm
  • 母版页的相对路径问题 转自:http://jhxk.javaeye.com/blog/404346一个经常让开发人员疑惑的问题是母版页是如何处理相对路径的。如果你使用的是静态文字,这一问题不会困扰你。不过,如果你加入了<img>标签或者指向其他资源的
  • Delphi项目相对路径问题 你写了一个程序,如何把源码拷贝到其他机器的不同目录下,是否程序不能编译不能通过了,那么很有可能是路径出了问题,如何工程设置中都使用了相对路径,那么就方便多了,而且还会是项目管理更轻松,一幕了然.在Project->Option->
  • [资料]ASP.NET相对路径写法之连接Access数据库 好多朋友被ACCESS数据库在.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config中数据库连接字符串的数据库路径。好多人的web.config中的写法如下:<appSettings><addke

你的评论

就没有什么想说的吗?

最新博客

关于我们 加入传客 媒体报道 帮助中心 传客活动 免责声明 联系我们 移动版 移动应用

©2017传客网    琼ICP备15003173号-2    

本站部分文章来源于互联网,版权归属于原作者。
本站所有转载文章言论不代表本站观点,如是侵犯了原作者的权利请发邮件联系站长(weishubao@126.com),我们收到后立即删除。
站内所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

X