2016-05-09 9 views
1

を更新していません応用。ユーザーは「firstpage.html」にクエリを入力し、結果を返します。サーブレットは、これは私のサーブレットのディレクトリ構造であるhtmlページ

webアプリケーションを初めて起動すると、web.xmlファイルに設定されているので、「firstpage.html」が開始されます。最初のWebアプリケーションを起動すると、「firstpage.html」が表示され、ユーザーがクエリを入力すると「resultfile.html」が作成されます。しかし、Webアプリは代わりに空白のページを表示します。 "resultfile.html"を確認したところ、ファイルが正しく生成されました。だから私のコードに問題はありません。私は生成された "resultfile.html"ページを転送できるようにしたい。私はここで何か間違っていますか?私はサーブレットが初めてです。みんなありがとう。

私はTomcat V7.0とeclipseを使用しています。

更新:ユーザーが「firstpage.html」に戻って新しいクエリを入力すると、「resultfile.html」に古いクエリの結果が表示されます。 "resultfile.html"は更新された情報を表示しません。

更新2:私の "resultfile.html"は、SaxonImplementationクラスによって生成されます。次のようにそのクラスのコードは次のとおりです。

package com.example; 

import java.io.File; 

import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.stream.StreamResult; 
import javax.xml.transform.stream.StreamSource; 

public class SaxonImplementation { 

    public void simpleTransform(String sourcePath, String xsltPath, 
     String resultDir) { 
    System.setProperty("javax.xml.transform.TransformerFactory", 
     "net.sf.saxon.TransformerFactoryImpl"); 
    TransformerFactory tFactory = TransformerFactory.newInstance(); 
    try { 
     Transformer transformer = tFactory 
      .newTransformer(new StreamSource(new File(xsltPath))); 
     transformer.transform(new StreamSource(new File(sourcePath)), 
      new StreamResult(new File(resultDir))); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 

} 

私はHTMLファイルへのXMLの変換を行うためにmainClass.javaの私のdoGetメソッドからこのクラスを呼んでいます。

+0

@BalusCこんにちはBalusCからの結果は次のとおりです。「するStreamResultカスタムライター」のためのGoogle検索役立つかもしれないこのページを明らかに:更新

(完全resultfile.htmlスキップ) 、私はFileNotFoundExceptionを取得していませんでした。私は重複した質問ではないと思います。 –

+0

質問は異なる場合がありますが、答えは現在の質問に当てはまります。 – BalusC

+0

@BalusCこれは重複した質問ではないことを意味しています。私はすでに私が探していた質問に対して別の答えを得ました。 –

答えて

1

なぜ結果ファイルが空白であるのか分かりません。サーバーキャッシュの問題が発生する可能性がありますが、わかりません。そのためには、ファイルを手動で編集したり、手動で表示したりすることをお勧めします。ファイルが正しいかもしれないにもかかわらず、システムがブランクファイルを書き込んでいるのか、ブランクページを印刷しているのかを判断する必要があります。 更新いただきありがとうございます。ファイルをクライアントに送信する前にファイルが完全に書き込まれていないか、頻繁に変更されることはないため、サーバーキャッシュに問題があります。あなたが要求にforwardを呼び出す前(あなたがresultfile.htmlに書き込むために使用されていること)flushcloseがあなたのFileWriterまたはFileOutputStreamに完了したことを確認してください。既に起こっていることが確かな場合は、キャッシュの問題でなければなりません。ですから、私はresultfileを手で読んで、forward ingの代わりにresponseに書き込むことをお勧めします。

あなたのソフトウェアの設計をより効率的かつマルチユーザーに安全に変更する必要があると言われています。共有resultsfile.htmlに書き込むことは、マルチユーザの安全性を達成しません。

私は結果を直接ユーザーに書きます。 responseにはgetWriterというファンクションがあり、Writerを返します。このファンクションを使用して、HTMLを直接クライアントに送信できます。あなたがnew StreamResult(writer)を使用することができますHow to convert stream results to string代わりnew StreamResult(new File(resultDir))writerresponse.getWriter()

+0

ご返信ありがとうございます。私のウェブアプリケーションは、私がサーブレットを初めて使っているので、非常に初期段階にあります。私はあなたが示唆したようにgetWriter関数を使用しようとします。ありがとうございました:) –

+0

この質問に回答したい場合は、チェックマークを使用してください。新しい質問があなたに起こると、いつでも新しい質問を投稿することができます。 –

+1

確かに、私はこの解決策を試しています。 –

関連する問題