• 締切済み

サーブレット フィルタ

簡単なフィルタを設定しようとしています。 web.xmlに<filter>タグを記載し、URLに http://localhost:8080/Servlet/サーブレット名  を指定すると404エラーになってしまいます。 <filter>タグを取り除けば、正常にサーブレットが表示されます。 明らかにweb.xmlの<filter>タグが問題なのですが、 問題をどう切り分けたらいいかもわからず、困っております。 スペルミス等も何度も確認したのですが・・・ どなたかアドバイスお願いします。

みんなの回答

回答No.6

訂正です <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>

回答No.5

<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にコンソール出力のログをいれて処理を追跡する。

回答No.4

フィルタを設定しない場合は、どんな画面が表示されているのですか? <filter>と<filter-mapping>タグを書かない場合のとこです。

first-try
質問者

補足

名前を入力するテキストボックスと送信ボタン、これだけが表示されています。

noname#49428
noname#49428
回答No.3

そもそも、webアプリケーションは正常に起動してますか? コンソールマネージャで確認してみてください。 あとは、ログ出力も確認されましたか?

first-try
質問者

補足

webアプリケーションは正常に起動していると思われます。 ログは\tomcat\logs\にあるログでしょうか? 特になにも吐き出されていないのですが・・・

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

Java APIが2.3以降ですか? ServletはFilterをインプリメントしていますか? ServletはdoFilterメソッドをインプリメントしていますか? web.xmlにfilter/filter-mappingタグを書くなら、servlet/servlet-mappingタグは消した方がよさげ (大丈夫なはずなんだけど、念のために)

first-try
質問者

補足

>Java APIが2.3以降ですか? APIのバージョンはどうやって調べるのでしょうか? Googleってみたのですが、わかりませんでした。 教えていただけますでしょうか。 >ServletはFilterをインプリメントしていますか? >ServletはdoFilterメソッドをインプリメントしていますか? インプリメントしていますが、404エラーとなってしまっているので、 サーブレットまで到達していないと思われます。 >web.xmlにfilter/filter-mappingタグを書くなら、servlet/servlet-mappingタグは消した方がよさげ servlet/servlet-mappingタグを消してみましたが、結果は同じ404エラーでした。 以上です。 宜しくお願いします。

回答No.1

> http://localhost:8080/Servlet/サーブレット名 「Servlet」と「サーブレット名」の意味は何ですか。 servletタグとfilterタグの内容を教えて下さい。

first-try
質問者

補足

>> ​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> ------------------------------------------------------------ どうぞ、宜しくお願いします。

関連するQ&A