代码之家  ›  专栏  ›  技术社区  ›  jobinbasani

从servlet访问WebContent文件夹中的文件

  •  7
  • jobinbasani  · 技术社区  · 15 年前

    我正在尝试使用FOP生成PDF文档。pdf生成代码保存在servlet中,xsl保存在WebContent文件夹中的特定文件夹中。

    如何通过提供相对路径来访问此xsl文件?只有在我给出文件对象中的完整路径时,它才起作用。

    我需要动态生成xml内容。如何将动态生成的xml作为源而不是文件对象?

    请提供您的建议。

    3 回复  |  直到 15 年前
        1
  •  19
  •   avck    8 年前

    要获取路径,您只需执行以下操作:

    String path = s.getServletContext().getRealPath("/WEB-INF/somedir/hdfeeh");         
    

    s 是实现的类 HTTPServlet this.getServletContext() 如果它是您的servlet类。

    然后将其作为参数传递。

    就使用动态生成的XML而言,您正在使用的库应该支持使用输入流,编写XML,将其转换为字节数组,然后将其包装到 ByteArrayInputStream

        2
  •  6
  •   Andre Pastore    15 年前

    对于直接和独立的容器实现,您可以使用servlet中的以下方法getResource()访问资源:

    / 启动servlet /

    public InputStream getResource(String resourcePath) {
      ServletContext servletContext = getServletContext();
      InputStream openStream = servletContext.getResourceAsStream( resourcePath );
      return openStream;
    }
    
    public void testConsume() {
      String path = "WEB-INF/teste.log";
      InputStream openStream = getResource( path );
    
      int c = -1;
      byte[] bb = new byte[1024];
      while ( -1 != ( c = openStream.read( bb ) ) ) {
        /* consume stream */
      }
      openStream.close();
    }
    

    / 端servlet /

        3
  •  1
  •   Rajan    9 年前

    BufferedReader reader = new BufferedReader(new InputStreamReader(request.getSession().getServletContext().getResourceAsStream("/json/sampleJson.json")));
    

    现在,reader对象中的所有文件内容都可用。