本帖最后由 java2000_net 于 2008-08-05 13:46:45 编辑

解决方案 »

  1.   

    面包会有的,servlet实例也会有的。
      

  2.   

    比如说,servlet 调用静态对象来取得一份文本文件中的内容,但没有把自己传递过去。
    而这个文件在网站根目录下,使用文件对象来读取,想利用网站根目录 + 相对路径来读取,该怎么做?
      

  3.   

    斗胆问下你 你这个调用静态对象的servlet是什么?放心,回答了这个问题还有问题等着你。
      

  4.   

    你是想得到网站根目录吧?比如:  http://localhost:8080/servlet/path/test  request.getPathInfo();   //    返回/path/test   
      request.getRequestURL(); //    返回http://localhost:8080/servlet/path/test   
      request.getRequestURI(); //    返回/servlet/path/test   
      request.getServletPath();//    返回/servlet 
      

  5.   

    呃。
    我的意思是我要写一个类给 servlet 用,但又不需要传递 servlet 对象,这种场合下,如何取得 servlet 上下文。
    象 httpServlet, request, respone, session 等等对象,我无法直接取到。这样说,能理解么?
      

  6.   


    在这个servlet里先把网站目录获得,然后作为参数传递给静态对象
      

  7.   

    不知道 ResourceBundle.getBundle 是如何实现的。
      

  8.   

    把servlet传入访问文件的类中,不觉得耦合度有点高么?
    建议楼主重新审视一下自己程序的结构。
      

  9.   

    回楼上
    是啊,就是为了解耦,不想传,结果,就不知道怎么取WEB目录位置了。
      

  10.   

    用 ThreadLocal类,可以实现
      

  11.   

    写一个static的String,先在servlet初始化,全局变量啊,就可以了吧.是不是这个意思?你看我的昵称就知道我这个人理解能力差,呵呵
      

  12.   


    问题是人家怎么样才能在一个一般的类中去取啊?用getInitParameter("")吗?好像一般的类不行哦.
      

  13.   

    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
                    如:http                ://  127.0.0.1                :  8080                   /项目名/               jsp默认的
      

  14.   

    在你的这个类中无法直接得到 request,response 等对象,当然了可以利用其他的技术来得到他们.
    如果你仅想得到一些资源的路径,可以用 Class.getResource(path)  方法
      

  15.   

    你有没有过滤器啊,在过滤器中搞嘛,把config.getServletContext().getRealPath("\\")保存到一个static变量里,别的地方用到就用这个变量搞了
      

  16.   

    取不到一般在 Servlet 中获得根路径,当作参数传给业务逻辑方法,而不是把 Servlet 侵入到业务逻辑中去。
      

  17.   

    楼主的所说的这个是做不到的。被调用的这个bean类并没有生存在servlet容器中,自然无法获取容器相关信息。简单的就传个servlet对象进去就是了
      

  18.   

    呃,看来是不行了。
    记得在.net里,通过静态方法能取到吧,以为javaservlet也一样,失望了。
    结帖了,我就随便给分了。
      

  19.   

    可以往ThreadLocal里放东西,线程安全的,不过好象归容器管,JDK1.5里面的特性
      

  20.   

    做不到,那样的话怎么做啊,直接写死算了,比如:http://localhoist:8080/test/