ログインしていないページなどに飛んできた時に便利ですよね。
サーブレットフィルターを使って、別画面へリダイレクトさせるサンプル
サーブレットフィルターを使って、別画面(JSP)へリダイレクトします。
TestFilter.java
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.io.IOException; import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletResponse; public class TestFilter implements Filter {     @Override     public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {         System.out.println("filter:前処理など");         if(isAuthenticated()) {             //フィルタ・サーブレット呼び出し             chain.doFilter(req, resp);         }else {             //ログインなどにリダイレクト             ((HttpServletResponse)resp).sendRedirect("./test.jsp");         }         System.out.println("filter:後処理など");     }     private boolean isAuthenticated() {         return false;     } } | 
web.xml
| 1 2 3 4 5 6 7 8 9 10 11 12 | <?xml version="1.0" encoding="UTF-8"?> <web-app>   <filter>     <filter-name>TestFilter</filter-name>     <filter-class>TestFilter</filter-class>   </filter>   <filter-mapping>     <filter-name>TestFilter</filter-name>     <url-pattern>/test</url-pattern>   </filter-mapping> </web-app> | 
実行結果
サーブレットフィルターからリダイレクトされた別画面(JSP)が表示されます。
 ここでは、リダイレクト先はtest.jspです。
サンプルの解説
サーブレットフィルターは、その名の通り、フィルターです。
 サーブレットが動作する「前」と「後」で呼び出されます。
 ですので、サーブレットの前処理、後処理なんかも書くことができます。
こんな感じで、認証されていないときなどに、別の画面に飛ばしたりします。
 FilterChain#doFilter(ServletRequest,ServletResponse)は、このフィルターは通過してOKなときに使います。
 これで、他のフィルターや目的のサーブレットが呼び出されます。
この例では、認証(?)が常にNGなので、サーブレットは呼び出されず、常にtest.jspに飛んでいきます。












