
在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用SystemgetProperty("userdir")获取你工程的绝对路径。
另:在Jsp,Servlet,Java中详细获得路径的方法。
1jsp中取得路径:
以工程名为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
2在类中取得路径:
(1)类的绝对路径:ClassclassgetClass()getResource("/")getPath()
结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)得到工程的路径:SystemgetProperty("userdir")
结果:D:\TEST
3在Servlet中取得路径:
(1)得到工程目录:requestgetSession()getServletContext()getRealPath("") 参数可具体到包名。
结果:E:\Tomcat\webapps\TEST
(2)得到IE地址栏地址:requestgetRequestURL()
结果:>
(3)得到相对地址:requestgetRequestURI()
结果:/TEST/test
images的url写成src="${pageContextrequestcontextPath}/images/logojpg"
一般会把${pageContextrequestcontextPath}这部分提取出来,在jsp写成:
<% String path = requestgetContextPath();%>
如图:
则images路径可以写成src="<%=path%>/images/logojpg"
访问loginjsp页面的话,写成>
就是部署到tomcat的ROOT目录下,首先项目设置web
setting为ROOT,然后eclipse创建server
的时候自定义路径,不要默认的wptwebapp,应该就可以了,这样一个tomcat就只能跑一个项目了,不建议
servlet里面通过String basePath=sessiongetServletContext()getRealPath("/");获取webRoot目录真实路径。
比如d:\tomcat 6\webapps\项目名
webRoot下面的resources目录通过File path = new File(basePath, "resources");获取
其它同理
如果是jsp的话,获取resources目录直接通过“<%=requestgetContextPath()%>/resources”获取
如果通过servelet来读取上传文件路径,则代码如下,我已经在项目中用过了:
DiskFileItemFactory difif = new DiskFileItemFactory();dififsetSizeThreshold(321024);dififsetRepository(new File(tmpDir)); //
用以上工厂实例化上传组件ServletFileUpload sfu = new ServletFileUpload(difif);
sfusetSizeMax(MAX_SIZE);
List fileList = sfuparseRequest(request);
if ( fileList == null || fileListsize() == 0) { throw new Exception("
导入文件不存在,请检
查");} else { File upLoadFile = null; Iterator fileIterator = fileListiterator();
//得到所有上传的文
件 while (fileIteratorhasNext()) { FileItem fileItem = (FileItem)fileIteratornext(); //
取得上传文件
名 if (fileItemgetContentType() == null) { } else {
//
此为路
径 String path = fileItemgetName(); String t_ext = pathsubstring(pathlastIndexOf("") + 1); //
根据系统时间生成上传后保存的文件
名 String prefix = StringvalueOf(SystemcurrentTimeMillis()); //
保存最终的文件完整路径,保存在工程根目录下的Upload目录
下 String u_name = tmpDir + Fileseparator + prefix + "" + t_ext; //
开始保存文
件 upLoadFile = new File(u_name); fileItemwrite(upLoadFile); } } }
平时写程序的时候,很多时候提示文件找不到,而抛出了异常,现在整理如下
一 相对路径的获得
说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)
String relativelyPath=SystemgetProperty("userdir");
上述相对路径中,java项目中的文件是相对于项目的根目录
web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomcat安装目录\bin)
二 类加载目录的获得(即当运行时某一类时获得其装载目录)
11)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录)
InputStream is=TestActionclassgetClassLoader()getResourceAsStream("testtxt");
(testtxt文件的路径为 项目名\src\testtxt;类TestAction所在包的第一级目录位于src目录下)
上式中将TestAction,testtxt替换成对应成相应的类名和文件名字即可
12)通用方法二 (此方法和11中的方法类似,不同的是此方法必须以'/'开头,
InputStream is=Test1classgetResourceAsStream("/testtxt");
(testtxt文件的路径为 项目名\src\testtxt,类Test1所在包的第一级目录位于src目录下)
三 web项目根目录的获得(发布之后)
1 从servlet出发
可建立一个servlet在其的init方法中写入如下语句
ServletContext s1=thisgetServletContext();
String temp=s1getRealPath("/"); (关键)
结果形如:D:\工具\Tomcat-60\webapps\002_ext\ (002_ext为项目名字)
如果是调用了s1getRealPath("")则输出D:\工具\Tomcat-60\webapps\002_ext(少了一个"\")
2 从>
struts1中通常使用使用
thisgetServlet()getServletContext()getResource("/")getPath();
struts2中
ServletActionContextgetServletContext()getResource("/")getPath();
上面是获取绝对路径字符串的
去掉getPath()获取到的是URL格式的!
有问题在追问吧,good luck!~
以上就是关于如何得到一个jsp页面所在的项目的路径全部的内容,包括:如何得到一个jsp页面所在的项目的路径、Java web项目访问路径问题。求解啊!、用maven创建的web项目如何查看页面的访问路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)