フィルタの初期パラメータを取得したいが404エラーが解決できない web.xml マッピング

実現したいこと

「基礎からのサーブレット/jsp 第5版」という参考書を見ながらフィルタの初期化パラメータを取得するサンプルを書いていますが、上手く行きません。サーブレットを実行すると、404エラーになります。
ブラウザのURLがhttp://localhost:8080/example/servlet/param.ParamFilterとなっており、おかしいというのは、分かりますが原因が分かりません。助けてください。

イメージ説明
エラー

発生している問題・エラーメッセージ

HTTPステータス 404 – 見つかりません タイプ ステータスレポート メッセージ 要求されたリソース [/example/servlet/param.ParamFilter] は利用できません。 説明 オリジンサーバーは、ターゲットリソースの現在の表現を見つけられなかったか、またはそれが存在することを開示するつもりはありません。

該当のソースコード

web.xml

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 5 http://xmlns.jcp.org/xml/ns/javaee/web-app_6_0.xsd" 6 version="6.0"> 7 8 9 <display-name>Welcome to Tomcat</display-name> 10 <description> 11 Welcome to Tomcat 12 </description> 13 14 15 <servlet> 16 <servlet-name>Param.ParamServlet</servlet-name> 17 <servlet-class>param.ParamServlet</servlet-class> 18 <init-param> 19 <param-name>message</param-name> 20 <param-value>servlet-init-param</param-value> 21 </init-param> 22 </servlet> 23 24 <servlet-mapping> 25 <servlet-name>Param.ParamServlet</servlet-name> 26 <url-pattern>/param/ParamServlet</url-pattern> 27 </servlet-mapping> 28 29 <filter> 30 <filter-name>param-filter</filter-name> 31 <filter-class>param.ParamFilter</filter-class> 32 33 <init-param> 34 <param-name>message</param-name> 35 <param-value>filter-init-param</param-value> 36 </init-param> 37 </filter> 38 39 <filter-mapping> 40 <filter-name>param-filter</filter-name> 41 <url-pattern>/param/param-servlet</url-pattern> 42 </filter-mapping> 43</web-app> 44

ParamFilter.java(フィルタのサーブレット)

1package param; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.Filter; 7import javax.servlet.FilterChain; 8import javax.servlet.FilterConfig; 9import javax.servlet.ServletException; 10import javax.servlet.ServletRequest; 11import javax.servlet.ServletResponse; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15 16/** 17 * Servlet implementation class ParamFilter 18 */ 19 20public class ParamFilter extends HttpServlet implements Filter{ 21 private static final long serialVersionUID = 1L; 22 private String message; 23 24 /** 25 * @see HttpServlet#HttpServlet() 26 */ 27 28 29 public void init(FilterConfig config) throws ServletException{ 30 message=config.getInitParameter("message"); 31 32 } 33 34 /** 35 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 36 */ 37 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 38 // TODO Auto-generated method stub 39 response.getWriter().append("Served at: ").append(request.getContextPath()); 40 } 41 42 /** 43 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 44 */ 45 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 46 // TODO Auto-generated method stub 47 doGet(request, response); 48 } 49 50 @Override 51 public void doFilter(ServletRequest request, ServletResponse responsew, FilterChain chain) 52 throws IOException, ServletException { 53 // TODO 自動生成されたメソッド・スタブ 54 PrintWriter out=responsew.getWriter(); 55 out.println(message); 56 chain.doFilter(request, responsew); 57 58 } 59 60 public void destroy() { 61 62 } 63 64} 65

試したこと

https://teratail.com/questions/3x2ew54dy7hqqvこちらの質問の時(サーブレットの初期パラメータ)と同じようにやってますが、サーブレットの初期パラメータは取得できるのにフィルタの方を実行するとエラーになります。

補足情報(FW/ツールのバージョンなど)

tomcat9 Java17

コメントを投稿

0 コメント