本帖最后由 Jwens 于 2010-07-28 16:43:06 编辑

解决方案 »

  1.   


    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
      

  2.   

    你咋没听到我的意思呢,我的页面在项目里是放在webroot目录下,因为我要对页面进行读写操作,但是我把工程布署到tomcat的时候,我获得的页面路径就变成了tomcat/bin目录,从而就没得到那个页面的正确路径,我知道在eclipse中webroot布署到tomcat后页面目录就直接位于工程目录下面,就是现在我要用什么办法让工程布署到tomcat后所获得的页面路么也可以对页面进行读写操作,你认真看一下我的问题好不好?
      

  3.   

    private static String jspPath=new File("WebRoot").getAbsolutePath()+"/source.jsp";
    private static String savePath=new File("WebRoot").getAbsolutePath()+"/index.html";
    试试
      

  4.   

    jsp中不是有个<%=basePath%>,它就是项目的路径
      

  5.   

    private static String jspPath=new File("WebRoot").getAbsolutePath()+"/source.jsp";  建议不要这样写
    在servlet 中写这样一句话
    this.getServletContext().getRealPath("/source.jsp");
      

  6.   

    this.getServletContext().getRealPath("/");
      

  7.   

    this.getServletContext().getRealPath("/"); 获得到的是tomcat下的项目所在的路径的webroot
      

  8.   

    但是我是在java class中获得,并没有用servlet呀
      

  9.   

    this.getServletContext().getRealPath("/");  这个在java class中照常可以用的
    这是最简单的获取文件所在的路径的最好方法
      

  10.   


    this.getClass().getResource("/")//得到项目的路径
    得到的路径为:     file:/E:/WorkSpace/demo/WebRoot/WEB-INF/classes/   
    再截取下就好了
      

  11.   

    前面说错了哈,
    这个路径是main函数得到的路径,如果项目部署到tomcat的话,得到的就是tomcat下项目的路径
    file:/E:/MyEclipse/apache-tomcat-6.0.20/webapps/demo/WEB-INF/classes/如果你的这个操作在之前经过action的话也可以用this.getServletContext().getRealPath("/")得到路径后再传到Java class文件去就行。
      

  12.   

    你没用servlet ,那你这个类是在什么时候启动运行的,listener? 
    ,你不会写在了main 中吧,这样的话相当于你写了两个程序 ,各自运行,那要协调他们,只能找个配置文件,你自己配置该访问什么路径了
    或者
    只能把 在servlet.init() 中调用 this.getServletContext() ,作为参数传动你调用的方法中,否则, 
        <load-on-startup>1</load-on-startup> ,表示容器在应用启动时就加载这个servlet;
      

  13.   

    在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上下文.懂?妞妞!
      

  14.   

    提问 我不在servlet中写这段代码 直接创建一个class类里面写出错 怎么解决this 这个this 应该怎么表示?
      

  15.   

    要得到它的上下文context然后就能得到它的真正地址,如果用jsp里面的basePath得到的时http:localhost的地址。我同意21楼的说法