Java路径问题解决方案:[2]应用篇
实际开发中遇到的关于路径问题的简单总结,仅供大家参考。
工具/原料
JAVA JDK版本 jdk1.7.0_51
windows 7 操作系统和Eclipse加部分应用插件
方法/步骤
相对路径都可以透过一下方式获得:
public class URLTest{
public static void main(String[] args) {
String relativelyPath = System.getProperty("user.dir");
System.out.println("相对路径:"+relativelyPath);
}
}
此方法是Java项目的根路径,而Java Web项目可能是服务器的某个路径并且不同的服务器路径也有不同,例如tomcat服务器是相对于安装目录“\bin”;在Java web项目中不要使用相对于当前用户目录的相对路径。
在java.io.*包中的类是根据当前用户目录分析相对路径名称的,此目录是由user.dir指定的,通常是Java虚拟机的调用目录,因此在使用java.io.*包中的类时,尽量避免使用相对路径。
代码展示图如下:
![Java路径问题解决方案:[2]应用篇](https://exp-picture.cdn.bcebos.com/def72c6c576699cfa3a43ad7a885e036e3915e4f.jpg)
在Java Web项目中获取路径,建立一个servlet在init()方法中添加如下代码获取:
package com.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletSample extends HttpServlet {
private static final long serialVersionUID = 416863504806100479L;
/**
* 初始化加载,即应用被调用之后只加载一次
*/
public void init() throws ServletException {
String realPath = this.getServletContext().getRealPath("/");
System.out.println(realPath);
}
}
在Java Web项目中获取路径,建立一个servlet在doPost()方法中添加如下代码获取,不能通过浏览器中输入URL地址调用:
package com.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletSample extends HttpServlet {
private static final long serialVersionUID = 416863504806100479L;
/**
* POST方式
*/
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String realPath = req.getSession().getServletContext().getRealPath("/");
System.out.println(realPath);
}
}
在Java Web项目中获取路径,建立一个servlet在doGet()方法中添加如下代码获取,可以通过浏览器中输入URL地址调用:
package com.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletSample extends HttpServlet {
private static final long serialVersionUID = 416863504806100479L;
/**
* GET方式
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String realPath = req.getSession().getServletContext().getRealPath("/");
System.out.println(realPath);
}
}
上述方式中init()的含义是初始化加载,即应用被调用之后只会加载一次;获取项目文件路径的详细代码如下图所示:
![Java路径问题解决方案:[2]应用篇](https://exp-picture.cdn.bcebos.com/22c4fe36e29147e894172cc6b603bbea3f86584f.jpg)
在Java Web项目中通过配置web.xml来实现servlet方法的调用,配置如下,
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>com.test.ServletSample</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
这是sevlet的配置方式,具体配置如下图所示:
![Java路径问题解决方案:[2]应用篇](https://exp-picture.cdn.bcebos.com/32a127723d03bbea957125fcea43d7d44931544f.jpg)
注意事项
servlet写配置文件web.xml
(共篇)上一篇:基础篇