2017-10-27 9 views
0

いくつかのコードをデバッグしようとしています。私はHttpServletResponse ヘッダーを正しく設定しています。これを行うには、HttpServletRequestとHttpServletResponseからヘッダーを出力したいだけです。リクエスト側はうまく動作しますが、response.getHeaderNames()は定義されていないためレスポンスはありません。別のjavax.servlet-apiを使用するには?

private void printDebug(HttpServletRequest request, HttpServletResponse response) { 
     System.out.println("----- Request ---------"); 
     Collections.list(request.getHeaderNames()).forEach(n -> System.out.println(n + ": " + request.getHeader(n.toString()))); 

     System.out.println("----- Response ---------"); 
     response.getHeaderNames().forEach(n -> System.out.println(n + ": " + response.getHeader(n))); 
} 

使用:
EclipseのOxygen.1aリリース(4.7.1a)
TomcatのV.7.0
jdk1.8.0_112

プロジェクト・ファセット:
動的Webモジュール3.1

私のpomファイルには、

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet.jsp</groupId> 
    <artifactId>jsp-api</artifactId> 
    <version>2.2</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 

しかし、私が設定した設定があると確信しているのは、デフォルトでEclipseに2.5 javax.servlet-apiを指していますが、どこを見て変更するか分かりません。

アップデート:私は、「動的Webモジュール」をオフにして、Mavenの更新を行う場合は、Mavenは仕事に戻ってどのように私は(これgetHeaderNamesを得ることができます2.5 enter image description here

)への動的Webモジュールを設定しますか?

+0

動作しないとはどういう意味ですか?あなたのコードはコンパイルされますか?どこでエラーが出ますか? – Oleg

+0

'response.getHeaderNames()が未定義であるためにコンパイルされない' – kasdega

+1

'HttpServletResponse'の宣言を開き、それがどこから来るのかをチェックする。 – Oleg

答えて

0

問題は、明示的に私のpomに3.1を含んでいたとしても、私がjavax.servlet-api v2.5をコンパイルしたときでした。

@Olegが示唆するように、私はHttpServletResponseの宣言を開き、HttpServletResponseがどこから来ているかを見つけるためにパッケージエクスプローラをチェックしました。それはMavenの依存関係の中でservlet-api-2.5.jarから来ていました。私は何が起こっていると思っていたが、私が望んでいたものではない。

次に、すべての依存関係階層を調べて、pomのどのエントリが2.5バージョンを含んでいたかを調べました。私が気づいたところでは、jstlアーティファクトには私が望んでいなかった古いバージョンが含まれていました。

は、だから私は、これを変更:これに

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
</dependency> 

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
    <exclusions> 
    <exclusion> 
     <groupId>java.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 

最後に、私は念のためにMavenの更新とクリーンなコンパイルを行なったし、それが働きました。

これは他の人に役立つことを願っています!

ありがとうございます@Oleg。

関連する問題