- 締切済み
サーブレット フィルタ
簡単なフィルタを設定しようとしています。 web.xmlに<filter>タグを記載し、URLに http://localhost:8080/Servlet/サーブレット名 を指定すると404エラーになってしまいます。 <filter>タグを取り除けば、正常にサーブレットが表示されます。 明らかにweb.xmlの<filter>タグが問題なのですが、 問題をどう切り分けたらいいかもわからず、困っております。 スペルミス等も何度も確認したのですが・・・ どなたかアドバイスお願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- inflate60
- ベストアンサー率37% (3/8)
訂正です <servlet-class>practice.filter.TestServlet</servlet-class> を <servlet-class>practice.filter.XXXXXXXXX</servlet-class> ↓ <filter-class>practice.filter.TestFilter</filter-class> を <filter-class>practice.filter.XXXXXXXXX</filter-class>
- inflate60
- ベストアンサー率37% (3/8)
<url-pattern>/test</url-pattern>を<url-pattern>/*</url-pattern> としてみてください。 解決できない場合は、 ■フィルタークラスが存在しない <servlet-class>practice.filter.TestServlet</servlet-class> を <servlet-class>practice.filter.XXXXXXXXX</servlet-class> のような絶対に存在しないクラスを指定し、現象が変わらなければ、 フィルタークラスが存在しないか、パスが通っていない。 あるいは、フィルタークラスがjavax.servlet.Filterをインプリメントしていない。 ■デバッグする デバッガは使えないのですか? 使えないのなら、doFilterにコンソール出力のログをいれて処理を追跡する。
- inflate60
- ベストアンサー率37% (3/8)
フィルタを設定しない場合は、どんな画面が表示されているのですか? <filter>と<filter-mapping>タグを書かない場合のとこです。
そもそも、webアプリケーションは正常に起動してますか? コンソールマネージャで確認してみてください。 あとは、ログ出力も確認されましたか?
補足
webアプリケーションは正常に起動していると思われます。 ログは\tomcat\logs\にあるログでしょうか? 特になにも吐き出されていないのですが・・・
- PED02744
- ベストアンサー率40% (157/390)
Java APIが2.3以降ですか? ServletはFilterをインプリメントしていますか? ServletはdoFilterメソッドをインプリメントしていますか? web.xmlにfilter/filter-mappingタグを書くなら、servlet/servlet-mappingタグは消した方がよさげ (大丈夫なはずなんだけど、念のために)
補足
>Java APIが2.3以降ですか? APIのバージョンはどうやって調べるのでしょうか? Googleってみたのですが、わかりませんでした。 教えていただけますでしょうか。 >ServletはFilterをインプリメントしていますか? >ServletはdoFilterメソッドをインプリメントしていますか? インプリメントしていますが、404エラーとなってしまっているので、 サーブレットまで到達していないと思われます。 >web.xmlにfilter/filter-mappingタグを書くなら、servlet/servlet-mappingタグは消した方がよさげ servlet/servlet-mappingタグを消してみましたが、結果は同じ404エラーでした。 以上です。 宜しくお願いします。
- inflate60
- ベストアンサー率37% (3/8)
> http://localhost:8080/Servlet/サーブレット名 「Servlet」と「サーブレット名」の意味は何ですか。 servletタグとfilterタグの内容を教えて下さい。
補足
>> http://localhost:8080/Servlet/サーブレット名 >「Servlet」と「サーブレット名」の意味は何ですか。 わかりづらくてすみません。 localhost:8080/以降は、web.xmlに登録したサーブレット名のことです。(<servlet-mapping>の<url-pattern>に登録した名前です) 正確には、 http://localshot:8080/Servlet/test(以下参照) Servletフォルダの/testサーブレットです。 >servletタグとfilterタグの内容を教えて下さい。 -------------------------------------------------------- <filter> <filter-name>testfilter</filter-name> <filter-class>practice.filter.TestFilter</filter-class> <init-param> <param-name>encode</param-name> <param-value>Shift_JIS</param-value> </init-param> </filter> <filter-mapping> <filter-name>testfilter</filter-name> <url-pattern>/test</url-pattern> </filter-mapping> <servlet> <servlet-name>testservlet</servlet-name> <servlet-class>practice.filter.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>testservlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> ------------------------------------------------------------ どうぞ、宜しくお願いします。
補足
名前を入力するテキストボックスと送信ボタン、これだけが表示されています。