java 怎么获取web根目录

java 怎么获取web根目录,第1张

在java中获得文件的路径在我们做上传文件 *** 作时是不可避免的。 web 上运行 1:thisgetClass()getClassLoader()getResource("/")getPath(); thisgetClass()getClassLoader()getResource("")getPath(); 得到的是 ClassPath的绝对URI路径。

以工程名为TEST为例:

(1)得到包含工程名的当前页面全路径:requestgetRequestURI(),结果:/TEST/testjsp。

(2)得到工程名:requestgetContextPath(),结果:/TEST。

(3)得到当前页面所在目录下全名称:requestgetServletPath()。结果:如果页面在jsp目录下 /TEST/jsp/testjsp。

(4)得到页面所在服务器的全路径:applicationgetRealPath("页面jsp"),结果D:/resin/webapps/TEST/testjsp。

(5)得到页面所在服务器的绝对路径:absPath=new javaioFile(applicationgetRealPath(requestgetRequestURI()))getParent();

结果:D:/resin/webapps/TEST。

拓展:在类中取得路径的方法

(1)类的绝对路径:String u=ClassclassgetClass()getResource("/")getPath()

结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

(2)得到工程的路径:SystemgetProperty("userdir")

结果:D:/TEST

<%=requestgetContextPath()%>是解决相对路径的问题,可返回站点的根路径。

<a href="<%=requestgetContextPath()%>/XXXjsp"> //这样获得的是绝对路径

<a href="XXXjsp"> //这样获得的是相对路径

<a href="<%=requestgetContextPath()%>/XXXXjsp"> 能够更有效的防治连接的失效。

requestgetContextPath()得到的是项目的名字,如果项目为根目录,则得到一个"",即空的字条串,

如果项目为dzjc, <%=requestgetContextPath()% >/ 将得到dzjc/,服务器端的路径则会自动加上,

<a href="XXXjsp"> 应该就是指当前路径下的这个xxxjsp页面,有时候也可以在head里设置html:base

来解决路径的问题,不过用的最多的还是requestgetContextPath。

用EL来表示相同功能的EL为:${pageContextrequestgetContextPath()}

requestgetScheme();

返回的协议名称,默认是>

参考例子如下,相关注释已经在代码中写明;

#region 文件上传

/// <summary>

/// 上传文件(自动分割)

/// </summary>

/// <param name="filePath">待上传的文件全路径名称(@"E:\FTP\ftproot\20070228DQCKzip")</param>

/// <param name="hostURL">服务器的地址</param>

/// <param name="byteCount">分割的字节大小</param>

/// <param name="userID">主机用户ID</param>

/// <param name="cruuent">当前字节指针</param>

/// <returns>成功返回"";失败则返回错误信息</returns>

public string UpLoadFile(string filePath, string hostURL, int byteCount, string userID, long cruuent)

{

string tmpURL = hostURL;

byteCount = byteCount 1024;

SystemNetWebClient WebClientObj = new SystemNetWebClient();

FileStream fStream = new FileStream(filePath, FileModeOpen, FileAccessRead);

BinaryReader bReader = new BinaryReader(fStream);

long length = fStreamLength;

string sMsg = "版式上传成功";

string fileName = filePathSubstring(filePathLastIndexOf('\\') + 1);

try

{

#region 续传处理

byte[] data;

if (cruuent > 0)

{

fStreamSeek(cruuent, SeekOriginCurrent);

}

#endregion

#region 分割文件上传

for (;cruuent <= length; cruuent = cruuent + byteCount)

{

if (cruuent + byteCount > length)

{

data = new byte[ConvertToInt64((length - cruuent))];

bReaderRead(data, 0, ConvertToInt32((length - cruuent)));

}

else

{

data = new byte[byteCount];

bReaderRead(data, 0, byteCount);

}

try

{

hostURL = tmpURL + "&action=upload" + "&filename=" + fileName + "&userid=" + userID + "&npos=" + cruuentToString();

//hostURL = tmpURL + DateTimeNowToString("yyyyMMddHHmmssfff") + "txt";

byte[] byRemoteInfo = WebClientObjUploadData(hostURL, "POST", data);

string sRemoteInfo = SystemTextEncodingDefaultGetString(byRemoteInfo);

// 获取返回信息

if (sRemoteInfoTrim() != "")

{

sMsg = sRemoteInfo;

break;

}

}

catch (Exception ex)

{

sMsg = exToString();

break;

}

}

#endregion

}

catch (Exception ex)

{

sMsg = sMsg + exToString();

}

try

{

bReaderClose();

fStreamClose();

}

catch (Exception exMsg)

{

sMsg = exMsgToString();

}

GCCollect();

return sMsg;

}

#endregion

不知道你说的本地路是服务器上的还是客户上的不过都可以获得 有点乱,自己整理了。呵呵。

<%//上传文件 需要 common-fileupload 组件/String up = requestgetParameter(up);

if(up!=null&&upequals(true)){try{String temp = c:\\; //临时目录

String strUp = requestgetParameter(path); //上传目标地址

if(strUp!=null&&!strUpequals()){

strUp = new String(strUpgetBytes(ISO-8859-1), GB2312);}DiskFileUpload fu = new DiskFileUpload();

fusetSizeMax(102410241024); // 设置允许用户上传文件大小,单位:字节

fusetSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:字节

fusetRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录

//开始读取上传信息

List fileItems = fuparseRequest(request);

Iterator iter = fileItemsiterator(); // 依次处理每个上传的文件

while(iterhasNext()) {

FileItem item = (FileItem) iternext();// 忽略其他不是文件域的所有表单信息

if(!itemisFormField()){

String name = itemgetName(); //获取上传文件名,包括路径

name = namesubstring(namelastIndexOf(\\)+1);//从全路径中提取文件名

long size = itemgetSize();

if((name==null||nameequals()) && size==0)continue;Systemoutprintln(userIp+:上传文件:+name+到+strUp);//输出上传文件信息

File fNew= new File(strUp, name);

itemwrite(fNew);

message = message + <font color=blue文件&nbsp;<b+itemgetName()+</b&nbsp;上传成功!</font;}}}catch(Exception ex){

message = message + <font color=red文件上传失败!</font;}}/%

以上就是关于java 怎么获取web根目录全部的内容,包括:java 怎么获取web根目录、在jsp当中定义String path = request.getContextPath(); 点击request查询信息时找不到路径,、如何获取文件的绝对路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9802297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存