Java中路径总结 -- 在 java、jsp、servlet 中路径的不同获取方法
1.1 java文件中获得路径
Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.class文件)所在路径
ClassLoader.getSystemResource("")
Class_Name.class.getClassLoader().getResource("")
Class_Name.class .getResource("/")
Class_Name.class .getResource("") // 获得当前类所在路径
System.getProperty("user.dir") // 获得项目根目录的绝对路径
System.getProperty("java.class.path") //得到类路径和包路径
打印输出依次如下:
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/com/xml/imp/
F:\work_litao\uri_test
F:\work_litao\uri_test\WebContent\WEB-INF\classes; F:\work_litao\uri_test\WebContent\WEB-INF\lib\dom4j.jar
1.2 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:reqst.getReqstURI()1.3 Servlet中获得当前应用的相对路径和绝对路径
文件的绝对路径 :application.getRealPath(reqst.getReqstURI());
当前web应用的绝对路径 :application.getRealPath("/");取得请求文件的上层目录:new File(application.getRealPath(reqst.getReqstURI())).getParent()
根目录所对应的绝对路径:reqst.getServletPath();
文件的绝对路径 :reqst.getSession().getServletContext().getRealPath(reqst.getReqstURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()javax.servlet.jsp.PageContext.getServletContext()javax.servlet.ServletConfig.getServletContext()
)
=====================================================================================================
下面的内容可以不看,因为本文是转载内容,原文有许多“?”使得文章不完整。
======================================================================================================【Java--XML】读取WEB-INF下XML文件
在web.xml设置Context-param 项.设置如下
<context-param>
<param-name>conf_xml</param-name>
<param-val>/WEB-INF/conf/message.xml</param-val>
</context-param>
然后写一个listener类class Pdklistener implements ServletContextListener{
public void contextInitialized(ServletContextEvent? event){
//最后,把这个listener设置到web.xml中? p lic void contextDestroyed(ServletContextEvent event){? }}???? //在这里操作?????
String xmlPath =
? event.getServletContext().getRealPath("/")
+ event.getServletContext().getInitParameter("conf_xml");?? //您可以创建一个类来存储这个信息.以后就可以在你的应用里使用了.???
}
<listener>
? <listener-class>Pdklistener (这里要类的全路径)</listener-class>
</listener>
#####################################################################另-种方法,很简单.在jsp中加上下面一段.就可以取得web-inf下面的文件
String str = reqst.getRealPath("WEB-INF") + "/conf/message.xml";
这个完全也可以.
public void doGet(HttpServletReqst reqst, HttpServletResponse response)
throws ServletException, IOException {
String output = "";
String fileName =
reqst.getSession().getServletContext().getRealPath("/")
+ "WEB-INF/conf/ff.txt";
fileName = fileName.replace("\\", "/");
System.out.println(fileName);
File file = new File(fileName);
try {B?redReader input = new B?redReader(new FileReader(file));StringB?r b?r = new StringB?r();String text;
while ((text = input.readLine()) != null)b?r.append(text + "\n");
output = b?r.toString();} catch (IOException ioException) {System.err.println("File Error!");}
reqst.setAttribute("output", output);
reqst.getReqstDispatcher("/WEB-INF/jsp/FileDemo.jsp").forward(reqst, response);