8

FOP を使用して PDF ドキュメントを生成しようとしています。PDF 生成コードはサーブレットに保持され、xsl は WebContent フォルダー内の特定のフォルダーにあります。

相対パスを指定してこの xsl ファイルにアクセスするにはどうすればよいですか? File オブジェクトに完全なパスを指定した場合にのみ機能します。

xml コンテンツを動的に生成する必要があります。File オブジェクトではなく、この動的に生成された xml をソースとして指定するにはどうすればよいですか?

あなたの提案を提供してください。

4

3 に答える 3

19

パスを取得するには、次のようにします。

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

sを実装するクラスです。サーブレット クラスの場合にHTTPServletも使用できます。this.getServletContext()

次に、これをパラメーターとして渡します。

動的に生成された XML を使用する限り、使用しているライブラリは入力ストリームの使用をサポートし、XML を記述し、それをバイト配列に変換し、それを にラップしてByteArrayInputStream使用する必要があります。

于 2009-09-25T19:13:49.007 に答える
6

直接の独立したコンテナ実装の場合、サーブレット内で次のメソッドgetResource()を使用してリソースにアクセスできます。

/サーブレットを開始します/

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();
}

/サーブレットの終了/

于 2009-09-25T19:23:18.883 に答える
1

次の方法を使用して、Webコンテンツの下のファイルを読み取りました

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

これで、すべてのファイル コンテンツがリーダー オブジェクトで使用できるようになりました。

于 2015-05-20T11:41:25.133 に答える