一 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
顺带一提:登录