1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 项目之相对路径 绝对路径 路径问题

项目之相对路径 绝对路径 路径问题

时间:2023-09-22 14:37:00

相关推荐

项目之相对路径 绝对路径  路径问题

转自 /starnight_cbj/archive//03/25/4023422.aspx

一 JAVA 类中

1。取出指定所在类的路径

class A {

String getPath() {

return this.getClass().getClassLoader().getSystemResource("A").getPath();

}

}

注,更方便的

class A {

String getPath() {

return (A.class).getResource("").getPath();}

}

2。取出类ClassLoader的开始路径(执行路径)

//String preUri=this.getClass().getClassLoader( ).getResource("").getPath();

比如WebApp的项目,以下的指令得出的结果就是

/D:/project/crFj163Web/web/exploded/WEB-INF/classes/

比如你是纯java的程序,就是你执行java指令的当前路径

3。取出jdk所在的bin目录

//得到当前用户路径,执行路径 System.getProperty(”user.dir”)

其中user.dir是一个参数,更多参数请看这里

二、jsp/servlet 中的取路径

以前我们常用getRealPath(),不过这个方法已经不推荐用了。但我们可以使用request.getContextPath().另外还 有request.getRequestURL() 或者request.getRequestURI()。下面举例,以建立一个app1的webapp为例

1。request.getContextPath()打印出来的是

/app1

2。request.getRequestURL() 打印出来的是

http://localhost:8080/app1/index.jsp

3。request.getRequestURI() 打印出来的是

/app1/index.jsp

绝对路径:磁盘路径,比如在eclipse中直接访问磁盘路径:d:/eclipse/webroot/index.jsp

相对路径:项目为根目录,相对的路径,只需要指明根目录下的路径(即:tomcat部署的项目)。如想在webroot路径下的user包中的list。jsp文件(/user/list.jsp),在跳到webroot下的index。jsp文件。直接写/index.jsp即可。

模糊路径:classpath*:***

(Mr。xu 建议,底层为1层,项目名为最高层。而域名,一级二级相反。别人讲时,一定要记清。了解是哪里就是了)

最好使用相对于项目根目录的绝对路径:

正常的情况下是:不管你把JSP放到哪里,都可以指向servlet

作为一个程序员 ,我给你一个建议,

你提交的目录,最好使用相对于项目根目录的绝对路径。这样肯定没有问题。

项目名为ABC,根URL为/ABC

那么提交的时候,form的action里就写/ABC/servlet

不要写成servlet或者/servlet

同样,servlet跳转会jsp的时候,也要写/ABC/jsp/Login.jsp

(假设你的jsp放在根目录的jsp文件夹下。)

这样不管你的jsp放到哪里都是可以的。

dispatcher的forward和response.sendRirect。他们都用来跳转jsp和servlet。但他们是不同的。

不同点在于

1:sendRirect是重定向,这时候 ,上一个request带过来的参数会全部丢失。如要在请求里加新的参数,请在url后面跟上参数。例如response.sendRirect("/ABC/jsp/login.jsp?name="+name);

forward是跳转,参数还保留在request里。

2:sendRirect的根路径是相对于服务器而言,假设你的服务器根路径是http://localhost:8080/

那么response.sendRirect("/ABC/jsp/login.jsp?");

就相当于跳到http://localhost:8080/ABC/jsp/login.jsp

forward的根路径是相对于项目的根路径而言

resquest.getRequestDispatcher("/ABC/jsp/login.jsp");

相当于跳到http://localhost:8080/ABC/ABC/jsp/login.jsp

注意,路径出错了,所以应该这样写

resquest.getRequestDispatcher("/jsp/login.jsp");

相当于跳到http://localhost:8080/ABC/jsp/login.jsp

顺带一提:<a href="/ABC/jsp/login.jsp">登录</a>

<form action="/ABC/servlet/login">

这些链接跟sendRirect是一样的,根路径是服务器的根路径。

我认为你的错,就是错在没有理解这些路径的区别。

转载:

/oanqoanq/archive//03/13/3986770.aspx

读取配制文件的时候,路径问题让人挠头,使用下面的方法,可方便获取classpath绝对路径:

Thread.currentThread().getContextClassLoader().getResource("").getPath();

测试了一下,我在Eclipse下的java project 和 web project 的src 目录下都放有相同内容的一个MailInfo.properties文件,两个工程都有执行读取properties文件,进行发邮件的动作(java project 和 web project 都使用了这个方法获取classpath路径),都成功通过,主要代码如下:

...

Properties props = new Properties();

String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();

try

{

props.load(new FileInputStream(path+"/MailInfo.properties"));

} catch (FileNotFoundException e)

{

e.printStackTrace();

} catch (IOException e)

{

e.printStackTrace();

}

String stmp = props.getProperty("stmp");

String mymail = props.getProperty("email");

String mailuser = props.getProperty("user");

String mailpassword = props.getProperty("password");

...

另,打印了两个工程获取到的path的值,分别是:

/F:/workspace/CodeTest/bin/

---------java project

/F:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/webapps/pboc2web/WEB-INF/classes/ ---------web project

自己遇到的问题,可以右键myeclipse,explorer,打开本地文件夹,可以看到tomcat的class路径,比如配置文件,此路径经常在部署项目后正确。而在用junit测试webproject时,路径不清楚,可以采用“classpath*:***”。当确定配置修改正确后,可以单击window--》show view--》navigator,可以看到WEB-INF包下出现classes包,下面就是tomcat中部署的项目目录。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。