Jettyを使用してWebサービスをテストしていますが、コンテンツタイプヘッダーの下に文字セットなしで応答するようにしようとしています。
誰もこれを行う方法を知っていますか?
応答をインターセプトしてCharacterEncodingをnullまたは ""に設定しようとしましたが、例外が発生します。
Jetty 6.1.6を使用しています。
回答:
回答№1は1今は自分で試しましたが、認めなければなりませんjettyは非常に古いものです(4.2。、しかし、私が必要とする方法ですべてを行います)。これをTomcat(4.1.29、古いもの)と比較しました。次のコードでコンテンツタイプを確認しました。
URL tomcatUrl = new URL("http://localhost:18080/ppi/jobperform/headertest")//tomcat;
URLConnection tconnect = tomcatUrl.openConnection();
System.out.println("tomcat: " + tconnect.getContentType());
URL jettyUrl = new URL("http://localhost:13818/ppi/jobperform/headertest")//jetty;
URLConnection jconnect = jettyUrl.openConnection();
System.out.println("jetty: " + jconnect.getContentType());
結果は次のとおりです。
サーブレットコード:
response.setContentType("");
response.getWriter().write("Return");
=>
tomcat:; charset = ISO-8859-1
桟橋:
サーブレットコード:
response.setContentType("text/plain");
response.getWriter().write("Return");
=>
tomcat:text / plain; charset = ISO-8859-1
桟橋:テキスト/プレーン
サーブレットコード:
response.setContentType("text/plain;charset=utf-8");
response.getWriter().write("Return");
=>
tomcat:text / plain; charset = utf-8
桟橋:text / plain; charset = utf-8
そのため、Tomcatは新しい桟橋から得た機能を実行し、古い桟橋は必要な機能を実行しているように見えます。
回答№2の場合は3
これはどのサーブレットの問題ではないと思います使用するコンテナですが、サーブレット内の応答で何をするか。パラメーターを指定してServletResponseのsetContentType(2.3)またはsetCharacterEncoding(2.4、2.5)を呼び出して文字エンコードを設定した場合 null
または ""
うまくいくはずです(自分で試してはいませんでした)。しかし、上記のメソッドを必ず呼び出してください。 前 getWriterを呼び出します。それ以外の場合はエンコードを設定します 効果がありません!
回答№3の場合は0
文字セットは非常に有用な情報です。 良い製品(Jetty)に間違ったことをさせるのではなく、サービスの消費者に正しいこと(文字セットを認識して尊重する)を教えるようにしたいと思います。