要如何取得webroot目录的路径呢 本帖最后由 Jwens 于 2010-07-28 16:43:06 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private static String jspPath=new File("WebRoot").getAbsolutePath()+"/source.jsp";private static String savePath=new File("WebRoot").getAbsolutePath()+"/index.html";以上是我获取WebRoot目录的代码,在main方法里面测试获取的路径是正确的,但是把项目布置到tomcat时路径就变成这个了:D:\Tomcat 6.0\bin\WebRoot\source.jsp 你咋没听到我的意思呢,我的页面在项目里是放在webroot目录下,因为我要对页面进行读写操作,但是我把工程布署到tomcat的时候,我获得的页面路径就变成了tomcat/bin目录,从而就没得到那个页面的正确路径,我知道在eclipse中webroot布署到tomcat后页面目录就直接位于工程目录下面,就是现在我要用什么办法让工程布署到tomcat后所获得的页面路么也可以对页面进行读写操作,你认真看一下我的问题好不好? private static String jspPath=new File("WebRoot").getAbsolutePath()+"/source.jsp";private static String savePath=new File("WebRoot").getAbsolutePath()+"/index.html";试试 jsp中不是有个<%=basePath%>,它就是项目的路径 private static String jspPath=new File("WebRoot").getAbsolutePath()+"/source.jsp"; 建议不要这样写在servlet 中写这样一句话 this.getServletContext().getRealPath("/source.jsp"); this.getServletContext().getRealPath("/"); this.getServletContext().getRealPath("/"); 获得到的是tomcat下的项目所在的路径的webroot 但是我是在java class中获得,并没有用servlet呀 this.getServletContext().getRealPath("/"); 这个在java class中照常可以用的这是最简单的获取文件所在的路径的最好方法 this.getClass().getResource("/")//得到项目的路径得到的路径为: file:/E:/WorkSpace/demo/WebRoot/WEB-INF/classes/ 再截取下就好了 前面说错了哈,这个路径是main函数得到的路径,如果项目部署到tomcat的话,得到的就是tomcat下项目的路径file:/E:/MyEclipse/apache-tomcat-6.0.20/webapps/demo/WEB-INF/classes/如果你的这个操作在之前经过action的话也可以用this.getServletContext().getRealPath("/")得到路径后再传到Java class文件去就行。 你没用servlet ,那你这个类是在什么时候启动运行的,listener? ,你不会写在了main 中吧,这样的话相当于你写了两个程序 ,各自运行,那要协调他们,只能找个配置文件,你自己配置该访问什么路径了或者只能把 在servlet.init() 中调用 this.getServletContext() ,作为参数传动你调用的方法中,否则, <load-on-startup>1</load-on-startup> ,表示容器在应用启动时就加载这个servlet; 在web应用中,当你部署完项目以后你的webroot目录还在么?不在了吧.所以你不能像JavaSE应用中那样去获得文件路径,而应该用ServletContext,即servlet上下文,比如说在你的WEB-INFO的同级目录下,意即/webroot/web-info,/webroot/newFolder,newFolder和web-info同级别,这时你可以这么获得newFolder的路径,在你的一个Servlet的get(..)或者post(..)方法里,ServletContext ctx = this.getServletContext(); String path=ctx.getRealPath("newFolder");这样你就可以获得newFolder文件夹的真实路径了,只要容器启动.当然,你也能在一个普通的java类里,只要它有个属性,HttpServlet httpServlet,然后你同样可以以上述方法获得,只不过是httpServlet.getServletContxt(),切记JavaSE与web应用它不一样,因为web应用部署后的目录跟开发时的目录它不一样.所以你得借助Servlet上下文.懂?妞妞! 提问 我不在servlet中写这段代码 直接创建一个class类里面写出错 怎么解决this 这个this 应该怎么表示? 要得到它的上下文context然后就能得到它的真正地址,如果用jsp里面的basePath得到的时http:localhost的地址。我同意21楼的说法 大家进来看下这代码哪里错 一个网站共用多台服务器,怎样测试该网站比较好? 请大家帮我看看,这个网站的制作费用是多少,需要多久时间? 我要实习 ext json问题 FileUpload 遇到的小问题 apple程序已被JAVA安全阻止,如何去掉提示,我用的是jdk1.8 面向对象分析与设计疑问 HTTP method POST is not supported by this URL HttpServletRequest如何添加请求头 中文乱码求解 http://localhost:8080无法显示
private static String jspPath=new File("WebRoot").getAbsolutePath()+"/source.jsp";
private static String savePath=new File("WebRoot").getAbsolutePath()+"/index.html";
以上是我获取WebRoot目录的代码,在main方法里面测试获取的路径是正确的,但是把项目布置到tomcat时路径就变成这个了:D:\Tomcat 6.0\bin\WebRoot\source.jsp
private static String savePath=new File("WebRoot").getAbsolutePath()+"/index.html";
试试
在servlet 中写这样一句话
this.getServletContext().getRealPath("/source.jsp");
这是最简单的获取文件所在的路径的最好方法
this.getClass().getResource("/")//得到项目的路径
得到的路径为: file:/E:/WorkSpace/demo/WebRoot/WEB-INF/classes/
再截取下就好了
这个路径是main函数得到的路径,如果项目部署到tomcat的话,得到的就是tomcat下项目的路径
file:/E:/MyEclipse/apache-tomcat-6.0.20/webapps/demo/WEB-INF/classes/如果你的这个操作在之前经过action的话也可以用this.getServletContext().getRealPath("/")得到路径后再传到Java class文件去就行。
,你不会写在了main 中吧,这样的话相当于你写了两个程序 ,各自运行,那要协调他们,只能找个配置文件,你自己配置该访问什么路径了
或者
只能把 在servlet.init() 中调用 this.getServletContext() ,作为参数传动你调用的方法中,否则,
<load-on-startup>1</load-on-startup> ,表示容器在应用启动时就加载这个servlet;