導航:首頁 > 文件教程 > web文件讀取路徑

web文件讀取路徑

發布時間:2021-02-27 14:49:32

『壹』 如何獲取web應用的部署路徑

java中獲得文件的路徑在我們做上傳文件操作時是不可避免的。

web 上運行
1:this.getClass().getClassLoader().getResource("/").getPath();
this.getClass().getClassLoader().getResource("").getPath(); 得到的是 ClassPath的絕對URI路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/
System.getProperty("user.dir");
this.getClass().getClassLoader().getResource(".").getPath(); 得到的是 項目的絕對路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war

2:this.getClass().getResource("/").getPath();
this.getClass().getResource("").getPath(); 得到的是當前類 文件的URI目錄。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/com/jebel/helper/
this.getClass().getResource(".").getPath(); X 不 能運行

3:Thread.currentThread().getContextClassLoader().getResource("/").getPath()
Thread.currentThread().getContextClassLoader().getResource("").getPath() 得到的是 ClassPath的絕對URI路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/
Thread.currentThread().getContextClassLoader().getResource(".").getPath() 得到的是 項目的絕對路徑。
如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war

在本地運行中
1:this.getClass().getClassLoader().getResource("").getPath();
this.getClass().getClassLoader().getResource(".").getPath(); 得到的是 ClassPath的絕對URI路徑。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes
this.getClass().getClassLoader().getResource(".").getPath(); X 不 能運行
2:this.getClass().getResource("").getPath();
this.getClass().getResource(".").getPath(); 得到的是當前類 文件的URI目錄。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes/com/jebel/helper/
/D:/myProjects/hp/WebRoot/WEB-INF/classes/ 得到的是 ClassPath的絕對URI路徑。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes

3:Thread.currentThread().getContextClassLoader().getResource(".").getPath()
Thread.currentThread().getContextClassLoader().getResource("").getPath() 得到的是 ClassPath的絕對URI路徑。。
如:/D:/myProjects/hp/WebRoot/WEB-INF/classes
Thread.currentThread().getContextClassLoader().getResource("/").getPath() X 不 能運行

最後
在Web應用程序中,我們一般通過ServletContext.getRealPath("/")方法得到Web應用程序的根目錄的絕對路徑。
還有request.getContextPath(); 在Weblogic中要用request.getServletContext().getContextPath();但如果打包成war部署到Weblogic伺服器,項目內部並沒有文件結構的概念,用這種方式是始終得到null,獲取不到路徑,目前還沒有找到具體的解決方案。

『貳』 如何在web頁面獲取文件絕對路徑

string filePath = Server.MapPath("D:\tst\tst.tx");
參考MSDN
http://msdn.microsoft.com/zh-cn/library/system.web.httpserverutility.mappath.aspx

解釋:
public string MapPath(
string path
)
參數

path
類型:System.String
Web 伺服器的虛擬路徑。
返回值

類型:System.String
與 path 相對內應的物理文件容路徑。

『叄』 分析下web。xml執行servlet的路徑。。就是說讀取文件的路徑。

樓主可以這樣分析,首先我從你的代碼中選出一對代碼
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>Cunchu</servlet-name>
<servlet-class>ch.Cunchu</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Cunchu</servlet-name>
<url-pattern>/servlet/Cunchu</url-pattern>
</servlet-mapping>
這里的<servlet-mapping>與<servlet>很明顯示一組信息,那麼我們的jsP頁面時如何找到對引得Servlet文件呢?
首先,在你點擊提交按鈕的時候,會執行Action中的地址內容,也就是<servlet-mapping>中的<url-pattern>中的URL信息,再找到對應的URL後,就可以確認對應的<servlet-mapping>中的<servlet-name>,系統就會根據<servlet-mapping>中的<servlet-name>,去尋找對應相同名字的<servlet>,最後就可以找到<servlet>對應的<servlet-class>中的servlet文件進行執行。

也就是說,jsp中action配置的地址應該與<servlet-mapping>中的<url-pattern>地址一致,<servlet-mapping>中的<servlet-name>應該與<servlet>中的<servlet-name>相同,最終要執行的servlet文件要與<servlet>中的<servlet-class>地址一致。

希望對你有幫助,加油

『肆』 javaweb中怎麼獲取文件的絕對路徑

在jsp和class文件中調用的相對路徑不同。 在jsp里,根目錄是WebRoot 在class文件中,根目錄是WebRoot/WEB-INF/classes 當然你也可以用System.getProperty("user.dir")獲取你工程的絕對路徑。
另:在Jsp,Servlet,Java中詳細獲得路徑的方法!
1.jsp中取得路徑:

以工程名為TEST為例:

(1)得到包含工程名的當前頁面全路徑:request.getRequestURI()
結果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
結果:/TEST
(3)得到當前頁面所在目錄下全名稱:request.getServletPath()
結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp
(4)得到頁面所在伺服器的全路徑:application.getRealPath("頁面.jsp")
結果:D:/resin/webapps/TEST/test.jsp
(5)得到頁面所在伺服器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
結果:D:/resin/webapps/TEST

2.在類中取得路徑:

(1)類的絕對路徑:String u=Class.class.getClass().getResource("/").getPath()
結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路徑:System.getProperty("user.dir")
結果:D:/TEST

3.在Servlet中取得路徑:

(1)得到工程目錄:request.getSession().getServletContext().getRealPath("") 參數可具體到包名。
結果:E:/Tomcat/webapps/TEST
(2)得到IE地址欄地址:request.getRequestURL()

(3)得到相對地址:request.getRequestURI()
結果:/TEST/test

『伍』 java web中讀取文件,相對路徑怎麼寫

相對路徑的話,可以先獲取到當前文件的編譯路徑,之後在找到想找文件的路徑的思路來實現內。容
舉例:
XMLS.class.getClass().getResourceAsStream("/test/test.txt");
解釋:XMLS.class.getClass()是獲取當前的類編譯路徑,之後通過getResourceAsStream的形式即可找到要讀取的文件的路徑。
備註:這個方法中後面的路徑也可以通過截取的形式來進行路徑獲取,實現原理都是找到當前類路徑,之後通過相對位置找到另外文件路徑。

『陸』 java web工程,讀取配置文件路徑問題

讀取復src下的文製件,可以用下面的方式

publicclassTest1{

publicstaticvoidmain(String[]args){
Propertiespro=newProperties();
InputStreamin=Test1.class.getResourceAsStream("/config.properties");
try{
pro.load(in);
pro.getProperty("aa");
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}

『柒』 java web工程中讀取properties文件,路徑一直不知道怎麼寫

1. 使用java.lang.Class類的getResourceAsStream(String name)方法

InputStreamin=getClass().getResourceAsStream("/config.properties");

在靜態方法中,由於不能使用getClass()方法,必須寫出類的名字。區別不大。

MyClass.class.getResourceAsStream("/config.properties");

使用這個方法,路徑前面可以加斜杠也可以不加。根據Class類getResourceAsStream()方法的JavaDoc:

Finds a resource with a given name. The rules for searching resources associated with a given class are implemented by the defining class loader of the class. This method delegates to this object's class loader. If this object was loaded by the bootstrap class loader, the method delegates to ClassLoader.getSystemResourceAsStream.

Before delegation, an absolute resource name is constructed from the given resource name using this algorithm:

If the name begins with a '/' ('u002f'), then the absolute name of the resource is the portion of the name following the '/'.

Otherwise, the absolute name is of the following form:

modified_package_name/name

Where the modified_package_name is the package name of this object with '/' substituted for '.' ('u002e').

就是說,這個path假如以斜杠開頭,則斜杠後面的部分是文件相對classpath的路徑;假如不是,Java會把這個path看作是「包名/文件名」的結構,會嘗試在這個類的包裡面去找,而不是從classpath開始找;在這種情況下,除非你把properties文件放到MyClass.class所屬的包裡面,不然都會是null的。

2. 使用java.lang.ClassLoader類的getResourceAsStream(String name)方法


路徑是不能加斜杠的!非常重要。

MyClass.class.getClassLoader().getResourceAsStream("config.properties");

這是因為使用classloader進行讀取,所輸入的參數必須是一個相對classpath的絕對路徑,在格式上,一個絕對路徑是不能以'/'開頭的。

注意這兩個方法是同名的,但路徑參數的格式截然不同。


3. 在Maven中的運用

現在幾乎所有的web project都是maven project,Maven的默認設置是把

src/main/resources/

加入到classpath裡面的。那麼,最好的做法是把你的properties文件放進src/main/resources裡面,然後用上面代碼讀取。用Class類的,一般要加斜杠;用ClassLoader類的,絕不能加斜杠!

假如是Eclipse裡面,需要把這個src/main/resources加到classpath裡面。具體操作是右擊工程,選擇「Configure buildpath」,根據Maven的要求,把src/main/java和src/main/resources都加進去,並且保證Exclude是none,Include是all,或者至少要包括你需要讀取的文件。

『捌』 關於web工程中java類如何獲取webapp路徑下的文件

第一復步: 先獲得classpath路徑制

Stringclasspath=this.getClass().getResource("/").getPath().replaceFirst("/","");

這樣子可以得到classpath路徑,類似於:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/WEB-INF/classes/


然後把WEB-INF/classes截取就能獲得WebAPP目錄啦:

StringwebappRoot=classpath.replaceAll("WEB-INF/classes/","");

得到的結果就是:

F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/


通過這個路徑你就能獲取該文件夾下的所有文件啦

『玖』 java web 怎麼獲取文件路徑

以工程名為TEST為例:

(1)得到包含工程名的當前頁面全路徑:request.getRequestURI()
結果:/TEST/test.jsp
(2)得到工程名:request.getContextPath()
結果:/TEST
(3)得到當前頁面所在目錄下全名稱:request.getServletPath()
結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp
(4)得到頁面所在伺服器的全路徑:application.getRealPath("頁面.jsp")
結果:D:/resin/webapps/TEST/test.jsp
(5)得到頁面所在伺服器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
結果:D:/resin/webapps/TEST

『拾』 怎麼獲取webroot下的一個文件夾的路徑

package com.test.servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {

/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

DiskFileItemFactory factory= new DiskFileItemFactory();

String path=request.getRealPath("/upload");//保存的默認路徑,注意在Tomecate底下的

//System.out.println(path);

factory.setRepository(new File(path));

factory.setSizeThreshold(1024*1024);//上傳的大於1M就存在磁碟裡面

ServletFileUpload upload=new ServletFileUpload(factory);

try{

List<FileItem> list=upload.parseRequest(request);
//注意FileItem集合裡面放的是提交的所有東西 包括username,password不僅僅是文件

for(FileItem item:list)
{

if(item.isFormField())//判斷不是文件類型
{
String name=item.getFieldName();//取欄位的名字

String value = item.getString("gbk");

request.setAttribute(name, value);
}
else//是文件類型
{

String name = item.getFieldName();

String value = item.getName();//只適用於返迴文件類型的名字

int star=value.lastIndexOf("\\");

String filename=value.substring(star+1);//取文件名字

System.out.println(filename);

request.setAttribute(name, filename);

item.write(new File(path,filename));

/* OutputStream os = new FileOutputStream(new File(path,filename));

InputStream is = item.getInputStream();

byte[] buffer=new byte[400];

int length=0;

while((length = is.read(buffer))>0)
{
os.write(buffer,0,length);
}

os.close();

is.close();

*/
}

}

}catch(Exception e)
{
e.printStackTrace();
}

request.getRequestDispatcher("upload/result2.jsp").forward(request, response);

}

}
很詳細!!

閱讀全文

與web文件讀取路徑相關的資料

熱點內容
配置文件替換 瀏覽:117
mac右鍵沒有刪除文件 瀏覽:624
蘋果手機游戲文稿和數據在哪清理 瀏覽:326
qq旋風文件名 瀏覽:270
手機system文件 瀏覽:672
我的網路被房東禁了 瀏覽:505
c獲取配置文件 瀏覽:476
蘋果5s5gwifi 瀏覽:261
棋類程序編程一般用什麼演算法 瀏覽:792
dnf86版本紅字 瀏覽:452
xp去掉域登陸密碼 瀏覽:729
淘寶全屏顯示代碼 瀏覽:921
大數據內涵體現在下列哪個方面 瀏覽:105
數據網路怎麼自己打開了 瀏覽:688
可編程式控制制器的優點有哪些 瀏覽:623
g502配置文件 瀏覽:159
1024b數據多少位元組 瀏覽:720
java俄羅斯方塊設計說明書 瀏覽:313
英雄聯盟710版本銳雯 瀏覽:818
keil編譯後顯示代碼大小 瀏覽:959

友情鏈接